在pgmpy中,我们可以定义条件分布:
cpd_G = TabularCPD(variable='G', variable_card=2, values=[[0.5, 0.8, 0.75, 0.45],
[0.5, 0.2, 0.25, 0.55]],
evidence=['I', 'D'], evidence_card=[2, 2])
然后在证据变量(例如D)上边缘化:
print(cpd_G.marginalize(variables=['D'], inplace=False))
+------+------+------+
| I | I(0) | I(1) |
+------+------+------+
| G(0) | 0.65 | 0.6 |
+------+------+------+
| G(1) | 0.35 | 0.4 |
+------+------+------+
这是无效的。执行此边缘化的唯一方法是知道边缘概率p(D | I)。然后
p(G | I)=积分_over_D(P(G | D,I)* p(D | I)
在我们的案例中,我们尚未定义p(D | I),但该包装似乎认为p(D = 0 | I)= 0.5,p(D = 1 | I)= 0.5
有什么我想念的吗?