pgmpy 返回不正确的条件概率

pgmpy returning incorrect conditional probabilities

我正在尝试使用 pgmpy Python package 来学习一组特定状态之间的转换概率,但是当我拟合模型时,我发现条件概率不正确。

作为我正在谈论的这类问题的一个非常简化的例子,考虑由两个状态 A 和 B 组成的贝叶斯网络,具有从 A 到 B 的单个有向边 运行。并且假设我们已经观察到只要 A 为零,B 就为一,而只要 A 为一,B 就为零。描述这种情况的代码由:

import pandas as pd
from pgmpy.models import BayesianModel

data = pd.DataFrame(data={'A': [0, 0, 1, 1, 1, 1], 'B': [1, 1, 0, 0, 0, 0]})
model = BayesianModel([('A', 'B')])
model.fit(data)

然而,当我们通过调用 model.cpds[1] 检查拟合条件概率时,我们发现 pgmpy 已经学习了以下内容:

+------+------+------+
| A    | A(0) | A(1) |
+------+------+------+
| B(0) | 0.5  | 0.5  |
+------+------+------+
| B(1) | 0.5  | 0.5  |
+------+------+------+

什么时候应该学会

+------+------+------+
| A    | A(0) | A(1) |
+------+------+------+
| B(0) | 0.0  | 1.0  |
+------+------+------+
| B(1) | 1.0  | 0.0  |
+------+------+------+

有人可以向我解释一下这是怎么回事吗?这是一个极其基础的例子,感觉自己要疯了。谢谢

可通过 pip 安装的 pgmpy 版本有一个错误,导致它无法正确计算条件概率。从 git 克隆开发存储库并手动安装它可以解决此问题。感谢@lstbl 在这里解决这个问题:https://stats.stackexchange.com/questions/292738/inconsistencies-between-conditional-probability-calculations-by-hand-and-with-pg