def test_probability_of_root_variable(self): bnn = BayesNetNode("var1") bnn.set_probablity(0.3, [True]) false_result = bnn.probability_of({"var1": False}) expected_false_result = 0.7 self.assertAlmostEqual(expected_false_result, false_result, places=5) true_result = bnn.probability_of({"var1": True}) expected_true_result = 0.3 self.assertAlmostEqual(expected_true_result, true_result, places=5)
def test_probability_of_non_root_var(self): root_bnn1 = BayesNetNode("root1") root_bnn2 = BayesNetNode("root2") root_bnn3 = BayesNetNode("root3") dependent_bnn = BayesNetNode("dependentNode") dependent_bnn.influenced_by(root_bnn1, root_bnn2, root_bnn3) dependent_bnn.influenced_by(root_bnn1, root_bnn2, root_bnn3) dependent_bnn.set_probablity(0.1, (True, True, True)) dependent_bnn.set_probablity(0.15, (True, False, True)) dependent_bnn.set_probablity(0.2, (True, True, False)) dependent_bnn.set_probablity(0.25, (False, True, True)) dependent_bnn.set_probablity(0.3, (False, False, True)) result = dependent_bnn.probability_of({"root1" : True}) expected_result = 0.1 + 0.15 + 0.2 self.assertAlmostEqual(expected_result, result, places=5)
def test_probability_of_non_root_var(self): root_bnn1 = BayesNetNode("root1") root_bnn2 = BayesNetNode("root2") root_bnn3 = BayesNetNode("root3") dependent_bnn = BayesNetNode("dependentNode") dependent_bnn.influenced_by(root_bnn1, root_bnn2, root_bnn3) dependent_bnn.influenced_by(root_bnn1, root_bnn2, root_bnn3) dependent_bnn.set_probablity(0.1, (True, True, True)) dependent_bnn.set_probablity(0.15, (True, False, True)) dependent_bnn.set_probablity(0.2, (True, True, False)) dependent_bnn.set_probablity(0.25, (False, True, True)) dependent_bnn.set_probablity(0.3, (False, False, True)) result = dependent_bnn.probability_of({"root1": True}) expected_result = 0.1 + 0.15 + 0.2 self.assertAlmostEqual(expected_result, result, places=5)