2013-03-25 23 views
1

我不是统计和数据分析方面的专家,因此我不明白我获得的行为是否正确。我在这里寻找你的帮助。连锁算法后聚类数据

假设我有这些样本,我想(在平面10点 - 问题的简化版本)集群:

[X Y] = 

266 450 
266 400 
258 168 
290 442 
295 438 
273 432 
294 158 
318 161 
250 423 
253 413 

要聚集他们,我可以用一个簇树

Z = linkage([ X Y ],'complete'); 

,其是(通过dendrogram(Z,10)

enter image description here

现在我想根据附加到树节点的距离来提取聚类。

都说我的距离是150,我希望呼叫

T = cluster(Z,'Cutoff',150); 

返回我2集群。但它只给我一个(我想),即

T = 

1 
1 
1 
1 
1 
1 
1 
1 
1 
1 

我错过了什么?

回答

1

使用inconsistent(Z,150)并查看第4列中的值。增加来自小正数的截断值可以使您沿着树行走。

E.g.

cluster(Z,'cutoff',0.7) 

不给你你想要的东西(我认为)

cluster(Z,'cutoff',0.8) 

一样。

1

标准cluster不一致'inconsistent')由缺省值。

由于dendrogram高度距离,您可以更改标准'distance', 即:

T = cluster(Z, 'Cutoff', 150, 'criterion', 'distance');