def test_efficiency(self): "efficiency method should return the proper values" self.assertEqual(self.sources["iid5"].efficiency(), 1) self.assertEqual(self.sources["ird4"].efficiency(), 1.75/log2(4)) self.assertEqual(self.sources["ird5"].efficiency(), 2/log2(5)) self.assertAlmostEqual(self.sources["ird5_2"].efficiency(), 1.9609640474436814/log2(5))
def test_entropy(self): "entropy method should return the proper values" self.assertEqual(self.sources["iid5"].entropy(), log2(5)) self.assertEqual(self.sources["ird4"].entropy(), 1.75) self.assertEqual(self.sources["ird5"].entropy(), 2) self.assertAlmostEqual(self.sources["ird5_2"].entropy(), 1.9609640474436814)
def testEntropy(self): "entropy method should return the proper values" self.assertEqual(self.sources["iid5"].entropy(), log2(5)) self.assertEqual(self.sources["ird4"].entropy(), 1.75) self.assertEqual(self.sources["ird5"].entropy(), 2)
def information(self): return [(sym, log2(1/p)) for sym, p in zip(self.symbols, self.distribution)]
def entropy(self): return sum([p*log2(1/p) for p in self.distribution])
def max_entropy(self): return log2(self.n)
def information(self, ndigits=3): return [(sym, round(log2(1/p), ndigits)) for sym, p in zip(self.symbols, self.distribution)]