二进制分类数据标志可视化的重叠

问题描述 投票:0回答:1

假设我有一个这样的数据框:

df['A'] = 1 or 0
df['B'] = 1 or 0
df['C'] = 1 or 0

我想像这样在 X 轴和 Y 轴上生成具有相同标签的特征之间的重叠图

A  1 .4 .2 .1
B .1 1 .3 .4
C .4 .2 1 .5
D .1 .3 .7 1
   A  B  C D

显然,对角线将为 100%。对于 A B 和 B A,这些数字会有所不同,因为分母是那些有 A 的人,有多少人有 B 有多少人有 B 有多少人有 A.

我想我知道如何在视觉上制作这个,但不确定如何通过计算实际创建系列。

python pandas dataframe plot binary
1个回答
0
投票

这是矩阵乘法,然后除以列的总和:

# sample data
np.random.seed(1)
df = pd.DataFrame(np.random.randint(0,2, (10,4)), columns=list('ABCD'))

df.T.dot(df).div(df.sum())

输入:

   A  B  C  D
0  1  1  0  0
1  1  1  1  1
2  1  0  0  1
3  0  1  1  0
4  0  1  0  0
5  0  1  0  0
6  1  0  0  0
7  1  0  0  0
8  1  1  1  1
9  1  0  0  0

输出:

          A         B         C         D
A  1.000000  0.500000  0.666667  1.000000
B  0.428571  1.000000  1.000000  0.666667
C  0.285714  0.500000  1.000000  0.666667
D  0.428571  0.333333  0.666667  1.000000
© www.soinside.com 2019 - 2024. All rights reserved.