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