def plot_map_insurance_network_var_mapvars(): times_list = [] bn = parse_network_from_file("./sample_bayesian_networks/insurance.bif") for i in range(1, len(bn.variables)): size = i bn = parse_network_from_file( "./sample_bayesian_networks/insurance.bif") map_vars = bn.variables[0:i] ts = time.time() prob, assgn = map_ask(dict(), bn, map_vars=map_vars) te = time.time() times_list.append(te - ts) plot_list(times_list, "MAP on Insurance network", "# of MAP variables", "computation time")
def test_map_medium(): bn = parse_network_from_file("./sample_bayesian_networks/insurance.bif") prob, assgn = map_ask(dict(PropCost="Thousand", RiskAversion="Adventurous"), bn, map_vars=['Theft']) print(F"P(map,e): {prob}, MAP: {assgn}")
def test_mpe_small_bn_2(self): small_bn = parse_network_from_file( "./sample_bayesian_networks/earthquake.bif") prob, assgn = mpe_ask(dict(JohnCalls="False", Alarm="True"), small_bn) self.assertEqual(prob, 0.0006448399999999999) self.assertEqual(assgn, [('Burglary', 'True'), ('Earthquake', 'False'), ('MaryCalls', 'True')])
def test_map_medium_bn_2(self): medium_bn = parse_network_from_file( "./sample_bayesian_networks/insurance.bif") prob, assgn = map_ask(dict(AntiTheft="True", RiskAversion="Cautious"), medium_bn, map_vars=['Accident']) self.assertEqual(prob, 0.19245212164413633) self.assertEqual(assgn, [('Accident', 'None')])
def test_map_small_bn(self): small_bn = parse_network_from_file( "./sample_bayesian_networks/earthquake.bif") prob, assgn = map_ask(dict(Burglary="True", JohnCalls="True"), small_bn, not_map_vars=['Alarm']) self.assertEqual(prob, 0.005803854) self.assertEqual(assgn, [('Earthquake', 'False'), ('MaryCalls', 'True')])
def test_map_medium_bn(self): medium_bn = parse_network_from_file( "./sample_bayesian_networks/insurance.bif") prob, assgn = map_ask(dict(PropCost="Thousand", RiskAversion="Adventurous"), medium_bn, map_vars=['Theft']) self.assertEqual(prob, 0.13093217869278678) self.assertEqual(assgn, [('Theft', 'False')])
def plot_mpe_time_growing_var(bn_path): bn = parse_network_from_file(bn_path) variables = bn.variables var_values = [bn.variable_values(var) for var in variables] random_sel_values = [random.choice(val_list) for val_list in var_values] dic = dict(zip(variables, random_sel_values)) times_list = [] for i, item in enumerate(dic): # bn = parse_network_from_file("./sample_bayesian_networks/alarm.bif") bn.last_max_out = None first_n_pairs = {k: dic[k] for k in list(dic)[:i]} ts = time.time() mpe_ask(first_n_pairs, bn) te = time.time() times_list.append(te - ts) plot_list(times_list, "MPE growing evidences", "# evidences", "time")
def plot_map_time_growing_var_fixed_map_var(bn_path): bn = parse_network_from_file(bn_path) variables = bn.variables[:3] + bn.variables[4:] fixed_map_var = bn.variables[3] var_values = [bn.variable_values(var) for var in variables] random_sel_values = [random.choice(val_list) for val_list in var_values] dic = dict(zip(variables, random_sel_values)) times_list = [] for i, item in enumerate(dic): bn.last_max_out = None first_n_pairs = {k: dic[k] for k in list(dic)[:i]} if first_n_pairs: ts = time.time() map_ask(first_n_pairs, bn, map_vars=fixed_map_var) te = time.time() times_list.append(te - ts) plot_list(times_list, "MAP growing map vars fixed map var", "# evidence", "time")
def test_mpe_medium_bn_2(self): medium_bn = parse_network_from_file( "./sample_bayesian_networks/insurance.bif") prob, assgn = mpe_ask(dict(AntiTheft="True", RiskAversion="Cautious"), medium_bn) self.assertEqual(prob, 0.0007795974803453906) self.assertEqual(assgn, [('Age', 'Adult'), ('Mileage', 'FiftyThou'), ('SocioEcon', 'Prole'), ('OtherCar', 'True'), ('GoodStudent', 'False'), ('MakeModel', 'Economy'), ('SeniorTrain', 'False'), ('HomeBase', 'City'), ('VehicleYear', 'Older'), ('RuggedAuto', 'EggShell'), ('Antilock', 'False'), ('CarValue', 'FiveThou'), ('Airbag', 'False'), ('DrivingSkill', 'Normal'), ('Cushioning', 'Poor'), ('DrivHist', 'Zero'), ('DrivQuality', 'Normal'), ('Theft', 'False'), ('Accident', 'None'), ('OtherCarCost', 'Thousand'), ('ILiCost', 'Thousand'), ('ThisCarDam', 'None'), ('MedCost', 'Thousand'), ('ThisCarCost', 'Thousand'), ('PropCost', 'Thousand')])
def plot_map_time_growing_var_fixed_evidence(bn_path): bn = parse_network_from_file(bn_path) variables = bn.variables var_values = [bn.variable_values(var) for var in variables] random_sel_values = [random.choice(val_list) for val_list in var_values] dic = dict(zip(variables, random_sel_values)) times_list = [] first_n_pairs = {k: dic[k] for k in list(dic)[:2]} print(first_n_pairs) del variables[:2] print(variables) for i, var in enumerate(variables): bn.last_max_out = None map_vars = variables[:i] if map_vars: ts = time.time() map_ask(first_n_pairs, bn, map_vars=map_vars) te = time.time() times_list.append(te - ts) plot_list(times_list, "MAP growing map vars fixed evidence", "# map vars", "time")
def test_mpe(): bn = parse_network_from_file("./sample_bayesian_networks/earthquake.bif") prob, assgn = mpe_ask(dict(JohnCalls="True", MaryCalls="True"), bn) print(F"P(mpe,e): {prob}, MPE: {assgn}")
def test_mpe_medium(): bn = parse_network_from_file("./sample_bayesian_networks/insurance.bif") prob, assgn = mpe_ask( dict(PropCost="Thousand", RiskAversion="Adventurous"), bn) print(F"P(mpe,e): {prob}, MPE: {assgn}")
def test_map(): bn = parse_network_from_file("./sample_bayesian_networks/earthquake.bif") prob, assgn = map_ask(dict(Burglary="True", JohnCalls="True"), bn, not_map_vars=['Alarm']) print(F"P(map,e): {prob}, MAP: {assgn}")