在蟒蛇中的Jaccard相似度

时间:2017-07-27 09:50:45

标签: python-2.7 scikit-learn similarity

我试图找到两个文件之间的jaccard相似性。但是,我很难理解函数sklearn.metrics.jaccard_similarity_score()在幕后的作用。根据我的理解,Jaccard的sim =文档中术语的docs / union中的术语的交集。

考虑以下示例: 我的两个文件的DTM是:

array([[1, 1, 1, 1, 2, 0, 1, 0],
       [2, 1, 1, 0, 1, 1, 0, 1]], dtype=int64)

以上功能。给我jaccard sim分数

print(sklearn.metrics.jaccard_similarity_score(tf_matrix[0,:],tf_matrix[1,:]))
0.25

我试图以自己的方式找到分数:

intersection of terms in both the docs = 4
total terms in doc 1 = 6
total terms in doc 2 = 6
Jaccard = 4/(6+6-4)= .5

有人可以帮助我了解我是否遗漏了一些明显的东西。

2 个答案:

答案 0 :(得分:0)

如上所述here

  

在二元和多类分类中,Jaccard相似系数得分等于分类准确度。

因此,在您的示例中,它是计算匹配元素的比例。这就是为什么你得到0.25的结果。

答案 1 :(得分:0)

  

据我

     

两个文档中的术语相交= 2。

     

根据各自的索引窥视相交。由于我们需要预测模型的正确值。

     

Normal Intersection =4。离开索引的顺序。

# so,
jaccard_score = 2/(6+6-4) = 0.25