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函数接受原始数据矩阵而不是距离矩阵。
我希望此更新有所帮助。
答案 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-质心。