Poszukuję dobrego sposobu na przechowywanie i używanie warunkowych prawdopodobieństw w pythonie.Mnożenie tensora prawdopodobieństwa za pomocą pandas.DataFrame
Zastanawiam się, czy użyć ramki danych pandas
. Jeśli warunkowe prawdopodobieństwa jakiegoś X
są P(X=A|P1=1, P2=1) = 0.2
, P(X=B|P1=2, P2=1) = 0.9
itd, chciałbym użyć 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
i podane marginalnych prawdopodobieństw P1
i P2
jako Series
1 0.4
2 0.6
Name: P1
1 0.7
2 0.3
Name: P2
Chciałbym, by otrzymać Seria marginalnych prawdopodobieństw X
, czyli seria
A 0.602
B 0.398
Name: X
mogę dostać to, co chcę przez
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"
ale nie jest łatwo uogólnić na większą zależności, asymetria pomiędzy pierwszym xs
z level
a drugi bez wygląda dziwnie i jak zwykle przy pracy z pandas
I Jestem pewien, że istnieje lepsze rozwiązanie, wykorzystujące jego sztuczki i metody.
Czy jest to dobre narzędzie do tego, czy powinienem reprezentować moje dane w inny sposób i jaki jest najlepszy sposób wykonania tych obliczeń, który jest w istocie indeksowany tensor produktu, w pandas
?