相似性分析之Jaccard相似系数

Posted 小明在线

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了相似性分析之Jaccard相似系数相关的知识,希望对你有一定的参考价值。

Jaccard, 又称为Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高

公式:

假设arr1 = [11, 2, 3, 8, 10, 0, 2, 0, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0] ,长度为21

假设arr2 = [9, 4, 4, 6, 6, 1, 3, 1, 0, 0, 4, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0],长度为21

则arr1,arr2的公共部分arr_common = [3,0,0,0,1,0,0,0, 0, 0, 0, 0, 0, 0], 长度为14

arr1,arr2的相似度为:14 / (21+21-14) = 0.5

 

 1 def get_Jaccard(arr1,arr2):
 2     common = 0
 3     # 计算公共相似值的个数
 4     for item in arr1:
 5         if item in arr2:
 6             common += 1
 7     if common==0:
 8         return 0
 9     print(common)
10     return float(common/(len(arr1) + len(arr2) - common))
11 
12 a1 = [11, 2, 3, 8, 10, 0, 2, 0, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0]
13 a2 = [9, 4, 4, 6, 6, 1, 3, 1, 0, 0, 4, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0]
14 res = get_Jaccard(a1,a2)
15 print(res)

测试结果:

 

以上是关于相似性分析之Jaccard相似系数的主要内容,如果未能解决你的问题,请参考以下文章

metric笔记:Jaccard 相似系数&Jaccard距离

用矩阵计算Jaccard相似系数

SQL Server计算Jaccard系数—sim(i,j)

文本相似度计算(一):距离方法

几种相似性/距离(杰卡德距离和余弦距离)与其matlab实现

Jaccard相关系数和Tanimoto系数