Matlab上的Jaccard索引产生错误的结果

时间:2014-11-07 10:59:26

标签: matlab similarity

我有以下矩阵

a =

     0    10    10     0     0
     0     5     5     0     0
     1     0     0    50    51
     0     0    10   100   100

我计算Jaccard距离

D = pdist(a,'jaccard');
D =

1.0000    1.0000    0.7500    1.0000    1.0000    1.0000

最后我将距离放在矩阵中

sim = squareform(D)

sim =

     0    1.0000    1.0000    0.7500
1.0000         0    1.0000    1.0000
1.0000    1.0000         0    1.0000
0.7500    1.0000    1.0000         0

jaccard索引计算为"一个减去Jaccard系数,即不同的非零坐标的百分比。" (http://www.mathworks.it/help/stats/pdist.html

第1行和第4行之间的距离是正确的(0.75),而第1行和第2行之间的距离应该是0,而是1,似乎当jaccard相似度为1时,matlab不会执行1-相似度计算。我做错了什么?

1 个答案:

答案 0 :(得分:1)

MATLAB似乎对我而言。

第1行和第2行中的所有非零数字都不同(第1行中它们全部为10,第2行中它们全部为5),因此第1行和第2行的距离应为1。

第1行和第4行中的四个非零数字中有三个不同(10:0,10:10,0:100,0:100),因此第1行和第4行的距离应为0.75。 / p> 关于什么是Jaccard"系数",Jaccard"指数",Jaccard"相似性"似乎存在很多分歧。和Jaccard"距离",哪一个减去另一个。在你引用的句子中,MATLAB的文档并没有帮助,因为它并不明显,无论是"哪个"是指(MATLAB所描述的)Jaccard系数,或者是一个减去Jaccard系数。

在任何情况下,MATLAB文档使用的术语是否正确,函数pdist似乎给出了一致的结果,如果你想要不同的东西,你总是可以减去它输出的任何东西。