我正在使用分层聚类算法将我的数据集与不同数量的聚类聚类。例如,
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还是一个陌生的问题。
答案 0 :(得分:1)
您可以使用setxor
来识别两个群集之间的任何差异。与union
比较时,用户clusterY
合并clusterZ
和clusterB
。由于结果为空,因此两个聚类包含相同的数字集。如果两者之间有任何差异,它将由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