Beispiel #1
0
 def test_on_independant(self):
     p = np.random.dirichlet([3.] * 10)
     p = np.vstack([.2 * p, .8 * p])
     self.assertAlmostEqual(conditional_entropy(p, axis=0),
                            entropy(p.sum(axis=0)))
     self.assertAlmostEqual(conditional_entropy(p, axis=1),
                            entropy(p.sum(axis=1)))
Beispiel #2
0
 def test_on_independant(self):
     p = np.random.dirichlet([3.] * 10)
     p = np.vstack([.2 * p, .8 * p])
     self.assertAlmostEqual(conditional_entropy(p, axis=0),
                            entropy(p.sum(axis=0)))
     self.assertAlmostEqual(conditional_entropy(p, axis=1),
                            entropy(p.sum(axis=1)))
Beispiel #3
0
 def test_is_symetric(self):
     p = np.random.dirichlet([3.] * 10)
     e1 = entropy(p)
     np.random.shuffle(p)
     e2 = entropy(p)
     self.assertAlmostEqual(e1, e2)
Beispiel #4
0
 def test_is_positive(self):
     p = np.random.dirichlet([3.] * 10)
     self.assertTrue(entropy(p) >= 0)
Beispiel #5
0
 def test_is_less_than_entropy(self):
     p = np.random.dirichlet([3.] * 10).reshape((2, 5))
     self.assertTrue(conditional_entropy(p, axis=0)
                     <= entropy(p.sum(axis=0)))
     self.assertTrue(conditional_entropy(p, axis=1)
                     <= entropy(p.sum(axis=1)))
Beispiel #6
0
 def test_fits_relation_to_entropy(self):
     p = np.random.dirichlet([3.] * 10).reshape((2, 5))
     info1 = mutual_information(p)
     info2 = entropy(p.sum(axis=0)) + entropy(p.sum(axis=1)) - entropy(p)
     self.assertAlmostEqual(info1, info2)
Beispiel #7
0
 def test_is_0_on_deterministic(self):
     self.assertEqual(entropy(np.array([0, 1])), 0)
Beispiel #8
0
 def test_is_log_n_on_equi(self):
     p = np.ones((10,)) / 10.
     self.assertAlmostEqual(entropy(p), np.log(10.))
Beispiel #9
0
 def test_is_log_n_on_equi(self):
     p = np.ones((10, )) / 10.
     self.assertAlmostEqual(entropy(p), np.log(10.))
Beispiel #10
0
 def test_is_symetric(self):
     p = np.random.dirichlet([3.] * 10)
     e1 = entropy(p)
     np.random.shuffle(p)
     e2 = entropy(p)
     self.assertAlmostEqual(e1, e2)
Beispiel #11
0
 def test_is_positive(self):
     p = np.random.dirichlet([3.] * 10)
     self.assertTrue(entropy(p) >= 0)
Beispiel #12
0
 def test_is_less_than_entropy(self):
     p = np.random.dirichlet([3.] * 10).reshape((2, 5))
     self.assertTrue(
         conditional_entropy(p, axis=0) <= entropy(p.sum(axis=0)))
     self.assertTrue(
         conditional_entropy(p, axis=1) <= entropy(p.sum(axis=1)))
Beispiel #13
0
 def test_fits_relation_to_entropy(self):
     p = np.random.dirichlet([3.] * 10).reshape((2, 5))
     info1 = mutual_information(p)
     info2 = entropy(p.sum(axis=0)) + entropy(p.sum(axis=1)) - entropy(p)
     self.assertAlmostEqual(info1, info2)
Beispiel #14
0
 def test_is_0_on_deterministic(self):
     self.assertEqual(entropy(np.array([0, 1])), 0)