2014-07-03 90 views
0

標記葉的樹狀圖的一般方法示here自定義標記簇(葉)在樹狀圖中MATLAB

由於我有一個大的數據集,我希望標記更高的簇,而不是單一的數據點。例如,如果一個集羣有12個數據點,其中7個來自「Lable1」,我想將該集羣標記爲「Label1」。換句話說,我要畫出一棵樹,預定義的集羣:

LargeDataSet = [...]; % some m x n data matrix 
dataLabel = [...]; % m x 1 vector labeling each row of LargeDataSet  
N = 10; % number of clusters I want 
tree = linkage(LargeDataSet,'average'); 
LabelVector = ?; % I don't know how to create this vector 
dendrogram(tree,N,'Label',LabelVector); 

基本上我想知道如何創建一個從「樹」「LabelVector」,使得LabelVector每個標籤是標籤從「dataLabel」說在該羣集中最大或最多發生。

感謝您閱讀所有的方式!我知道這可能不是我問題的最佳描述。

回答

0

好,我已經想通了:

LargeDataSet = [...]; % some m x n data matrix 
dataLabel = [...]; % m x 1 vector labeling each row of LargeDataSet  
N = 10; % number of clusters I want 
tree = linkage(LargeDataSet,'average');  
[H,T,outperm]=dendrogram(tree,N); % H gives the distances and T labels each data point to a cluster 
L={}; 
    for i = 1:N 
     A = find(T==i); 
     B = H(A); 
     [aa,~,cc] = unique(B);dd=mode(cc); 
     L = cat(1,L,B(dd(1))); 
    end 
ind = str2num(get(gca,'XTickLabel')); 
set(gca, 'XTickLabel',L(ind))