欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pandas一行代码计算相关性矩阵的条件概率

程序员文章站 2022-03-08 16:46:27
...

pandas一行代码计算相关性矩阵的条件概率


计算A列各属性发生时B列各属性发生的概率
一行代码:

pB_A = pd.crosstab(df['A'], df['B'], margins=True).apply(lambda x:x/x[-1], axis=1)

下面举个例子帮助理解
例子:
计算:P(B|A) = P(AB)/P(A)

import pandas as pd
# 创建数据集
data=[
    [0,1],
    [0,1],
    [1,2],
    [1,2],
    [2,3],
    [2,3],
    [0,3],
    ]
df = pd.DataFrame(data, columns=['A', 'B'])
#计算类别的先验概率,可以计算P(A),或者P(B)
pA = df['A'].value_counts()/df['A'].size
print(pA)

输出pA,即P(A):

0    0.428571
2    0.285714
1    0.285714
# 计算条件概率只需要下面一行
# 比如计算事件A发生时B各属性值发生的概率,P(B|A)
pB_A = pd.crosstab(df['A'], df['B'], margins=True).apply(lambda x:x/x[-1], axis=1)
print(pB_A)

输出P(B|A):

B           1         2         3  All
A                                     
0    0.666667  0.000000  0.333333  1.0
1    0.000000  1.000000  0.000000  1.0
2    0.000000  0.000000  1.000000  1.0
All  0.285714  0.285714  0.428571  1.0