0

k-centroid 聚类函数将数值数据矩阵作为输入。但是,我这里只有距离矩阵,我认为 k-centroid 算法确实适用于距离矩阵。

摘自官方文档

用法

library(flexclust)
kcca(x, k, family=kccaFamily("kmeans"), weights=NULL, group=NULL,
     control=NULL, simple=FALSE)

论据

x    A numeric matrix of data, or an object that can be coerced to such a matrix (such as a numeric vector or a data frame with all numeric columns).

具体来说,我需要将一个距离矩阵发送到这个 kcca() 函数中。但是从书上看,它需要数据矩阵。

更新

任务

对二进制矩阵的行进行聚类。每行代表一个用户。

数据

原始数据是这样的 10^5 * 10^5 二进制矩阵

   1  2  3  4  5  6  7  8 ... 10^5
 _________________________
1| 0  0  1  0  1  1  1  0
2| 0  1  1  0  1  1  1  0
3| 0  0  0  1  0  1  1  0
4| 0  1  1  1  0  1  1  0
.
.
.
10^5

R 处理起来太大了,我的兴趣在于行聚类,所以我在 Java 中计算行距离并生成一个距离矩阵供 R 读取。

   1  2  3  4 ...
  ---------------
2| 2  
3| 1  3
4| 3  2  5
.
.
.

那么问题是, R中的K-centroid函数采用原始数据矩阵而不是距离矩阵。

我希望这个更新有所帮助。

4

1 回答 1

3

K-centroids 需要能够计算centroids

您可能想改用k-medoidsPAM

http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/pam.html

在这里,集群由每个原始数据向量的中心对象表示(“medoid”,类似于中值;但基于距离),而不是 k-means / k-centroids 中的平均向量(“centroid”) .

于 2013-07-29T07:52:13.683 回答