14

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

  1. 我需要指定我自己的距离函数,现在是皮尔逊系数。

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

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

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

那么在 R 中是否有一些简单的方法来进行满足我的要求的 kmeans 聚类?

4

1 回答 1

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>
于 2011-09-23T12:25:40.780 回答