2015-09-29 5 views
7

Я пытаюсь получить разреженную матрицу в H2O, и мне было интересно, возможно ли это. Предположим, мы имеем следующее:Как получить разреженные матрицы в H2O?

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

и принимая мой местный Н2О localH2O, я не могу сделать следующее:

as.h2o(test) 

Это дает ошибку: cannot coerce class "structure("dgCMatrix", package = "Matrix")" to a data.frame. Это кажется довольно логичным, однако, полагая, что тест настолько велик, что я не могу преобразовать его в dataframe, как я могу загрузить его в H2O? Использование разреженного матричного представления составляет всего 500 МБ.

Как загрузить разреженную матрицу в H2O?

ответ

7

Весьма сложно транспортировать данные, хранящиеся в памяти R, в память H2O по существу по двум причинам: R выполняет POST файла для потоковой передачи данных в H2O, что 1) не использует преимущества параллельного считывателя H2O, и 2) ограничивает ваши данные существующим в R.

Вместо этого используйте метод h2o.importFile из R, чтобы использовать параллельный считыватель H2O. Ваши данные могут работать в любом месте: HDFS, S3, обычная файловая система ...

H2O - это программа для чтения SVMLight, поэтому рекомендуется сохранять вашу разреженную матрицу из R в формате svmlight.

Надеюсь, это поможет!

+1

Это очень полезно, но он задает вопрос о том, как сохранить матричный объект n svmlight. Если я не ошибаюсь, это нетривиально; есть ли опрятное решение? –

+0

Существует прекращенный пакет RSofia, который имеет встроенную функцию 'write.svmlight'. Я не использовал его для этого конкретного случая, но вы можете установить старый источник через 'devtools :: install_github (" cran/RSofia ")' – zerweck

Смежные вопросы