我试图用pgmpy Python package来学习一组状态之间的转移概率,但是当我拟合模型时,我发现条件概率是不正确的。在
作为这类问题的一个非常简化的例子,考虑由两个状态a和B组成的Bayesian网络,从a到B有一条有向边。假设我们已经观察到,当a为0时,B为1,当a为1时,B为0。通过描述以下情况:
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.0 | 1.0 |
+------+------+------+
| B(1) | 1.0 | 0.0 |
+------+------+------+
有人能给我解释一下这里发生了什么事吗?这是一个非常基本的例子,我觉得我快疯了。谢谢
可通过
pip
安装的pgmpy版本有一个错误,导致它错误地计算条件概率。从git克隆dev存储库并手动安装它可以解决这个问题。感谢@lstbl在这里解决了这个问题:https://stats.stackexchange.com/questions/292738/inconsistencies-between-conditional-probability-calculations-by-hand-and-with-pg相关问题 更多 >
编程相关推荐