예제 #1
0
    def test_store_data(self):
        t = self.random_table
        learners = [NaiveBayesLearner()]

        res = LeaveOneOut(store_data=False)(t, learners)
        self.assertIsNone(res.data)

        res = LeaveOneOut(store_data=True)(t, learners)
        self.assertIs(res.data, t)
예제 #2
0
    def test_store_models(self):
        t = self.random_table
        learners = [NaiveBayesLearner(), MajorityLearner()]

        res = LeaveOneOut()(t, learners)
        self.assertIsNone(res.models)

        res = LeaveOneOut(store_models=True)(t, learners)
        self.check_models(res, learners, self.nrows)
예제 #3
0
    def test_store_data(self):
        nrows, ncols = 50, 10
        t = random_data(nrows, ncols)
        learners = [NaiveBayesLearner()]

        res = LeaveOneOut(t, learners)
        self.assertIsNone(res.data)

        res = LeaveOneOut(t, learners, store_data=True)
        self.assertIs(res.data, t)
예제 #4
0
    def test_store_models(self):
        nrows, ncols = 50, 10
        t = random_data(nrows, ncols)
        learners = [NaiveBayesLearner(), MajorityLearner()]

        res = LeaveOneOut(t, learners)
        self.assertIsNone(res.models)

        res = LeaveOneOut(t, learners, store_models=True)
        self.assertEqual(len(res.models), 50)
        for models in res.models:
            self.assertEqual(len(models), 2)
            self.assertIsInstance(models[0], NaiveBayesModel)
            self.assertIsInstance(models[1], ConstantModel)
    def test_miss_majority():
        x = np.zeros((50, 3))
        y = x[:, -1]
        x[49] = 1
        data = Table(x, y)
        res = LeaveOneOut()(data, [MajorityLearner()])
        np.testing.assert_equal(res.predicted[0][:49], 0)

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

        x[25:] = 1
        data = Table(x, y)
        res = LeaveOneOut()(data, [MajorityLearner()])
        np.testing.assert_equal(res.predicted[0],
                                1 - data.Y[res.row_indices].flatten())
예제 #6
0
 def test_call(self):
     nrows = self.nrows
     t = self.random_table
     res = LeaveOneOut()(t, [NaiveBayesLearner()])
     y = t.Y
     np.testing.assert_equal(res.actual, y[res.row_indices].reshape(nrows))
     np.testing.assert_equal(res.predicted[0],
                             y[res.row_indices].reshape(nrows))
     np.testing.assert_equal(np.argmax(res.probabilities[0], axis=1),
                             y[res.row_indices].reshape(nrows))
예제 #7
0
 def test_call(self):
     nrows, ncols = 100, 10
     t = random_data(nrows, ncols)
     res = LeaveOneOut(t, [NaiveBayesLearner()])
     y = t.Y
     np.testing.assert_equal(res.actual, y[res.row_indices].reshape(nrows))
     np.testing.assert_equal(res.predicted[0],
                             y[res.row_indices].reshape(nrows))
     np.testing.assert_equal(np.argmax(res.probabilities[0], axis=1),
                             y[res.row_indices].reshape(nrows))
예제 #8
0
    def test_probs(self):
        data = Table('iris')[30:130]
        learners = [MajorityLearner(), MajorityLearner()]

        results = LeaveOneOut()(data, learners)

        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())