在树形图中标记叶子的一般方法显示为here
由于我有一个大型数据集,我想标记更高的集群而不是单个数据点。例如,如果一个集群有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 :(得分: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))