在matlab中连接层次簇的根及其子簇



我使用分层聚类算法将数据集与不同数量的聚类进行聚类。例如,

a= [1;2;3;4;5;20;21;22;28;29]
Z=linkage(a,'ward')
[clusterIndexes]=cluster(Z,'maxclust',2)

这个片段将数据分为两个,第一个集群包含1,2,3,4,5。让我们把这个集群称为A,第二个集群持有20,21,22,28,29,这就是集群B。

当我运行以下脚本并将数据集群到3 中时

a= [1;2;3;4;5;20;21;22;28;29]
Z=linkage(a,'ward')
[clusterIndexes]=cluster(Z,'maxclust',3)

它给出了(1 2 3 4 5(=簇X,(20,21,22(=簇Y,(28,29(=簇Z的簇。

我如何以编程方式演示集群B分裂为集群Y和集群Z?

对不起,我对matlab很陌生。

您可以使用setxor来识别两个集群之间的任何差异。用户union在与clusterB进行比较时合并clusterYclusterZ。由于结果为空,两个簇包含相同的一组数字。如果两者之间存在任何差异,则由setxor输出。

clusterB = [20 21 22 28 29];
clusterY = [20 21 22];
clusterZ = [28 29];
setxor(clusterB, union(clusterY, clusterZ))
ans =
1×0 empty double row vector

例如,假设clusterB有一个额外的数字,您可以看到下面的结果。

clusterB = [5 20 21 22 28 29];
setxor(clusterB, union(clusterY, [clusterZ]))
ans =
5

相关内容

  • 没有找到相关文章

最新更新