Пример #1
0
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")
Пример #2
0
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}")
Пример #3
0
 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')])
Пример #4
0
 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')])
Пример #5
0
 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')])
Пример #6
0
 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')])
Пример #7
0
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")
Пример #8
0
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")
Пример #9
0
 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')])
Пример #10
0
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")
Пример #11
0
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}")
Пример #12
0
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}")
Пример #13
0
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}")