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 中的实现。
希望对您有所帮助。
我通过两种不同的算法将 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 中的实现。
希望对您有所帮助。