贝叶斯网络在Python例子
时间: 2023-11-05 10:16:52 浏览: 41
好的,下面给你一个简单的贝叶斯网络的Python例子,使用pgmpy库来构建和分析贝叶斯网络:
``` python
from pgmpy.models import BayesianModel
from pgmpy.factors.discrete import TabularCPD
# 定义变量和因子
model = BayesianModel([('A', 'C'), ('B', 'C')])
cpd_a = TabularCPD('A', 2, [[0.7], [0.3]])
cpd_b = TabularCPD('B', 2, [[0.8], [0.2]])
cpd_c = TabularCPD('C', 2, [[0.1, 0.2, 0.3, 0.4], [0.9, 0.8, 0.7, 0.6]],
evidence=['A', 'B'], evidence_card=[2, 2])
model.add_cpds(cpd_a, cpd_b, cpd_c)
# 进行概率推断
from pgmpy.inference import VariableElimination
infer = VariableElimination(model)
q = infer.query(['C'])
print(q['C'])
# 输出结果:+-----+---------+
# | C | phi(C)|
# +=====+=========+
# | C_0 | 0.5230 |
# +-----+---------+
# | C_1 | 0.4770 |
# +-----+---------+
```
这个例子中,我们定义了三个变量A、B、C,其中A和B是父节点,C是子节点。然后我们定义了三个TabularCPD因子,分别对应于A、B、C的概率分布。最后,我们使用add_cpds方法将这三个因子加入到模型中。
接下来,我们使用VariableElimination进行概率推断,查询变量C的概率分布。最后输出结果,可以看到C的概率分布为C_0的概率为0.5230,C_1的概率为0.4770。
这个例子只是一个简单的示例,实际应用中,我们可以使用更复杂的贝叶斯网络模型,例如用于医学诊断、金融风险分析等领域。