r-如何在k-质心聚类中使用距离矩阵



k-质心聚类函数以数字数据矩阵为输入。然而,我这里只有距离矩阵,我认为k-质心算法确实对距离矩阵有效。

根据官方文件

用法

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-质心函数取原始数据矩阵,而不是距离矩阵。

我希望这次更新能有所帮助。

K-质心需要能够计算质心

您可能想使用k-药物,也就是PAM

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

这里,聚类由每个原始数据向量的中心对象表示("medoid",类似于中值;但基于距离),而不是像k-means/k-centroids中那样的平均向量("质心")。

最新更新