我在R中得到了一个[210,000 x 500]稀疏矩阵,我正在尝试使用h2o进行聚类。 我想象一个210,000行矩阵对于h2o并不那么大,但是当我尝试将它导入h2o实例时需要很长时间(让它运行超过10分钟并在完成之前停止它) 当我在稀疏矩阵中对前10,000行进行子集并导入它时,只需几秒钟。我已经尝试过递增,这需要很长时间。 (我停止了60,000) 这是正常的还是我做错了什么?
这就是我正在使用的
library(h2o)
localH2O <- h2o.init(nthreads = -1, max_mem_size = "16g")
spmx.h2o <- as.h2o(sparse_mx)
以下是有关h2o实例生成时的更多信息:
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Starting H2O JVM and connecting: . Connection successful!
R is connected to the H2O cluster:
H2O cluster uptime: 6 seconds 779 milliseconds
H2O cluster version: 3.10.4.6
H2O cluster version age: 1 month and 30 days
H2O cluster name: H2O_started_from_R_M_vto433
H2O cluster total nodes: 1
H2O cluster total memory: 14.22 GB
H2O cluster total cores: 4
H2O cluster allowed cores: 4
H2O cluster healthy: TRUE
H2O Connection ip: localhost
H2O Connection port: 54321
H2O Connection proxy: NA
H2O Internal Security: FALSE
R Version: R version 3.4.0 (2017-04-21)
我试图避免将矩阵写入文件并再次导入,因为我认为210,000行和500列不应该是h2o处理的问题
答案 0 :(得分:1)
目前似乎不可能直接通过R将稍大尺寸的稀疏矩阵导入到h2o实例中。相反,通过SVMLight文件导入要快得多。正如这里讨论的那样
How to get sparse matrices into H2O?
编辑:寻找将稀疏矩阵文件转换为SVMLight格式(高效快速算法) 我尝试使用laurai2 / sparsity包来有效地将稀疏矩阵转换为SVMLgith格式文件。但由于某些Cpp编译错误,我无法安装软件包。 根据@Dmitriy Selivanov的建议,我使用了sparsio包,可以轻松地将稀疏矩阵转换为SVMLight格式并快速导入到h2o。
## The following works
library(sparsio)
library(h2o)
write_svmlight(x = spmx, file = "spmx_svmlight.txt", zero_based = FALSE) #h2o accepts one_based by default
localH2O <- h2o.init(nthreads = -1, max_mem_size = "16g")
spmx.h2o <- h2o.importFile("spmx_svmlight.txt", parse = TRUE)
我的数据集大小仍然很小,我不确定write_svmlight在更大的数据集上的工作情况。我的数据花了大约40秒,这没关系。