首页 > 解决方案 > 计算 2 个数据帧的每个元素之间的 Jaccard 距离

问题描述

我想计算 2 个数据帧之间的 Jaccard 距离。具体来说,我想使用 CountVectorizer 模型分别计算所有 Google 实体(34000 行,7 列)和所有亚马逊实体(34000 行,7 列)之间的成对 Jaccard 距离。我为每个数据帧创建了一个 countVectorizer,如下所示:

cv = CountVectorizer(analyzer='word', ngram_range=(1,1), stop_words='english', binary=True)
cvGoogle = cv.fit_transform(goog_s)
cvAmazon = cv.fit_transform(amaz_s)

创建 CountVectorizer 后,我需要创建一个数据结构,在其中比较两个向量的每个实体,Jaccard Distance并将其存储在数据框中,其中每一行对应于 Google 数据集中的一个实体,每一列对应于来自亚马逊数据集。

标签: pythonpandasscipydata-science

解决方案


您可以尝试使用sklearn Jaccard distancescipy Jaccard dissimilarity遍历 cols 。

如果要比较两个匹配的实体,则

from scipy.spatial.distance import jaccard

my_df = pd.DataFrame()

# Assuming goog_s & amaz_s to be pd.DataFrame objects
for g_col, a_col in zip(goog_s.columns, amaz_s.columns): 
    my_df.loc[:, '_'.join([g_col, a_col])] = jaccard(goog_s[g_col].tolist(),
        amaz_s[a_col].tolist()) 

推荐阅读