To install, run Pkg.add("BayesNets"). Visualization of Network structure is provided by the TikzGraphs package. Installation requirements (e.g., PGF/Tikz and pdf2svg) are provided here.
In [1]:
using BayesNets
In [2]:
b = BayesNet([:B, :S, :E, :D, :C])
addEdges!(b, [(:B, :E), (:S, :E), (:E, :D), (:E, :C)])
Out[2]:
In [3]:
srand(0) # seed the random number generator to 0
setCPD!(b, :B, CPDs.Bernoulli(0.1))
setCPD!(b, :S, CPDs.Bernoulli(0.5))
setCPD!(b, :E, CPDs.Bernoulli([:B, :S], randBernoulliDict(2)))
setCPD!(b, :D, CPDs.Bernoulli([:E], randBernoulliDict(1)))
setCPD!(b, :C, CPDs.Bernoulli([:E], randBernoulliDict(1)));
In [4]:
parents(b, :E)
Out[4]:
In [5]:
domain(b, :C)
Out[5]:
In [6]:
table(b, :D)
Out[6]:
In [7]:
table(b, :B)
Out[7]:
In [8]:
bt = table(b, :B)
st = table(b, :S)
et = table(b, :E)
tt = bt * et * st
Out[8]:
In [9]:
tt = sumout(tt, [:B, :S])
Out[9]:
In [10]:
a = [
:B=>0,
:S=>1,
:E=>0,
:D=>1,
:C=>1
]
prob(b, a)
Out[10]:
In [11]:
rand(b)
Out[11]:
In [12]:
srand(0)
randTable(b, numSamples=5)
Out[12]:
In [13]:
srand(0)
t = randTable(b, numSamples=10, consistentWith=[:B=>true, :C=>false])
Out[13]:
In [14]:
t = randTable(b, numSamples=100, consistentWith=[:B=>true, :C=>false])
estimate(t)
Out[14]:
In [15]:
b = BayesNet([:A, :B, :C])
addEdge!(b, :A, :B)
setCPD!(b, :A, CPDs.Bernoulli(0.5))
setCPD!(b, :B, CPDs.Bernoulli(m->(m[:A] ? 0.5 : 0.45)))
setCPD!(b, :C, CPDs.Bernoulli(0.5))
b
Out[15]:
In [16]:
d = randTable(b, numSamples = 5)
Out[16]:
In [17]:
count(b, d)
Out[17]:
In [18]:
logBayesScore(b, d)
Out[18]:
In [19]:
b = BayesNet([:A, :B, :C])
Out[19]:
In [20]:
logBayesScore(b, d)
Out[20]: