如何在matlab中获得jaccard相似度

sim*_*412 5 matlab similarity

我有一张桌子:

   x   y   z 
A  2   0   3   
B  0   3   0    
C  0   0   4    
D  1   4   0
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

| x相交y | 表示不为零的公共项目数.| A交叉B | 是0. |相交D | 是1,因为两者中x的值都不为零.

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

我怎样才能在Matlab中实现它?

mar*_*sei 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
Run Code Online (Sandbox Code Playgroud)

编辑

不需要统计工具箱的计算

a = X(1,:);
b = X(2,:);
JD = 1 - sum(a & b)/sum(a | b)
Run Code Online (Sandbox Code Playgroud)