Tôi đang tìm một cách tốt để lưu trữ và sử dụng xác suất có điều kiện trong python.Xác suất nhân tensor bằng cách sử dụng pandas.DataFrame
Tôi đang nghĩ đến việc sử dụng khung dữ liệu pandas
. Nếu xác suất có điều kiện của một số X
là P(X=A|P1=1, P2=1) = 0.2
, P(X=B|P1=2, P2=1) = 0.9
vv, tôi sẽ sử dụng dataframe
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
và đưa ra xác suất biên của P1
và P2
như Dòng
1 0.4
2 0.6
Name: P1
1 0.7
2 0.3
Name: P2
Tôi muốn để có được những Hàng loạt xác suất biên của X
, tức là chuỗi
A 0.602
B 0.398
Name: X
.210
tôi có thể có được những gì tôi muốn bằng cách
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"
nhưng điều này là không dễ dàng khái quát hóa để phụ thuộc hơn, không đối xứng giữa xs
đầu tiên với level
và thứ hai mà không trông lạ và như thường lệ khi làm việc với pandas
tôi m rất chắc chắn rằng có một giải pháp tốt hơn bằng cách sử dụng thủ thuật và phương pháp của nó.
Có phải là pandas
một công cụ tốt cho điều này, và cách tốt nhất để thực hiện phép tính này là sản phẩm tensor được lập chỉ mục, trong pandas
?