Пример #1
0
 def setUp(self):
     # Create BayesNet
     self.bn = BayesianNetwork()
     # 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")])
Пример #2
0
 def setUp(self):
     # Create BayesNet
     self.bn = BayesianNetwork()
     # 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([0.6, 0.4])
     weather0.set_probability_table(cpt_weather0, [weather0])
     cpt_weather = numpy.array([[0.7, 0.5], [0.3, 0.5]])
     weather.set_probability_table(cpt_weather, [weather0, weather])
     ice_cream_eaten.set_probability(0.9, [(ice_cream_eaten, True), (weather, "Sun")])
     ice_cream_eaten.set_probability(0.1, [(ice_cream_eaten, False), (weather, "Sun")])
     ice_cream_eaten.set_probability(0.2, [(ice_cream_eaten, True), (weather, "Rain")])
     ice_cream_eaten.set_probability(0.8, [(ice_cream_eaten, False), (weather, "Rain")])
Пример #3
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"),
Пример #4
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()
Пример #5
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")])
Пример #6
0
bn = BayesianNetwork()
burglary = DiscreteNode("Burglary", ["Intruder", "Safe"])
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()
Пример #7
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")])