Example #1
0
 def test_mixture(self, p1, p2):
     mix1 = Prob.mixture([1, 0], [p1, p2])
     mix2 = Prob.mixture([0, 1], [p1, p2])
     mix3 = Prob.mixture([1, 1], [p1, p2])
     assert mix1 == p1
     assert mix2 == p2
     assert mix3 == Prob({'a': 0.75, 'b': 0.25})
Example #2
0
 def test_mixture_with_bad_coeffs(self, p1, p2):
     with pytest.raises(ValueError):
         Prob.mixture([1, 1, 1], [p1, p2])
Example #3
0
 def p1(self):
     return Prob({'a': 0.5, 'b': 0.5})
Example #4
0
 def test_encode(self, p3):
     assert list(p3.encode('abc')) == [0.75, 0.25, 0.0]
     assert list(p3.encode()) == [0.75, 0.25]
     assert list(Prob([3, 1]).encode()) == [0.75, 0.25]
Example #5
0
 def test_mode(self):
     prob = Prob({'a': 0.2, 'b': 0.3, 'c': 0.5})
     assert prob.max() == 0.5
     assert prob.mode() == 'c'
Example #6
0
 def test_kl_divergence(self, p1, p2):
     assert p1.kl_divergence(p1) == 0
     assert p1.kl_divergence(p2) == float('inf')
     assert p2.kl_divergence(p2) == 0
     assert abs(p2.kl_divergence(p1) - 0.69) < 5e-2
     assert p1.kl_divergence(Prob([1])) == float('inf')
Example #7
0
 def test_probability_with_support(self, p1):
     p = Prob(p1, support='abc')
     assert p['c'] == 0.0
Example #8
0
 def test_probability_can_be_non_normalized(self):
     p = Prob([1, 1], normalize=False)
     assert sum(p.values()) == 2
Example #9
0
 def test_prob_from_list(self):
     p = Prob([0.5, 0.25, 0.25])
     assert p[0] == 0.5
     assert p[1] == 0.25
     assert p[2] == 0.25
Example #10
0
 def p3(self):
     return Prob({'a': 0.75, 'b': 0.25})
Example #11
0
 def p2(self):
     return Prob({'a': 1, 'b': 0})