2010-06-14 410 views
9

我想在一个非常大的矩阵上做一些k-means聚类。非常大的稀疏矩阵R中的k-均值聚类?

该矩阵大约500000行×4000列但非常稀疏(每行只有几个“1”值)。

整件事不适合内存,所以我把它转换成一个稀疏的ARFF文件。但是R显然无法读取稀疏的ARFF文件格式。我也有数据作为一个普通的CSV文件。

在R中有没有可用于加载这种稀疏矩阵的包?然后,我将使用集群包中的常规k-means算法继续。

非常感谢

+0

感谢您的回答! 虽然我得到了另一个问题:-)我试图运行bigkmeans群集数量约为2000例如“clust < - bigkmeans(mymatrix,centers = 2000)” 但是,我得到以下错误: 错误1:(10 + 2^k):结果将是一个向量太长 有人可能会给我一个提示,我在做什么错在这里? 谢谢! – movingabout 2010-06-18 07:49:58

+1

原文http://stackoverflow.com/questions/3177827/clustering-on-very-large-sparse-matrix – 2011-12-20 20:04:23

回答

13

bigmemory包(或现在家庭包 - 看到他们website)使用k均值作为大型数据运行示例扩展分析的。特别参见包含k-means功能的子包biganalytics

+0

对于大内存+1,我不知道他们有这么多的包。 – richiemorrisroe 2011-06-03 20:34:04

+0

是的,bigmemory包中的read.data.matrix()函数支持1个原子数据类型。 – 2014-06-13 16:21:36

1

请检查:

library(foreign) 
?read.arff 

干杯。

0

R有一个特殊的SparseM软件包,可以高效地保存它。如果这不起作用,我会尝试使用更高性能的语言,例如C.

1

sparkcl执行稀疏层次聚类和稀疏k-均值聚类 这应该是适合R适用的(如此适合内存)矩阵。

http://cran.r-project.org/web/packages/sparcl/sparcl.pdf

==

对于真正的大矩阵,我会尝试与Apache的解决方案星火稀疏矩阵,并MLlib - 还在,不知道现在怎么样的实验:

https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.linalg.Matrices $

https://spark.apache.org/docs/latest/mllib-clustering.html