我有一个带有多个布尔列的熊猫数据框。我想找到所有这些列之间的成对重叠。重叠应该类似于两列之间的重叠比例,不包括两者都为零的情况。就像 Jaccard 分数一样,但我想排除两个元素都为零的情况。
数据框示例:
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.binomial(1, 0.5, size=(100, 5)), columns=list('ABCDE'))
print(df.head())
A B C D E
0 1 1 1 1 0
1 1 0 1 1 0
2 1 1 1 1 0
3 0 0 1 1 1
4 1 1 0 1 0
理想情况下,我想要这样的解决方案(来自这个类似的问题How to compute jaccardsimilarity from a pandas dataframe):
from sklearn.metrics.pairwise import pairwise_distances
jac_sim = pairwise_distances(df.T, metric = "jaccard")
jac_sim = pd.DataFrame(jac_sim, index=df.columns, columns=df.columns)
仅排除两列中的两个元素均为 False 的情况。