matlab - 如何在matlab中获取jaccard相似度

标签 matlab similarity

我有一张 table :

   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

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

|x 与 y 相交|表示不为零的公共(public)项目的数量。 |A相交B|为 0。|A 与 D| 相交为1,因为两者中x的值都不为零。

例如:杰卡德(A,D)= 1/3=0.33

我如何在 Matlab 中实现它?

最佳答案

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)

关于matlab - 如何在matlab中获取jaccard相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18396223/

相关文章:

python - 在Python中测量两个RGB图像之间的相似性

hadoop - hadoop 中的交叉积和阅读标题

matlab - 在 MATLAB 中的数组中插入十六进制值

matlab - 如何减去单位正方形外的椭圆面积?

multithreading - 不能将核心 i7 中的所有 8 个核心用于 matlab

matlab - 连接并从元胞数组中提取数据

python - 如何查找两行数据之间的相似性

similarity - minhash 比 simhash 有什么优势?

mysql - 如何找到相似的结果并按相似度排序?

matlab - 使用 MATLAB Function 模块进行几何变换