2015-07-15 5 views
7

Я запускаю пакет h2o в Rstudio версии 0.99.447. Я запускаю версию 10.9.5 OSX.Невозможно преобразовать фрейм данных в объект h2o

Я хотел бы создать локальный кластер внутри R, следуя инструкциям данного руководства: http://blenditbayes.blogspot.co.uk/2014/07/things-to-try-after-user-part-1-deep.html

Первый шаг, кажется, не является проблемой. Кажется, что проблема заключается в преобразовании моего фрейма данных в соответствующий h2o-объект.

library(mlbench) 
dat = BreastCancer[,-1] #reading in data set from mlbench package 

library(h2o) 
localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE) #sets up the cluster 
dat_h2o <- as.h2o(localH2O, dat, key = 'dat') #this returns an error message 

Данное заявление as.h2o приводит следующее сообщение об ошибке

Error in as.h2o(localH2O, dat, key = "dat") : 
unused argument (key = "dat") 

Если удалить параметр «ключ», позволяя данные проживающих в H2O ключ-значение магазина под машиной, генерируемого name появляется следующее сообщение об ошибке.

Error in .h2o.doSafeREST(conn = conn, h2oRestApiVersion = h2oRestApiVersion, 
Unexpected CURL error: Empty reply from server 

This вопрос задает то же самое, что и я, но решение приводит меня к одной и той же ошибке.

У кого-нибудь есть опыт работы с этой проблемой? Я не совсем уверен, как подойти к этому.

ответ

9

Синтаксис для импорта фрейма из R в H2O изменился с момента последнего стабильного выпуска H2O-Classic и последней стабильной версии H2O-3.0. Я считаю, что вы использовали выпуск H2O-3.0, что означает, что с тех пор изменились некоторые аргументы в функциях, неоднозначный аргумент «ключ» был изменен на «destination_frame».

H2O-3.0 будет вести себя по-другому, поскольку он будет учитывать, что первые 5 столбцов являются упорядоченными факторами в кадре данных R; и на данный момент у нас нет способа сохранить заказы для категориальных столбцов. Тем не менее, чтобы воспроизвести те же результаты, что и один, опубликованный на http://blenditbayes.blogspot.co.uk/2014/07/things-to-try-after-user-part-1-deep.html, вам нужно будет записать кадр на диск в формате CSV и импортировать его в H2O.

library(mlbench) 
dat = BreastCancer[,-1] #reading in data set from mlbench package 

library(h2o) 
localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE) 

#dat_h2o <- as.h2o(dat, destination_frame = 'dat') 
## Will return a "Provided column type c("ordered", "enum") is unknown." error 

pathToData <- paste0(normalizePath("~/Downloads/"), "/dat.csv") 
write.table(x = dat, file = pathToData, row.names = F, col.names = T) 
dat_h2o <- h2o.importFile(path = pathToData, destination_frame = "dat") 

Для R data.frames, не заказанные фактор столбцов вы можете просто использовать h2o_frame <- as.h2o(object = df) где class(df) является data.frame.

+0

Является ли это stille «текущим» решением? –

+1

тестирование на h2o v3.8, вам не нужно указывать destination_frame в h2o.importFile() – yingw

+2

Им нужно исправить это. Я нахожусь в версии 3.10.0.2, а 'as.h2o' по-прежнему разбивается на упорядоченные факторы. –

0

У меня также была такая же проблема. В моем случае проблема JAVA_HOME переменной env на Mac OSX mavericks, указывающая на старую версию java 6. Мое решение находится в потоке h2o групп google here

0

Фреймворк BreastCancer имеет 5 ord.factors и 5 факторов. Как писала Эми Ван, вам нужно преобразовать коэффициенты в числовые. Если вы не хотите записывать данные на диск, а затем снова читать данные, вы можете конвертировать их с помощью sapply().

## Format data with no factor 
data(BreastCancer, package = 'mlbench') # Load data from mlbench package 
dat <- BreastCancer[, -1] # Remove the ID column 
dat[, c(1:ncol(dat))] <- sapply(dat[, c(1:ncol(dat))], as.numeric) # Convert factors into numeric 



## Start a local cluster with default parameters 
library(h2o) 
localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE) 

## Convert Breast Cancer into H2O 
dat.h2o <- as.h2o(dat, destination_frame = "midata") 
0

Вы должны попробовать:

dat_h2o <- as.h2o(dat) 

Или:

dat <- as.data.frame(dat) 
dat_h2o <- as.h2o(dat) 

Надеется, что это помогает!