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

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

你可能感兴趣的:(好用的工具,踩过的一些坑)