我试图“解开”包含某些聚类的质心的矩阵的行,这些聚类的质心与将样本分配给聚类的顺序不同。最初,我比较了均值数据点和聚类中心之间距离的绝对值,并分配了距离最小的行的索引。当然,我不允许有重复的索引。它工作得很好但是对称值引起了一个问题(即,由于距离的绝对值,镜像簇没有正确排序)。此外,我试图根据差异对它们进行排序,但没有按预期工作。我一直在查看order()和sort()函数,并找到了一个不起作用的例子。
order(mean)
order(mean)[centers]
sort(order(mean)[centers])
mean[sort(order(mean)[centers])]
我也试过了
apply(mean==centers,1,all)
但当然在任何地方都会返回FALSE。
矩阵样本:
means <- c(0.055190097, 0.032412395, 0.015372307, -0.008012372,
-0.018736792, -0.078138715, -0.058707713, -0.044020629,
-0.023750329, -0.014402083, -0.069920581, -0.064429216,
-0.059913345, -0.052302253, -0.047874074, 0.050557395,
0.047246979, 0.044577065, 0.040384336, 0.038140009,
0.114954601, 0.108110051, 0.102531680, 0.093341425, 0.088140310)
dim(means) <- c(5,5)
means <- t(means)
centers <- c(-0.038754, -0.021588,-0.008851, 0.008579, 0.016579,
0.018371, 0.006095, -0.003026, -0.015537, -0.021286,
-0.078143, -0.069267, -0.062197, -0.051295, -0.045521,
0.033145, 0.033348, 0.033354, 0.032947, 0.032511,
0.115464, 0.105248, 0.097172, 0.084732, 0.078162)
dim(centers) <- c(5,5)
centers <- t(centers)
例如(使用上面的例子),表示矩阵中的第2行对应于 center 矩阵中的第3行,因为它距离最近(数据点)明智的)。所以,我必须找到意味着中的哪一行与中心中的哪一行相对应(没有重复)。 我的矩阵更大,但这应该足够了 你有什么建议吗? 谢谢
答案 0 :(得分:-1)
好吧,我没有找到任何内置函数来完成这项工作,所以我只是实现了一个递归算法来处理工作..即使它不是R编程的方式,至少它解决了问题。在这个特殊情况下,我可能会补充一个非常讨厌的问题,但现在它正在发挥作用。感谢所有对这个问题表现出兴趣的人。