age.set_density_parameters(ExponentialParameters(0.1, {}))

sun.set_density_parameters(BetaParameters(2, {}, 2, {}))

ground.set_density_parameters(GaussParameters(2.0, {}, 1.5))

growth.set_density_parameters(GaussParameters(0.1, {age: 5.0, ground: 1.0, sun: 4.0}, 2.5))

height.set_density_parameters(BetaParameters(0.1, {growth: 1}, 0.5, {growth: 0.5}))

diameter.set_density_parameters(ExponentialParameters(0.01, {growth: 0.2}))

children.set_density_parameters(ExponentialParameters(0.1, {ground: 1.0, height: 1.0}))


mcmc_ask = MCMC(bn, 1000)

evidence = {age: EvEqual(2)}


print "PosteriorMarginal:"
pm = mcmc_ask.calculate_PosteriorMarginal([age, height], evidence, NDGauss)
# pm=mcmc_ask.calculate_PosteriorMarginal([height],evidence,Gauss)
print pm

print "PriorMarginal:"
pm = mcmc_ask.calculate_PriorMarginal([age], NDGauss)
print pm
# pm=mcmc_ask.calculate_PriorMarginal([height,diameter],Gauss)
pm = mcmc_ask.calculate_PriorMarginal([height], NDGauss)
print pm
Example #2
0
#->lambda=2.0
age_parameters=ExponentialParameters(0.0,{})
age.set_density_parameters(age_parameters)

#Semantics: plants start at 0.1 meters underground and grow each year by 1 meter.
#           variance is 0.3 
height_parameters=GaussParameters(-0.1,{age:1},0.3)
height.set_density_parameters(height_parameters)

#Semantics: At small age: low alpha, high beta -> skew to the left: thin plants
#            At higher age: high alpha, low beta -> skew to the right: thick plants
diameter_parameters=BetaParameters(-10.0,{age:4.0},10.0,{age:-4.0})
diameter.set_density_parameters(diameter_parameters)


mcmc_ask=MCMC(bn,1000,convergence_test=ConvergenceTestSimpleCounting(500))


print "------PriorMarginal:------"


pm=mcmc_ask.calculate_PriorMarginal([age],NDGauss)
print pm
print "Ground truth: mu=0.5 C=[0.25]"
pm=mcmc_ask.calculate_PriorMarginal([height],NDGauss)
print pm
print ""


print "------PosteriorMarginal:------"
pm=mcmc_ask.calculate_PosteriorMarginal([age,height],{age:EvEqual(2)},NDGauss)
        ground: 1.0,
        sun: 4.0
    }, 2.5))

height.set_density_parameters(
    BetaParameters(0.1, {growth: 1}, 0.5, {growth: 0.5}))

diameter.set_density_parameters(ExponentialParameters(0.01, {growth: 0.2}))

children.set_density_parameters(
    ExponentialParameters(0.1, {
        ground: 1.0,
        height: 1.0
    }))

mcmc_ask = MCMC(bn, 1000)

evidence = {age: EvEqual(2)}

print "PosteriorMarginal:"
pm = mcmc_ask.calculate_PosteriorMarginal([age, height], evidence, NDGauss)
#pm=mcmc_ask.calculate_PosteriorMarginal([height],evidence,Gauss)
print pm

print "PriorMarginal:"
pm = mcmc_ask.calculate_PriorMarginal([age], NDGauss)
print pm
#pm=mcmc_ask.calculate_PriorMarginal([height,diameter],Gauss)
pm = mcmc_ask.calculate_PriorMarginal([height], NDGauss)
print pm
Example #4
0
alarm = DiscreteNode("Alarm", ["Ringing", "Silent", "Destroyed"])

bn.add_node(burglary)
bn.add_node(alarm)

bn.add_edge(burglary, alarm)

#Parametrize the network
burglary_cpt = numpy.array([0.2, 0.8])
burglary.set_probability_table(burglary_cpt, [burglary])

alarm_cpt = numpy.array([[0.8, 0.15, 0.05], [0.05, 0.9, 0.05]])
alarm.set_probability_table(alarm_cpt, [burglary, alarm])

#Get some inference object
mcmc_ask = MCMC(bn, 5000, transition_model=GibbsTransitionModel())

#Do some Inferences
evidence = {burglary: EvEq("Intruder")}

print "-------ProbabilityOfEvidence:-------"
poe = mcmc_ask.calculate_PoE(evidence)
print "p(evidence=Intruder)=" + str(poe)
print "Ground truth=0.2\n"

print "-------PosteriorMarginal:-------"
pm = mcmc_ask.calculate_PosteriorMarginal([alarm], evidence, ProbabilityTable)
print "P(alarm|burglary=Intruder)=" + str(pm)
print "Ground truth=[0.8, 0.15, 0.05]\n"

print "-------PriorMarginal:-------"
Example #5
0
print "Posterior Marginal (alarm->ringing , earthquake->calm):"

print "AlarmFT: " + str(factorTree.calculate_marginal([alarm]))
print "John_CallsFT: " + str(factorTree.calculate_marginal([john_calls]))
print "Baum_CallsFT: " + str(factorTree.calculate_marginal([baum_calls]))
print "BurglaryFT: " + str(factorTree.calculate_marginal([burglary]))
print "EarthquakeFT: " + str(factorTree.calculate_marginal([earthquake]))








mcmc_ask=MCMC(bn,1000)

print "====MCMC===="

print "Prior Marginal:"

print "AlarmFT: " + str(mcmc_ask.calculate_PriorMarginal([alarm],ProbabilityTable))
print "John_CallsFT: " + str(mcmc_ask.calculate_PriorMarginal([john_calls],ProbabilityTable))
print "Baum_CallsFT: " + str(mcmc_ask.calculate_PriorMarginal([baum_calls],ProbabilityTable))
print "BurglaryFT: " + str(mcmc_ask.calculate_PriorMarginal([burglary],ProbabilityTable))
print "EarthquakeFT: " + str(mcmc_ask.calculate_PriorMarginal([earthquake],ProbabilityTable))

evidences = {alarm: EvEq("Ringing"),earthquake: EvEq("Calm")}

print "PoE: " + str(mcmc_ask.calculate_PoE(evidences))
Example #6
0
print "Posterior Marginal (alarm->ringing , earthquake->calm):"

print "AlarmFT: " + str(factorTree.calculate_marginal([alarm]))
print "John_CallsFT: " + str(factorTree.calculate_marginal([john_calls]))
print "Baum_CallsFT: " + str(factorTree.calculate_marginal([baum_calls]))
print "BurglaryFT: " + str(factorTree.calculate_marginal([burglary]))
print "EarthquakeFT: " + str(factorTree.calculate_marginal([earthquake]))








mcmc_ask=MCMC(bn,1000)

print "====MCMC===="

print "Prior Marginal:"

print "AlarmFT: " + str(mcmc_ask.calculate_PriorMarginal([alarm],ProbabilityTable))
print "John_CallsFT: " + str(mcmc_ask.calculate_PriorMarginal([john_calls],ProbabilityTable))
print "Baum_CallsFT: " + str(mcmc_ask.calculate_PriorMarginal([baum_calls],ProbabilityTable))
print "BurglaryFT: " + str(mcmc_ask.calculate_PriorMarginal([burglary],ProbabilityTable))
print "EarthquakeFT: " + str(mcmc_ask.calculate_PriorMarginal([earthquake],ProbabilityTable))

evidences = {alarm: EvEq("Ringing"),earthquake: EvEq("Calm")}

print "PoE: " + str(mcmc_ask.calculate_PoE(evidences))
Example #7
0
bn.add_node(burglary)
bn.add_node(alarm)

bn.add_edge(burglary,alarm)


#Parametrize the network
burglary_cpt=numpy.array([0.2,0.8])
burglary.set_probability_table(burglary_cpt, [burglary])

alarm_cpt=numpy.array([[0.8,0.15,0.05],[0.05,0.9,0.05]])
alarm.set_probability_table(alarm_cpt, [burglary,alarm])


#Get some inference object
mcmc_ask=MCMC(bn,5000,transition_model=GibbsTransitionModel())

#Do some Inferences
evidence={burglary:EvEq("Intruder")}

print "-------ProbabilityOfEvidence:-------" 
poe=mcmc_ask.calculate_PoE(evidence)
print "p(evidence=Intruder)="+str(poe)
print "Ground truth=0.2\n"

print "-------PosteriorMarginal:-------"
pm=mcmc_ask.calculate_PosteriorMarginal([alarm],evidence,ProbabilityTable)
print "P(alarm|burglary=Intruder)="+str(pm)
print "Ground truth=[0.8, 0.15, 0.05]\n"

print "-------PriorMarginal:-------"