Sto cercando un buon modo per archiviare e utilizzare le probabilità condizionali in python.Moltiplicazione del tensore di probabilità utilizzando pandas.DataFrame
Sto pensando di utilizzare un dataframe pandas
. Se le probabilità condizionate di alcuni X
sono P(X=A|P1=1, P2=1) = 0.2
, P(X=B|P1=2, P2=1) = 0.9
ecc, vorrei utilizzare il 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
e data la probabilità marginali di P1
e P2
come Serie
1 0.4
2 0.6
Name: P1
1 0.7
2 0.3
Name: P2
vorrei ottenere il Serie di probabilità marginali di X
, ovvero la serie
A 0.602
B 0.398
Name: X
posso ottenere ciò che voglio da
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"
ma questo non è facilmente generalizzabile a più dipendenze, l'asimmetria tra la prima xs
con level
e la seconda, senza sembra strano e come al solito quando si lavora con pandas
I' Sono molto sicuro che ci sia una soluzione migliore usando i suoi trucchi e metodi.
È pandas
un buon strumento per questo, dovrei rappresentare i miei dati in un altro modo, e qual è il modo migliore per fare questo calcolo, che è essenzialmente un prodotto tensoriale indicizzato, in pandas
?