2013-08-23 35 views
5

Jaccard相似我有一個表:如何獲取在Matlab

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

我要計算在Matlab中Jaccard相似,載體A,B,C和D之間 的公式爲:

enter image description here

在這個公式| x |和| y |表示不是零的項目的數量。例如| A |非零的項目數是2,因爲| B |和| C |它是1,而| D |它是2.

| x intersect y |表示不是零的通用項目的數量。 |相交B |是0. |相交D |是1,因爲兩者中的x的值不爲零。

例如爲:的Jaccard(A,d)= 1/3 = 0.33

如何可以在Matlab實現此?

+0

@nkjt謝謝你的計算。 – sima412

回答

5

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) 
+1

+1會提示相同(儘管它需要統計工具箱)。 – nkjt

+0

a,b是否合乎邏輯? –

+0

@Try硬不一定,但'JD = pdist(rand(2,100),'jaccard')'是'1',這是一種非信息! – marsei