pgmpy返回错误的条件概率

时间:2017-11-03 01:26:36

标签: python probability bayesian-networks pgmpy

我正在尝试使用Segments.Save来学习某组状态之间的转换概率,但是当我拟合模型时,我发现条件概率是不正确的。

作为我正在谈论的那类问题的一个非常简单的例子,考虑贝叶斯网络由两个状态A和B组成,其中一个有向边从A运行到B.并且假设我们已经观察到每当A为零时,B为1,每当A为1时,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  |
+------+------+------+

有人可以向我解释这里发生了什么吗?这是一个非常基本的例子,我觉得我疯了。感谢

1 个答案:

答案 0 :(得分:0)

可通过pip安装的pgmpy版本有一个错误,导致它错误地计算条件概率。从git克隆dev存储库并手动安装它可以解决问题。感谢@lstbl在这里搞清楚这一点:bisect module