我不是统计和数据分析方面的专家,因此我无法理解我获得的行为是否正确。我在这里寻求你的帮助。
假设我有这些我希望聚类的样本(平面中的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)
)
现在我想根据附加到树节点的距离来提取簇。
假设我的距离为150
,我希望通话
T = cluster(Z,'Cutoff',150);
返回2
个群集。但它只给我一个(我想),即
T =
1
1
1
1
1
1
1
1
1
1
我错过了什么?
答案 0 :(得分:1)
使用inconsistent(Z,150)
并查看第4列中的值。增加一个小正数的截止值沿着树步进。
E.g。
cluster(Z,'cutoff',0.7)
没有给你你想要的东西(我认为)
但是
cluster(Z,'cutoff',0.8)
确实
答案 1 :(得分:1)
cluster
的 标准 默认为不一致('inconsistent'
)。
由于dendrogram
中的高度距离,您可以将 标准 更改为'distance'
,
即:
T = cluster(Z, 'Cutoff', 150, 'criterion', 'distance');