2010-06-14 414 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