コード例 #1
0
 def test_story_cid_examples(self) -> None:
     get_fitness_tracker()
     get_introduced_bias()
     get_car_accident_predictor()
     get_content_recommender()
     get_content_recommender2()
     get_modified_content_recommender()
     get_grade_predictor()
コード例 #2
0
ファイル: test_cpd.py プロジェクト: edlanglois/pycid
 def test_updated_decision_names(self) -> None:
     cid = get_introduced_bias()
     self.assertEqual(cid.get_cpds('D').state_names['D'], [0, 1])
     cid.impute_conditional_expectation_decision('D', 'Y')
     self.assertNotEqual(cid.get_cpds('D').state_names['D'], [0, 1])
     cid.impute_random_policy()
     self.assertNotEqual(cid.get_cpds('D').state_names['D'], [0, 1])
コード例 #3
0
 def test_impute_cond_expectation_decision(self) -> None:
     cid = get_introduced_bias()
     cid.impute_conditional_expectation_decision('D', 'Y')
     eu_ce = cid.expected_utility({})
     self.assertAlmostEqual(eu_ce, -0.1666, 2)
     cid.impute_optimal_policy()
     eu_opt = cid.expected_utility({})
     self.assertEqual(eu_ce, eu_opt)
コード例 #4
0
 def test_total_effect(self) -> None:
     cid = get_minimal_cid()
     cid.impute_random_policy()
     self.assertEqual(total_effect(cid, 'A', 'B', 0, 1), 1)
     cid = get_introduced_bias()
     cid.impute_random_policy()
     self.assertEqual(total_effect(cid, 'A', 'X', 0, 1), 0.5)
     self.assertEqual(total_effect(cid, 'A', 'D', 0, 1), 0)
     self.assertEqual(total_effect(cid, 'A', 'Y', 0, 1), 0.5)
コード例 #5
0
ファイル: test_cpd.py プロジェクト: Jamesfox1/cid
 def test_updated_decision_names(self) -> None:
     cid = get_introduced_bias()
     self.assertEqual(cid.get_cpds('D').state_names['D'], [0, 1])
     cid.impute_conditional_expectation_decision('D', 'Y')
     self.assertNotEqual(cid.get_cpds('D').state_names['D'], [0, 1])
     cid.impute_random_policy()
     self.assertNotEqual(cid.get_cpds('D').state_names['D'], [0, 1])
     cid.impute_optimal_policy()
     eu = cid.expected_utility({})
     self.assertGreater(eu, -0.2)
コード例 #6
0
 def test_value_of_information(self) -> None:
     cid = get_introduced_bias()
     self.assertTrue(admits_voi(cid, 'D', 'A'))
     self.assertEqual(set(admits_voi_list(cid, 'D')), {'A', 'X', 'Z', 'Y'})
     cid2 = get_grade_predictor()
     self.assertCountEqual(admits_voi_list(cid2, 'P'), ['HS', 'E', 'Gr'])
     self.assertFalse(admits_voi(cid2, 'P', 'Ge'))
     with self.assertRaises(Exception):
         admits_voi(cid2, 'P', 'A')
     with self.assertRaises(Exception):
         admits_voi(cid2, 'B', 'Ge')
     cid2.remove_edge('HS', 'P')
     self.assertCountEqual(admits_voi_list(cid2, 'P'), ['R', 'HS', 'E', 'Gr'])
コード例 #7
0
 def test_introduced_total_effect(self) -> None:
     cid = get_introduced_bias()
     cid.impute_random_policy()
     self.assertEqual(introduced_total_effect(cid, 'A', 'D', 'Y', 0, 1), -0.5)
     cid.impute_conditional_expectation_decision('D', 'Y')
     self.assertAlmostEqual(introduced_total_effect(cid, 'A', 'D', 'Y', 0, 1), 0.3333, 2)
     # Try modified model where X doesn't depend on Z
     cid = get_introduced_bias()
     cid.impute_random_policy()
     cid.add_cpds(FunctionCPD('X', lambda a, z: a, evidence=['A', 'Z']))
     cid.impute_conditional_expectation_decision('D', 'Y')
     self.assertAlmostEqual(introduced_total_effect(cid, 'A', 'D', 'Y', 0, 1), 0, 2)
     # Try modified model where Y doesn't depend on Z
     cid = get_introduced_bias()
     cid.impute_random_policy()
     cid.add_cpds(FunctionCPD('Y', lambda x, z: x, evidence=['X', 'Z']))
     cid.impute_conditional_expectation_decision('D', 'Y')
     self.assertAlmostEqual(introduced_total_effect(cid, 'A', 'D', 'Y', 0, 1), 0, 2)
     # Try modified model where Y doesn't depend on X
     cid = get_introduced_bias()
     cid.impute_random_policy()
     cid.add_cpds(FunctionCPD('Y', lambda x, z: z, evidence=['X', 'Z']))
     cid.impute_conditional_expectation_decision('D', 'Y')
     self.assertAlmostEqual(introduced_total_effect(cid, 'A', 'D', 'Y', 0, 1), 0.333, 2)