R中两种不同算法映射聚类结果

Mapping of Cluster result by two different algorithm in R

我通过两种不同的算法将 iris 数据集聚类成 3 个聚类。他们都提供了 3 个集群——1、2 和 3。虽然目视检查表明映射“1 -> 3”、“2 -> 2”和“3 -> 1”

有没有办法以编程方式映射以下两个结果?

ClustersByMethod1 <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,3,3,3,3,2,3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,3,2,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,3,3,3,2,3,3,3,2,3,3,2)

ClustersByMethod2 <- c(3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,1,1,1,2,1,1,1,1,1,1,2,2,1,1,1,1,2,1,2,1,2,1,1,2,2,1,1,1,1,1,2,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,2)

总的来说,这不是一个简单的问题。

如果您计算两个向量之间的相关性,您的视觉检查会转化为具有高相关性的矩阵,但接近 1 的值不在对角线上。因此,您正在搜索例如第二个向量的值的排列,以在对角线上获得最大权重(i.e.the 接近 1 的高值)。这对于 3 个集群来说很容易,但对于更多数量的集群来说并不容易。

有解决这个问题的方法(通常是 'hungarian' 算法或 Munkres-Kuhn),但我不知道 R 中的实现。

希望对您有所帮助。