2015-09-29 7 views
7

Ich versuche, eine spärliche Matrix in H2O zu bekommen und ich fragte mich, ob das möglich war. Angenommen, wir haben die folgenden:Wie bekomme ich dünn besetzte Matrizen in H2O?

test <- Matrix(c(1,0,0,1,1,1,1,0,1), nrow = 3, sparse = TRUE) 

und unter der Annahme meiner lokalen H2O ist localH2O, ich kann nicht scheinen, folgendes zu tun:

as.h2o(test) 

Es gibt den Fehler: cannot coerce class "structure("dgCMatrix", package = "Matrix")" to a data.frame. Das scheint ziemlich logisch zu sein, aber unter der Annahme, dass der Test so groß ist, dass ich ihn nicht in einen Datenrahmen umwandeln kann, wie soll ich ihn in H2O laden? Bei Verwendung einer dünn besetzten Matrixdarstellung sind es nur 500 MB oder so.

Wie kann ich eine spärliche Matrix in H2O laden?

Antwort

7

Es ist mühsam, im Speicher von R gespeicherte Daten aus zwei Gründen in den Speicher von H2O zu transportieren: R führt einen POST der Datei durch, um die Daten in H2O zu streamen, die 1) den Parallelleser von H2O nicht nutzt. und 2) beschränkt Ihre Daten auf in R existierende Daten.

Verwenden Sie stattdessen die h2o.importFile-Methode von R, um den Parallelleser von H2O zu verwenden. Ihre Daten können überall leben: HDFS, S3, reguläres Dateisystem ...

H2O ist mit einem SVMLight-Lesegerät ausgestattet, daher wird empfohlen, Ihre spärliche Matrix von R im SVMLight-Format zu speichern.

Hoffe, das hilft!

+1

Dies ist sehr hilfreich, aber es stellt sich die Frage, wie Sie ein Matrixobjekt im svmlight-Format speichern können. Wenn ich mich nicht irre, ist das nicht trivial; Gibt es eine saubere Lösung? –

+0

Es gibt das eingestellte RSofia-Paket, das eine integrierte Funktion 'write.svmlight' besitzt. Ich habe es nicht für diesen speziellen Fall verwendet, aber Sie können die alte Quelle über 'devtools :: install_github (" cran/RSofia ")' installieren – zerweck