Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from primo.core import BayesNet
from primo.reasoning import ContinuousNodeFactory
from primo.reasoning.density import LinearExponentialParameters
from primo.reasoning.density import LinearBetaParameters
from primo.reasoning.density import Gauss
from primo.reasoning import MCMC
import numpy
#Construct some simple BayesianNetwork. In this example it models
#the linear relationship between the age of a plant and the height that
#it has grown up to (+noise)
#topology
bn = BayesNet()
cnf=ContinuousNodeFactory()
age = cnf.createLinearExponentialNode("Plant_age")
height = cnf.createLinearExponentialNode("Plant_height")
#diameter = cnf.createLinearBetaNode("Plant_diameter")
bn.add_node(age)
bn.add_node(height)
#bn.add_node(diameter)
bn.add_edge(age,height)
#bn.add_edge(age,diameter)
#parameterization
age_parameters=LinearExponentialParameters(4,{})
age.set_density_parameters(age_parameters)
height_parameters=LinearExponentialParameters(0.1,{age:1})
height.set_density_parameters(height_parameters)
#diameter_parameters=LinearGaussParameters(0.1,{age:-0.2},0.1)
#diameter.set_density_parameters(diameter_parameters)
mcmc_ask=MCMC(bn)
evidence={age:2}
#print "ProbabilityOfEvidence: "
#poe=mcmc_ask.calculate_PoE(evidence)
#print poe
print "PosteriorMarginal:"
#pm=mcmc_ask.calculate_PosteriorMarginal([height,diameter],evidence,Gauss)
#pm=mcmc_ask.calculate_PosteriorMarginal([height],evidence,Gauss)
#print pm
print "PriorMarginal:"
pm=mcmc_ask.calculate_PriorMarginal([age],Gauss)
#pm=mcmc_ask.calculate_PriorMarginal([height,diameter],Gauss)
#pm=mcmc_ask.calculate_PriorMarginal([height],Gauss)
print pm
#print "PriorMarginal:"
#pm=mcmc_ask.calculate_PriorMarginal([alarm])
#print "Alarm: " + str(pm)
#pm=mcmc_ask.calculate_PriorMarginal([burglary])
#print "Burglary: " + str(pm)