1 下载PyAgrum
pip install pyagrum
如果出现超时问题,搜索anaconda如何更改下载源,改为清华下载源。
2 构建贝叶斯网络
引入相关包
from pylab import *
import matplotlib.pyplot as plt
import os
import pyAgrum as gum
2.1 创建网络和名字
#给这个贝叶斯网络命名
bn=gum.BayesNet('WaterSprinkler')
2.2 添加节点
#添加单个节点
c=bn.add(gum.LabelizedVariable('c','cloudy ?',2))
#print(c)
#添加多个节点
s, r, w = [ bn.add(name, 2) for name in "srw" ] #bn.add(name, 2) === bn.add(gum.LabelizedVariable(name, name, 2))
L a b e l i z e d v a r i a b l e Labelized variable Labelizedvariable是标识变量,指变量的数值是有限的。2说明 c c c的值只有两种,是 b o o l e a n boolean boolean变量。
2.3 添加边
#添加单个边,前面父节点,后面子节点
bn.addArc(c,s)
#添加多个边
for link in [(c,r),(s,w),(r,w)]:
bn.addArc(*link)
#print(bn)
2.4 快捷添加边
bn=gum.fastBN("c->r->w<-s<-c")
bn
3 构建条件概率表
3.1 父节点
#创建CPT
bn.cpt(c).fillWith([0.4,0.6])
bn.cpt("c").fillWith([0.5,0.5])
3.2 子节点
#创建第二层的CPT
bn.cpt("s").var_names#展示s里的变量名,有c和s两类
bn.cpt("s")[:]=[ [0.5,0.5],[0.9,0.1]]
print(bn.cpt("s")[1])
bn.cpt("s")[0,:]=0.5 # equivalent to [0.5,0.5]
bn.cpt("s")[1,:]=[0.9,0.1]
bn.cpt("r")[{
'c':0}]=[

最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



