如何将稀疏矩阵导入H2O?

7

我正在尝试将一个稀疏矩阵导入到H2O中,想知道是否可能。假设我们有以下内容:

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

假设我的本地H2O是localH2O,我似乎无法执行以下操作:

as.h2o(test)

它会报错:cannot coerce class "structure("dgCMatrix", package = "Matrix")" to a data.frame。这似乎是非常合理的,但是假设测试数据太大而无法将其转换为数据框,我该如何将其加载到H2O中?使用稀疏矩阵表示,只有500MB左右。那么,我该如何将稀疏矩阵加载到H2O中呢?
1个回答

9

将存储在R内存中的数据传输到H2O的内存是繁琐的,主要由于两个原因:R执行文件的POST操作以将数据流式上传到H2O,这1)没有利用H2O的并行读取器,并且2)将您的数据限制在R中存在。

相反,使用R中的h2o.importFile方法利用H2O的并行阅读器。您的数据可以存储在任何地方:HDFS、S3、常规文件系统等。

H2O支持SVMLight阅读器,因此建议将R中的稀疏矩阵保存为svmlight格式。

希望这有所帮助!


1
这非常有帮助,但它引出了如何将Matrix对象保存为svmlight格式的问题。除非我弄错了,否则这并不容易;有没有简便的解决方案? - Peter Ellis
有一个已经停用的RSofia软件包,其中内置了一个名为write.svmlight的函数。我没有在这个特定案例中使用过它,但是你可以通过devtools::install_github("cran/RSofia")安装旧版本的源代码。 - zerweck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接