# this example answers "What is the probability that it is raining, given the grass is wet?"
# See wikipedia: https://en.wikipedia.org/wiki/Bayesian_network
# S.Chekanov
from bayesnet.jayes import BayesNode,BayesNet
from bayesnet.jayes.inference.jtree import JunctionTreeAlgorithm
from java.util import *
net=BayesNet()
a=net.createNode("weather") # node=1
a.addOutcomes("rain", "suny")
a.setProbabilities(0.2, 0.8) # P(rain)=0.2
b=net.createNode("sprinkler") # node=2
b.addOutcomes("on", "off")
b.setParents(Arrays.asList(a))
b.setProbabilities(
# on | off
0.01, 0.99, # weather=rain
0.4, 0.6) # weather=suny
c=net.createNode("grass") # node=3
c.addOutcomes("wet", "dry")
c.setParents(Arrays.asList(a, b))
c.setProbabilities(
# wet | dry
# weather=rain
0.99, 0.01, # sprinkler=on
0.8, 0.2, # sprinkler=off
# weather=suny
0.9, 0.1, # sprinkler=on
0.0, 1.0) # sprinkler=off
inferer=JunctionTreeAlgorithm()
inferer.setNetwork(net)
evidence=HashMap()
evidence.put(c, "wet") # grass is wet
inferer.setEvidence(evidence)
beliefsC = inferer.getBeliefs(a)
print "P(weather | grass=wet)=",beliefsC.tolist()
evidence=HashMap()
evidence.put(a, "rain")
evidence.put(c, "wet")
inferer.setEvidence(evidence)
beliefsC = inferer.getBeliefs(b)
print "P(sprinkler | weather=rain, grass=wet)=",beliefsC.tolist()
Ads help maintain this website.