我有一个简单的二维数据集,我希望以凝聚方式对其进行聚类(不知道要使用的最佳聚类数)。我能够成功对数据进行聚类的唯一方法是为函数提供“maxclust”值。
为简单起见,假设这是我的数据集:
X=[ 1,1;
1,2;
2,2;
2,1;
5,4;
5,5;
6,5;
6,4 ];
当然,我希望这些数据形成 2 个集群。我明白,如果我知道这一点,我可以说:
T = clusterdata(X,'maxclust',2);
并找出哪些点落入每个集群我可以说:
cluster_1 = X(T==1, :);
和
cluster_2 = X(T==2, :);
但不知道 2 个聚类对于这个数据集是最优的,我该如何聚类这些数据?
谢谢
最佳答案
此方法的全部要点在于它表示在层次结构中找到的集群,并且由您决定要获取多少详细信息。
将其视为与树状图相交的水平线,它从 0(每个点都是它自己的簇)开始一直移动到最大值(一个簇中的所有点)。你可以:
- 当您达到预定的簇数 (example) 时停止
- 在给定特定高度值 ( example ) 的情况下手动定位它
- 根据距离标准选择将它放置在簇之间距离太远的地方(即到下一级有很大的跳跃)(example)
这可以通过使用 CLUSTER/CLUSTERDATA 函数的 'maxclust'
或 'cutoff'
参数来完成
关于matlab - Matlab 中的凝聚聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016313/