def test_posterior(self): classifier = MaxEnt() classifier.labelsToWeights = {'cat': [2, -3], 'dog': [-2, 3]} self.assertAlmostEqual(classifier.posterior('cat', np.array([0, 1])), .00247, 4) self.assertAlmostEqual(classifier.posterior('cat', np.array([1, 0])), .98201, 4) self.assertAlmostEqual(classifier.posterior('dog', np.array([0, 1])), .99753, 4) self.assertAlmostEqual(classifier.posterior('dog', np.array([1, 0])), .01799, 4) self.assertAlmostEqual(classifier.posterior('cat', np.array([1, 1])), .11920, 4) self.assertAlmostEqual(classifier.posterior('dog', np.array([1, 1])), .88080, 4)
def test_gradient(self): classifier = MaxEnt() classifier.labelsToWeights = {'cat': [2, -3], 'dog': [-2, 3]} dataset = ([Animal(np.array([1, 0]), 'cat'), Animal(np.array([0, 1]), 'cat'), Animal(np.array([0, 1]), 'dog'), Animal(np.array([0, 1]), 'dog'), Animal(np.array([1, 1]), 'cat')]) gradient = classifier.gradient(dataset) self.assertAlmostEqual(gradient['cat'][0], .89879, 4) self.assertAlmostEqual(gradient['cat'][1], 1.87339, 4) self.assertAlmostEqual(gradient['dog'][0], -.89879, 4) self.assertAlmostEqual(gradient['dog'][1], -1.87339, 4)
def test_observed_counts(self): classifier = MaxEnt() classifier.labelsToWeights = {'cat': [2, -3], 'dog': [-2, 3]} dataset = ([Animal(np.array([1, 0]), 'cat'), Animal(np.array([0, 1]), 'cat'), Animal(np.array([0, 1]), 'dog'), Animal(np.array([0, 1]), 'dog'), Animal(np.array([1, 1]), 'cat')]) observedCounts = classifier.observedCounts(dataset) self.assertEqual(observedCounts['cat'][0], 2) self.assertEqual(observedCounts['cat'][1], 2) self.assertEqual(observedCounts['dog'][0], 0) self.assertEqual(observedCounts['dog'][1], 2)
def test_expected_counts(self): classifier = MaxEnt() classifier.labelsToWeights = {'cat': [2, -3], 'dog': [-2, 3]} dataset = ([Animal(np.array([1, 0]), 'cat'), Animal(np.array([0, 1]), 'cat'), Animal(np.array([0, 1]), 'dog'), Animal(np.array([0, 1]), 'dog'), Animal(np.array([1, 1]), 'cat')]) expectedCounts = classifier.expectedModelCounts(dataset) self.assertAlmostEqual(expectedCounts['cat'][0], 1.10121, 4) self.assertAlmostEqual(expectedCounts['cat'][1], .12661, 4) self.assertAlmostEqual(expectedCounts['dog'][0], .89879, 4) self.assertAlmostEqual(expectedCounts['dog'][1], 3.87339, 4)