OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  pgmpy 用于概率图模型与贝叶斯网络建模的Python库

pgmpy 用于概率图模型与贝叶斯网络建模的Python库

 
  midjourney ·  2026-03-05 20:47:53 · 5 次点击  · 0 条评论  

PgmPy

Python 概率图模型库
邮件列表:pgmpy@googlegroups.com

依赖项:

Python 3.3
NetworkX 1.8.1
Scipy 0.12.1
Numpy 1.7.1

示例:

student = BayesianModel()
# 实例化一个名为 'student' 的新贝叶斯模型

student.add_nodes('diff', 'intel', 'grade')
# 向 student 添加标签为 'diff', 'intel', 'grade' 的节点

student.add_edges(('diff', 'intel'), 'grade')
# 添加从 'diff' 到 'grade' 和从 'intel' 到 'grade' 的有向边

student.add_states('diff', ('hard', 'easy'))
student.add_rule_for_states('diff', ('easy', 'hard'))
student.add_cpd('diff', [[0.2],[0.8]])
# easy=0.2
# hard=0.8

student.add_states('intel', ('avg', 'dumb', 'smart'))
student.add_rule_for_states('intel', ('dumb', 'avg', 'smart'))
student.add_cpd('intel', [[0.5], [0.3], [0.2]]) 
# dumb=0.5
# avg=0.3
# smart=0.2

student.add_states('grades', ('A','C','B'))
student.add_rule_for_parents('grades', ('diff', 'intel'))
student.add_rule_for_states('grades', ('A', 'B', 'C'))
student.add_cpd('grade',
                [[0.1,0.1,0.1,0.1,0.1,0.1],
                [0.1,0.1,0.1,0.1,0.1,0.1], 
                [0.8,0.8,0.8,0.8,0.8,0.8]]
                )

# diff:       easy                 hard
# intel: dumb   avg   smart    dumb  avg   smart
# gradeA: 0.1    0.1    0.1     0.1  0.1    0.1  
# gradeB: 0.1    0.1    0.1     0.1  0.1    0.1
# gradeC: 0.8    0.8    0.8     0.8  0.8    0.8

student.add_observation(intel.smart, intel.avg, diff.easy)
# 观测参数:学生的智力为 smart 或 avg,且课程难度为 easy

student.remove_observation(intel.smart)
# 移除 intel.smart 的观测,当前观测参数:智力为 avg,难度为 easy

active_trail = student.is_active_trail(grade, intel)
# 如果 grade 和 intel 之间存在活跃路径,则返回 True

updated_cpd = student.observed_cpd('grade')
# 返回上次观测后新的条件概率分布(CPD)二维数组

student.reset()
# 将所有参数设为非观测状态,并将模型重置为初始状态(使用初始用户给定的 CPDs)
5 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 11 ms
Developed with Cursor