예제 #1
0
    def test_probs(self):
        data = Table('iris')[30:130]
        fitters = [majority.MajorityFitter(), majority.MajorityFitter()]

        results = testing.TestOnTrainingData(k=10)(data, fitters)

        self.assertEqual(results.predicted.shape, (2, len(data)))
        np.testing.assert_equal(results.predicted, np.ones((2, 100)))
        probs = results.probabilities
        self.assertTrue((probs[:, :, 0] < probs[:, :, 2]).all())
        self.assertTrue((probs[:, :, 2] < probs[:, :, 1]).all())
예제 #2
0
    def test_miss_majority(self):
        x = np.zeros((50, 3))
        y = x[:, -1]
        x[49] = 1
        data = Table(x, y)
        res = testing.CrossValidation(data, [majority.MajorityFitter()])
        np.testing.assert_equal(res.predicted[0][:49], 0)

        x[49] = 0
        res = testing.CrossValidation(data, [majority.MajorityFitter()])
        np.testing.assert_equal(res.predicted[0][:49], 0)
예제 #3
0
    def test_missing(self):
        iris = data.Table('iris')
        learn = majority_.MajorityFitter()
        for e in iris[:len(iris) // 2:2]:
            e.set_class("?")
        clf = learn(iris)
        y = clf(iris)
        self.assertTrue((y == 2).all())

        iris = data.Table('iris')
        learn = majority_.MajorityFitter()
        for e in iris:
            e.set_class("?")
        clf = learn(iris)
        y = clf(iris)
        self.assertTrue((y == 0).all())
예제 #4
0
    def test_store_models(self):
        nrows, ncols = 1000, 10
        t = random_data(nrows, ncols)
        fitters = [naive_bayes.BayesLearner(), majority.MajorityFitter()]

        cv = testing.CrossValidation(k=5)
        res = cv(t, fitters)
        self.assertIsNone(res.models)

        cv = testing.CrossValidation(k=5, store_models=True)
        res = cv(t, fitters)
        self.assertEqual(len(res.models), 5)
        for models in res.models:
            self.assertEqual(len(models), 2)
            self.assertIsInstance(models[0], naive_bayes.BayesClassifier)
            self.assertIsInstance(models[1], majority.ConstantClassifier)

        cv = testing.CrossValidation(k=5)
        res = cv(t, fitters)
        self.assertIsNone(res.models)

        res = testing.CrossValidation(t, fitters, k=5, store_models=True)
        self.assertEqual(len(res.models), 5)
        for models in res.models:
            self.assertEqual(len(models), 2)
            self.assertIsInstance(models[0], naive_bayes.BayesClassifier)
            self.assertIsInstance(models[1], majority.ConstantClassifier)
예제 #5
0
    def test_store_models(self):
        nrows, ncols = 50, 10
        t = random_data(nrows, ncols)
        fitters = [naive_bayes.BayesLearner(), majority.MajorityFitter()]

        cv = testing.TestOnTrainingData()
        res = cv(t, fitters)
        self.assertIsNone(res.models)

        cv = testing.TestOnTrainingData(store_models=True)
        res = cv(t, fitters)
        self.assertEqual(len(res.models), 1)
        for models in res.models:
            self.assertEqual(len(models), 2)
            self.assertIsInstance(models[0], naive_bayes.BayesClassifier)
            self.assertIsInstance(models[1], majority.ConstantClassifier)

        cv = testing.TestOnTrainingData()
        res = cv(t, fitters)
        self.assertIsNone(res.models)

        res = testing.TestOnTrainingData(t, fitters, store_models=True)
        self.assertEqual(len(res.models), 1)
        for models in res.models:
            self.assertEqual(len(models), 2)
            self.assertIsInstance(models[0], naive_bayes.BayesClassifier)
            self.assertIsInstance(models[1], majority.ConstantClassifier)
예제 #6
0
    def test_miss_majority(self):
        x = np.zeros((50, 3))
        y = x[:, -1]
        x[49] = 1
        data = Table(x, y)
        res = testing.TestOnTrainingData(data, [majority.MajorityFitter()])
        np.testing.assert_equal(res.predicted[0][:49], 0)

        x[49] = 0
        res = testing.TestOnTrainingData(data, [majority.MajorityFitter()])
        np.testing.assert_equal(res.predicted[0][:49], 0)

        x[25:] = 1
        y = x[:, -1]
        data = Table(x, y)
        res = testing.TestOnTrainingData(data, [majority.MajorityFitter()])
        np.testing.assert_equal(res.predicted[0], res.predicted[0][0])
예제 #7
0
    def test_miss_majority(self):
        x = np.zeros((50, 3))
        y = x[:, -1]
        x[49] = 1
        data = Table(x, y)
        res = testing.LeaveOneOut(data, [majority.MajorityFitter()])
        np.testing.assert_equal(res.predicted[0][:49], 0)

        x[49] = 0
        res = testing.LeaveOneOut(data, [majority.MajorityFitter()])
        np.testing.assert_equal(res.predicted[0][:49], 0)

        x[25:] = 1
        y = x[:, -1]
        data = Table(x, y)
        res = testing.LeaveOneOut(data, [majority.MajorityFitter()])
        np.testing.assert_equal(res.predicted[0],
                                1 - data.Y[res.row_indices].flatten())
예제 #8
0
    def test_majority(self):
        nrows = 1000
        ncols = 10
        x = np.random.random_integers(1, 3, (nrows, ncols))
        y = np.random.random_integers(1, 3, (nrows, 1)) // 2
        y[0] = 4
        t = data.Table(x, y)
        learn = majority_.MajorityFitter()
        clf = learn(t)

        x2 = np.random.random_integers(1, 3, (nrows, ncols))
        y2 = clf(x2)
        self.assertTrue((y2 == 1).all())
예제 #9
0
    def test_weights(self):
        nrows = 100
        ncols = 10
        x = np.random.random_integers(1, 3, (nrows, ncols))
        y = np.random.random_integers(1, 5, (nrows, 1))
        heavy = 3
        w = (y == heavy) * 123 + 1
        t = data.Table(x, y, W=w)
        learn = majority_.MajorityFitter()
        clf = learn(t)

        x2 = np.random.random_integers(1, 3, (nrows, ncols))
        y2 = clf(x2)
        self.assertTrue((y2 == heavy).all())
예제 #10
0
 def test_continuous(self):
     autompg = data.Table('auto-mpg')
     learn = majority_.MajorityFitter()
     self.assertRaises(ValueError, learn, autompg)
예제 #11
0
 def test_empty(self):
     iris = data.Table('iris')
     learn = majority_.MajorityFitter()
     clf = learn(iris[:0])
     y = clf(iris[0], clf.Probs)
     self.assertTrue(np.allclose(y, y.sum() / y.size))