我正在寻找一种在 python 中存储和使用条件概率的好方法。
我正在考虑使用pandas
数据框。如果某些条件概率X
是P(X=A|P1=1, P2=1) = 0.2
等P(X=B|P1=2, P2=1) = 0.9
,我会使用数据框
A B
P1 P2
1 1 0.2 0.8
2 0.5 0.5
2 1 0.9 0.1
2 0.9 0.1
P1
并给定和P2
作为系列的边际概率
1 0.4
2 0.6
Name: P1
1 0.7
2 0.3
Name: P2
我想获得 的边际概率系列X
,即系列
A 0.602
B 0.398
Name: X
我可以得到我想要的
X = sum(
sum(
X.xs(i, level="P1")*P1[i]
for i in P1.index
).xs(j)*P2[j]
for j in P2.index
)
X.name="X"
但这并不容易推广到更多的依赖项,第一个xs
有level
和第二个没有之间的不对称看起来很奇怪,并且在使用时像往常一样pandas
我非常确定使用它的技巧和方法会有更好的解决方案。
是pandas
一个很好的工具,我是否应该以另一种方式表示我的数据,以及进行此计算的最佳方法是什么,它本质上是一个索引张量积,在pandas
?