我使用分层聚类算法将数据集与不同数量的聚类进行聚类。例如,
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
进行比较时合并clusterY
和clusterZ
。由于结果为空,两个簇包含相同的一组数字。如果两者之间存在任何差异,则由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