2015-09-29 23 views
7

H2O içine seyrek bir matris almaya çalışıyorum ve bunun mümkün olup olmadığını merak ediyordum. Aşağıdaki biz olduğunu varsayalım:Seyrek matrisler H2O'ya nasıl alınır?

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

ve benim yerel H2O localH2O olduğunu varsayarak, ben aşağıdakileri yapmak gibi olamaz:

as.h2o(test) 

Bu hata veriyor: cannot coerce class "structure("dgCMatrix", package = "Matrix")" to a data.frame. Bu oldukça mantıklı görünüyor, ancak testin o kadar büyük olduğunu varsaydığımdan, bunu bir veri çerçevesine dönüştüremiyorum, bunu nasıl H2O'ya yüklediğimi tahmin ediyorum? Seyrek bir matris temsili kullanarak sadece 500MB ya da öylesine.

Seyrek bir matrisi H2O'ya nasıl yüklerim?

cevap

7

R'nin belleğinde depolanan verileri temelde iki nedenden ötürü H2O'nun belleğine taşımak zahmetlidir: R, verileri H2O'ya aktarmak için dosyanın POST'unu gerçekleştirir, 1) H2O'nun paralel okuyucusundan yararlanamaz, ve 2) verilerinizi mevcut değerlere sınırlar.

Bunun yerine H2O'nun paralel okuyucusunu kullanmak için R'den h2o.importFile yöntemini kullanın. Verileriniz herhangi bir yerde yaşayabilir: HDFS, S3, düzenli dosya sistemi ...

H2O, bir SVMLight okuyucusunu spor yapar, bu yüzden dikkat çekmeyen Matrix'inizi svmlight biçiminde kaydetmeniz önerilir.

Bu yardımcı olur umarız!

+1

Bu çok yararlı ancak bir Matrix nesnesinin n svmlight biçimini nasıl kaydedileceği sorusu ortaya çıkıyor. Yanılmadığım sürece bu önemsiz değil; temiz bir çözüm var mı? –

+0

"write.svmlight" işlevinde yerleşik olarak durdurulan RSofia Paketi var. Bu özel durum için kullanmadım, ancak eski kaynağı 'devtools :: install_github (" cran/RSofia ")' dan yükleyebilirsiniz. – zerweck