python - 如何在 Python 中创建共现矩阵?
问题描述
我有一个N
列数据框。数据框中的每个元素都在范围0
, 中N-1
。
例如,我的数据帧可以是(N=3
):
A B C
0 0 2 0
1 1 0 1
2 2 2 0
3 2 0 0
4 0 0 0
我想创建一个大小为 N x N 的共现矩阵(如果有不同的标准名称,请纠正我),其中每个元素 ij 包含元素 i 和 j 假定相同值的次数。
A B C
A x 2 3
B 2 x 2
C 3 2 x
其中,例如,matrix[0, 1]
表示 A 和 B 假设相同的值 2 次。我不在乎对角线上的值。
最聪明的方法是什么?
解决方案
DataFrame.corr
我们可以定义一个自定义的可调用函数来计算数据帧的列之间的相关性,该可调用函数将两个 1D numpy 数组作为其输入参数,并返回这两个数组中元素彼此相等的次数的计数
df.corr(method=lambda x, y: (x==y).sum())
A B C
A 1.0 2.0 3.0
B 2.0 1.0 2.0
C 3.0 2.0 1.0