Exemplo n.º 1
0
 def setUp(self):
     # Create BayesNet
     self.bn = BayesNet();
     # Create Nodes
     weather0 = DiscreteNode("Weather0", ["Sun", "Rain"])
     weather = DiscreteNode("Weather", ["Sun", "Rain"])
     ice_cream_eaten = DiscreteNode("Ice Cream Eaten", [True, False])
     # Add nodes
     self.bn.add_node(weather0)
     self.bn.add_node(weather)
     self.bn.add_node(ice_cream_eaten)
     # Add edges
     self.bn.add_edge(weather, ice_cream_eaten)
     self.bn.add_edge(weather0, weather);
     # Set probabilities
     cpt_weather0 = numpy.array([.6, .4])
     weather0.set_probability_table(cpt_weather0, [weather0])
     cpt_weather = numpy.array([[.7, .5],
                                [.3, .5]])
     weather.set_probability_table(cpt_weather, [weather0, weather])
     ice_cream_eaten.set_probability(.9, [(ice_cream_eaten, True), (weather, "Sun")])
     ice_cream_eaten.set_probability(.1, [(ice_cream_eaten, False), (weather, "Sun")])
     ice_cream_eaten.set_probability(.2, [(ice_cream_eaten, True), (weather, "Rain")])
     ice_cream_eaten.set_probability(.8, [(ice_cream_eaten, False), (weather, "Rain")])
Exemplo n.º 2
0
bdn.add_edge(prize, startup)
bdn.add_edge(startup, income)
bdn.add_edge(startup, costStartup)
bdn.add_edge(prize, income)
bdn.add_edge(income, benefit)

costut=numpy.array([-50000, 0])
cost.set_utility_table(costut, [education])

benefitut=numpy.array([100000,200000,500000])
benefit.set_utility_table(benefitut,[income])

startuput=numpy.array([-20000,0])
costStartup.set_utility_table(startuput,[startup])

income.set_probability(0.1,[(income,"low"),(startup,"do startUp"), (prize,"no prize")])
income.set_probability(0.2,[(income,"low"),(startup,"no startUp"), (prize,"no prize")])
income.set_probability(0.005,[(income,"low"),(startup,"do startUp"), (prize,"prize")])
income.set_probability(0.005,[(income,"low"),(startup,"no startUp"), (prize,"prize")])
income.set_probability(0.5,[(income,"average"),(startup,"do startUp"), (prize,"no prize")])
income.set_probability(0.6,[(income,"average"),(startup,"no startUp"), (prize,"no prize")])
income.set_probability(0.005,[(income,"average"),(startup,"do startUp"), (prize,"prize")])
income.set_probability(0.015,[(income,"average"),(startup,"no startUp"), (prize,"prize")])
income.set_probability(0.4,[(income,"high"),(startup,"do startUp"), (prize,"no prize")])
income.set_probability(0.2,[(income,"high"),(startup,"no startUp"), (prize,"no prize")])
income.set_probability(0.99,[(income,"high"),(startup,"do startUp"), (prize,"prize")])
income.set_probability(0.8,[(income,"high"),(startup,"no startUp"), (prize,"prize")])

prize.set_probability(0.0000001,[(prize,"prize"),(education,"no Phd")])
prize.set_probability(0.001,[(prize,"prize"),(education,"do Phd")])
prize.set_probability(0.9999999,[(prize,"no prize"),(education,"no Phd")])
Exemplo n.º 3
0
alarm = DiscreteNode("Alarm", ["Ringing", "Silent", "Kaputt"])
earthquake = DiscreteNode("Earthquake", ["Shaking", "Calm"])
john_calls = DiscreteNode("John calls", ["Calling", "Not Calling"])
mary_calls = DiscreteNode("Mary calls", ["Calling", "Not Calling"])


bn.add_node(burglary)
bn.add_node(alarm)
bn.add_node(earthquake)
bn.add_node(john_calls)
bn.add_node(mary_calls)


bn.add_edge(burglary, alarm)
bn.add_edge(earthquake, alarm)
bn.add_edge(alarm, john_calls)
bn.add_edge(alarm, mary_calls)


burglary.set_probability(0.2, [(burglary, "Intruder")])

alarm.set_probability(0.1, [(alarm, "Ringing"), (burglary, "Safe"), (earthquake, "Calm")])

cpt = numpy.array([[0.1, 0.9], [0.5, 0.5], [0.4, 0.6]])
john_calls.set_probability_table(cpt, [alarm, john_calls])

print john_calls.is_valid()
print alarm.is_valid()

bn.draw()
Exemplo n.º 4
0
# Add edges to show dependencies
bn.add_edge(burglary, alarm)
bn.add_edge(earthquake, alarm)
bn.add_edge(alarm, john_calls)
bn.add_edge(alarm, baum_calls)

# create probability tables and set them in the node
cpt_burglary = numpy.array([0.001, 0.999])
burglary.set_probability_table(cpt_burglary, [burglary])

cpt_earthquake = numpy.array([0.002, 0.998])
earthquake.set_probability_table(cpt_earthquake, [earthquake])

# another possibility to set probabilities
alarm.set_probability(0.95, [(alarm, "Ringing"), (burglary, "Intruder"), (earthquake, "Shaking")])
alarm.set_probability(0.05, [(alarm, "Silent"), (burglary, "Intruder"), (earthquake, "Shaking")])
alarm.set_probability(0.29, [(alarm, "Ringing"), (burglary, "Safe"), (earthquake, "Shaking")])
alarm.set_probability(0.71, [(alarm, "Silent"), (burglary, "Safe"), (earthquake, "Shaking")])
alarm.set_probability(0.94, [(alarm, "Ringing"), (burglary, "Intruder"), (earthquake, "Calm")])
alarm.set_probability(0.06, [(alarm, "Silent"), (burglary, "Intruder"), (earthquake, "Calm")])
alarm.set_probability(0.001, [(alarm, "Ringing"), (burglary, "Safe"), (earthquake, "Calm")])
alarm.set_probability(0.999, [(alarm, "Silent"), (burglary, "Safe"), (earthquake, "Calm")])

baum_calls.set_probability(0.9, [(alarm, "Ringing"), (baum_calls, "Calling")])
baum_calls.set_probability(0.1, [(alarm, "Ringing"), (baum_calls, "Not Calling")])
baum_calls.set_probability(0.05, [(alarm, "Silent"), (baum_calls, "Calling")])
baum_calls.set_probability(0.95, [(alarm, "Silent"), (baum_calls, "Not Calling")])

john_calls.set_probability(0.7, [(alarm, "Ringing"), (john_calls, "Calling")])
john_calls.set_probability(0.3, [(alarm, "Ringing"), (john_calls, "Not Calling")])