如何为R中的kmeans指定距离度量?

Der*_*ang 14 r cluster-analysis k-means

我在R中进行kmeans聚类有两个要求:

  1. 我需要指定我自己的距离函数,现在它是Pearson Coefficient.

  2. 我想做使用平均组成员作为质心的聚类,而不是一些实际的成员.这个要求的原因是我认为使用平均值作为质心比使用实际成员更有意义,因为成员总是不在真正的质心附近.如果我错了,请纠正我.

首先我尝试了包中的kmeans函数stat,但是这个函数不允许自定义距离方法.

然后我pamcluster包中找到了功能.该pam函数允许通过将dist对象作为参数来允许自定义距离度量,但在我看来,通过这样做,它将实际成员作为质心,这不是我所期望的.因为我认为它不能用距离矩阵进行所有距离计算.

那么在R中有一些简单的方法可以完成满足我要求的kmeans聚类吗?

rcs*_*rcs 17

检查flexclust包裹:

主函数kcca实现了k-质心聚类分析的一般框架,支持任意距离测量和质心计算.

该软件包还包括一个功能distCor:

R> flexclust::distCor
function (x, centers) 
{
    z <- matrix(0, nrow(x), ncol = nrow(centers))
    for (k in 1:nrow(centers)) {
        z[, k] <- 1 - .Internal(cor(t(x), centers[k, ], 1, 0))
    }
    z
}
<environment: namespace:flexclust>
Run Code Online (Sandbox Code Playgroud)

  • 作为 R 菜鸟,我也花了一段时间才弄清楚如何查看 `res` 有哪些属性(使用 `attributes(res)` 确定,使用 `attr(res, 'second')` 访问一个。 (2认同)