我有一张桌子
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 intersect y|表示不为零的公共项个数。|A相交B|为0。|交集D|为1,因为两者中x的值都不为零。
例如: jaccard(A,D)= 1/3=0.33
如何在Matlab中实现这一点?
发布于 2013-08-23 18:25:28
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)https://stackoverflow.com/questions/18396223
复制相似问题