我有下面的矩阵
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 0jaccard指数被计算为“1减去Jaccard系数,这是不同的非零坐标的百分比”(http://www.mathworks.it/help/stats/pdist.html)。
第1行到第4行之间的距离是正确的(0.75),而第1行和第2行之间的距离应该是0,而不是1。当jaccard相似度为1时,matlab似乎不执行1-相似计算。我做错了什么?
发布于 2014-11-07 11:20:24
MATLAB对我来说是对的。
第1行和第2行中的所有非零数都不同(在第1行它们都是10,在第2行它们都是5),所以第1行和第2行的距离应该是1。
第1行和第4行中的4个非零数字中有3个不同(10:0、10:10、0:100、0:100),因此第1行和第4行的距离应为0.75。
对于Jaccard的“系数”、Jaccard的“指数”、Jaccard的“相似性”和Jaccard的“距离”,似乎存在很多分歧,而后者是减去另一个的。在你引用的句子中,MATLAB的文档没有帮助,因为它并不明显,无论“哪”指(MATLAB描述的) Jaccard系数,还是减去Jaccard系数的1。
在任何情况下,无论MATLAB文档使用的术语是否正确,函数pdist似乎都给出了一致的结果,如果您想要不同的东西,您总是可以取一减去它的输出。
https://stackoverflow.com/questions/26799758
复制相似问题