pgmpy使用
安装
安装pip
sudo apt-get install python-pip
安装依赖包
pip install networkx pip install numpy pip install scipy pip install pandas pip install pyparsing pip install wrapt
安装pgmpy
pip install pgmpy
测试
在命令行输入 python:
import pgmpy print(pgmpy.__file__)
如果打印的内容类似下图, 说明安装成功:
使用
直观感受
创建文件 test.py, 将以下代码直接拷贝进去.
import networkx as nx
from pgmpy.models import BayesianModel
from pgmpy.factors.discrete import TabularCPD
import matplotlib.pyplot as plt
model = BayesianModel([('D', 'G'), ('I', 'G'), ('G', 'L'), ('I', 'S')])
cpd_d = TabularCPD(variable='D', variable_card=2, values=[[0.6, 0.4]])
cpd_i = TabularCPD(variable='I', variable_card=2, values=[[0.7, 0.3]])
cpd_g = TabularCPD(variable='G',
variable_card=3,
values=[[0.3, 0.05, 0.9, 0.5],
[0.4, 0.25, 0.08, 0.3],
[0.3, 0.7, 0.02, 0.2]],
evidence=['I', 'D'],
evidence_card=[2, 2])
cpd_s = TabularCPD(variable='S',
variable_card=2,
values=[[0.95, 0.2], [0.05, 0.8]],
evidence=['I'],
evidence_card=[2])
cpd_l = TabularCPD(variable='L',
variable_card=2,
values=[[0.1, 0.4, 0.99], [0.9, 0.6, 0.01]],
evidence=['G'],
evidence_card=[3])
model.add_cpds(cpd_d, cpd_i, cpd_g, cpd_l, cpd_s)
print('pinvon', model.check_model())
nx.draw(model,
with_labels=True,
node_size=1000,
font_weight='bold',
node_color='y',
pos={"L": [4, 3], "G": [4, 5], "S": [8, 5], "D": [2, 7], "I": [6, 7]})
plt.text(2, 7, model.get_cpds("D"), fontsize=10, color='b')
plt.text(5, 6, model.get_cpds("I"), fontsize=10, color='b')
plt.text(1, 4, model.get_cpds("G"), fontsize=10, color='b')
plt.text(4.2, 2, model.get_cpds("L"), fontsize=10, color='b')
plt.text(7, 3.4, model.get_cpds("S"), fontsize=10, color='b')
plt.title('test')
plt.show()
在终端输入:
python test.py
最后会在当前目录生成一个图片, eog test.png 就可以对贝叶斯网有一个大概的直观认识了.
Generated by Emacs 25.x(Org mode 8.x)
Copyright © 2014 - Pinvon - Powered by EGO