我有以下矩阵
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-相似度计算。我做错了什么?
答案 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
似乎给出了一致的结果,如果你想要不同的东西,你总是可以减去它输出的任何东西。