5

我有一张桌子:

   x   y   z 
A  2   0   3   
B  0   3   0    
C  0   0   4    
D  1   4   0

我想在 Matlab 中计算向量 A、B、C 和 D 之间的 Jaccard 相似度。公式为:

在此处输入图像描述

在这个公式中 |x| 和 |y| 表示不为零的项目数。例如 |A| 不为零的项目数为 2,对于 |B| 和 |C| 它是 1,对于 |D| 是2。

|x 与 y 相交| 表示不为零的常见项目的数量。|A 相交 B| 为 0。|A 相交 D| 是 1,因为两者中 x 的值都不为零。

例如:jaccard(A,D)= 1/3=0.33

如何在 Matlab 中实现这一点?

4

1 回答 1

6

Matlab 有一个计算 Jaccard 距离的内置函数:pdist.

这是一些代码

X = rand(2,100);
X(X>0.5) = 1;
X(X<=0.5) = 0;

JD = pdist(X,'jaccard')  % jaccard distance
JI = 1 - JD;             % jaccard index

编辑

不需要统计工具箱的计算

a = X(1,:);
b = X(2,:);
JD = 1 - sum(a & b)/sum(a | b)
于 2013-08-23T10:25:27.820 回答