2010-06-14 7 views
9

Sto provando a fare qualche k-means in cluster su una matrice molto grande.k-significa il clustering in R su una matrice molto grande e sparsa?

La matrice è di circa 500000 righe x 4000 colonne ma molto sparse (solo un paio di valori "1" per riga).

Il tutto non si adatta alla memoria, quindi l'ho convertito in un file ARFF sparsi. Ma ovviamente R non può leggere il formato di file ARFF sparsi. Ho anche i dati come un semplice file CSV.

Esiste un pacchetto disponibile in R per caricare in modo efficiente tali matrici sparse? Vorrei quindi utilizzare l'algoritmo k-means normale dal pacchetto cluster per procedere.

Grazie

+0

Grazie per la risposta! Ho un'altra domanda però :-) Sto cercando di eseguire bigkmeans con un numero cluster di circa 2000 ad esempio "clust <- bigkmeans (mymatrix, centres = 2000)" Tuttavia, viene visualizzato il seguente errore: Errore in 1: (10 + 2^k): il risultato sarebbe un vettore troppo lungo Qualcuno potrebbe darmi un suggerimento su cosa sto facendo male qui? Grazie! – movingabout

+1

Originale all'indirizzo http://stackoverflow.com/questions/3177827/clustering-on-very-large-sparse-matrix –

risposta

13

Il pacchetto bigmemory (o società famiglia dei colli - vedere le loro website) utilizzati k-means la corsa esempio di analisi estese su grandi dati. Vedi in particolare il sottoprogetto biganalytics che contiene la funzione k-means.

+0

+1 per la memoria grande, non avevo idea che avessero così tanti pacchetti. – richiemorrisroe

+0

Sì e la funzione read.data.matrix() dal pacchetto bigmemory supporta 1 tipo di dati atomici. –

1

Si prega di verificare:

library(foreign) 
?read.arff 

Cin cin.

0

C'è un pacchetto SparseM speciale per R che può trattenerlo in modo efficiente. Se ciò non funziona, proverei ad usare un linguaggio con prestazioni più elevate, come C.

1

sparkcl esegue il clustering gerarchico sparse e il cluster sparse k-means Questo dovrebbe essere buono per R-adatto (così - adattandosi alla memoria) matrici.

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

==

Per veramente grandi matrici, vorrei provare una soluzione con Apache Spark matrici sparse, e MLlib - ancora, non so come sperimentale è ora:

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