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

时间:2013-07-29 05:13:07

标签: r cluster-analysis

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对于proc来说太大了,我的兴趣在于行聚类,所以我用Java计算行距并生成R的距离矩阵来读取。

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

然后问题是,R中的K-centroid函数接受原始数据矩阵而不是距离矩阵。

我希望此更新有所帮助。

1 个答案:

答案 0 :(得分:3)

K-centroids需要能够计算质心

你可能想要使用 k-medoids 又名PAM代替:

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

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