因果贝叶斯网络python代码
时间: 2024-11-24 22:25:21 浏览: 3
因果贝叶斯网络(Causal Bayesian Networks, CBNs)是一种用于建模复杂系统中变量之间因果关系的概率图模型。Python有一些库可以帮助我们处理CBNs,比如`pgmpy`。
以下是一个简单的例子,展示如何使用`pgmpy`库创建并学习因果贝叶斯网络(假设已经安装了`pgmpy`):
```python
from pgmpy.models import CausalBayesianNetwork
from pgmpy.factors.discrete import TabularCPD
# 创建节点和他们的概率表
parents = {'A': [], 'B': ['A'], 'C': ['A', 'B']}
cpd_A = TabularCPD('A', 2, [[0.5], [0.5]]) # A独立随机,0.5是0状态,0.5是1状态
cpd_B = TabularCPD('B', 2, [[0.7, 0.4], [0.3, 0.6]], evidence=['A'], evidence_card=[2])
cpd_C = TabularCPD('C', 2, [[0.8, 0.9, 0.1], [0.2, 0.1, 0.9]], evidence=['A', 'B'], evidence_card=[2, 2])
# 构造CBN模型
cbn_model = CausalBayesianNetwork([('A', []), ('B', ['A']), ('C', ['A', 'B'])])
cbn_model.add_cpds(cpd_A, cpd_B, cpd_C)
# 打印模型结构
print(cbn_model.get_structure())
# 学习模型(如果数据可用)
# data = ... # 假设这是一个包含'A', 'B', 'C'变量的数据集
# cbn_model.fit(data)
# 进行推理,如条件概率P(C=1 | A=1, B=0)
query = cbn_model.query(['C'] | ['A=1', 'B=0'])
print(query['C'])
```
阅读全文