2010-06-14 6 views
9

J'essaie de faire du clustering k-means sur une très grande matrice.k-signifie la mise en grappes dans R sur une très grande matrice clairsemée?

La matrice est d'environ 500000 lignes x 4000 cols mais très clairsemée (seulement quelques valeurs "1" par ligne). Le tout ne rentre pas dans la mémoire, donc je l'ai converti en un fichier ARFF clairsemé. Mais R évidemment ne peut pas lire le format de fichier clairsemé ARFF. J'ai aussi les données sous la forme d'un simple fichier CSV.

Y a-t-il un paquet disponible en R pour charger efficacement de telles matrices creuses? J'utiliserais alors l'algorithme normal k-means du paquet cluster pour continuer.

Un grand merci

+0

Merci pour la réponse! J'ai une autre question cependant :-) J'essaye de lancer bigkmeans avec un nombre de cluster d'environ 2000 par exemple "clust <- bigkmeans (mymatrix, centres = 2000)" Cependant, j'obtiens l'erreur suivante: Erreur dans 1: (10 + 2^k): le résultat serait un vecteur trop long Quelqu'un peut-il me donner un indice de ce que je fais de mal ici? Merci! – movingabout

+1

Original à http://stackoverflow.com/questions/3177827/cluster-on-very-large-sparse-matrix –

Répondre

13

Le paquet bigmemory (ou maintenant la famille des colis - voir leurs website) utilisés k-means comme par exemple l'exécution d'analyses étendues sur de grandes données. Voir en particulier le sous-paquet biganalytics qui contient la fonction k-means.

+0

+1 pour une grande mémoire, je n'avais aucune idée qu'ils avaient autant de paquets. – richiemorrisroe

+0

Oui et la fonction read.data.matrix() du package bigmemory prend en charge 1 type de données atomique. –

1

S'il vous plaît vérifier:

library(foreign) 
?read.arff 

Vive.

0

Il existe un paquet spécial SparseM pour R qui peut le contenir efficacement. Si cela ne fonctionne pas, j'essaierais d'utiliser un langage plus performant, comme C.

1

sparkcl effectue un clustering clairsemé et un clustering de k-means clairsemé Ceci devrait être bon pour R-convenable (s'intégrant dans la mémoire)) matrices.

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

==

Pour les matrices vraiment grand, je voudrais essayer une solution avec Apache Spark matrices creuses et MLlib - encore, ne sais pas comment il est maintenant expérimental:

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

Questions connexes