2014-09-03 64 views
0

我具有由4個矢量構成的矩陣A的12個元素的每個使用樹狀MATLAB

A = [ 0   0   0   0; 
    0.0100 0.0100 0.0100   0; 
    0.3000 0.2700 0.2400 0.2400; 
    0.0400   0 0.0200 0.0200; 
    0.1900 0.0400 0.0800 0.0800; 
    0.1600 0.6500 0.2100 0.3800; 
    0.0600 0.0100 0.0300 0.0200; 
    0.1500 0.0100 0.0600 0.1700; 
     0   0   0 0.0800; 
    0.0300   0 0.0200 0.0100; 
    0.0700   0 0.1200 0.0100; 
     0   0 0.2300   0] 

(列)我也有,指出一個矢量多少類似於他人的相似性矩陣分組

SIM =[1.00 0.6400 0.7700 0.8300; 
    0.6400 1.0000 0.6900 0.9100; 
    0.7700 0.6900 1.0000 0.7500; 
    0.8300 0.9100 0.7500 1.0000] 

閱讀本矩陣的行

vetor 1 is similar to vector 2 for 64% 
vector 1 is similar to vector 3 for the 77% 
... 

我想創建一個樹狀圖是s在A中有多少個不同的羣體考慮0.95的相似性閾值(即,如果2組具有相似> 0.7連接它們)

我真的不知道如何使用此功能與我的數據...

回答

1

不知道我的理解正確,您的問題,但對於我所瞭解我會做到這一點:

DSIM = squareform(1-SIM); % convert to a dissimilarity vector 

它給出結果:

% DSIM = 0.3600 0.2300 0.1700 0.3100 0.0900 0.2500 
% DSIM = 1 vs 2 , 1 vs 3 , 1 vs 4, 2 vs 3, 2 vs 4, 3 vs 4 ; 

後,計算聯動:

Z = linkage (DSIM,'average'); % there is other grouping option than average 

您可以繪製與樹狀圖:

dendrogram(Z) 

但是,你要根據閾值,從而分裂組:

c = 0.1; 

這是相異處切斷,在這裏這意味着如果它們具有高於0.9的相似性,則將連接兩個組。

T = cluster(tree,'cutoff',c,'criterion','distance') 

T在這種情況下,其結果是:

T = 
    1 
    2 
    3 
    2 

這意味着,在這個水平上的載體1,2,3,4(稱他們爲ABCD)在3組被組織:

  1. B,d
  2. ç

此外,採用c = 0.3,或0.7的相似性:

T = 1 1 1 1 

所以這裏只有一組。

揹負上樹狀圖就可以計算出組數:

num_grp = numel(unique(T)); 

後:

dendrogram(tree,num_grp,'labels',{'A','B','C','D'}) 

在這種情況下,樹狀,因爲你設置的最大值將不顯示所有組的節點數等於組數。