我有一张表格:
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相似度,公式如下:
![enter image description here](https://istack.dev59.com/gL3oV.webp)
例如:jaccard(A,D)= 1/3=0.33
如何在Matlab中实现此功能?
我有一张表格:
x y z
A 2 0 3
B 0 3 0
C 0 0 4
D 1 4 0
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)
JD = pdist(rand(2,100),'jaccard')
是1
,有点不具信息性! - marseiX = randi(10,[2,100]);
。 - nkjt