在matlab中将层次集群的根与其子链接

时间:2018-11-29 17:56:45

标签: matlab hierarchical-clustering

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

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还是一个陌生的问题。

1 个答案:

答案 0 :(得分:1)

您可以使用setxor来识别两个群集之间的任何差异。与union比较时,用户clusterY合并clusterZclusterB。由于结果为空,因此两个聚类包含相同的数字集。如果两者之间有任何差异,它将由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