无法将数据框转换为h2o对象

时间:2015-07-15 23:14:27

标签: r dataframe h2o

我在Rstudio版本0.99.447中运行h2o包。我运行版本10.9.5 OSX。

我想按照本教程的步骤在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")

如果我删除“key”参数,让数据驻留在机器生成的名称下的H2O键值存储中,则会出现以下错误消息。

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

This问题与我的问题相同,但解决方案会让我遇到同样的错误。

有没有人有过这个问题的经验?我不完全确定如何处理这个问题。

5 个答案:

答案 0 :(得分:10)

自从H2O-Classic的最后一次稳定发布以及H2O-3.0的最新稳定版本以来,将框架从R导入H2O的语法已经发生了变化。我相信你使用的是H2O-3.0版本,这意味着函数中的一些参数已经改变了,模糊的关键&#34;参数已更改为&#34; destination_frame&#34;。

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

答案 1 :(得分:1)

试试这个。它对我有用。

## S3 method for class 'data.frame'
dat.hex <- as.h2o(dat, destination_frame = "dat.hex", ...)

答案 2 :(得分:0)

我也遇到了同样的问题。在我的情况下,Mac OSX mavericks上的问题JAVA_HOME env变量指向旧的Java版本6.我的解决方案是在h2o google groups stream here

答案 3 :(得分:0)

BreastCancer数据框有5个ord.factors和5个因子。正如Amy Wang所写,你必须将因子转换为数字。如果您不想将数据写入光盘然后再次读取数据,可以使用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")

答案 4 :(得分:0)

你应该尝试:

dat_h2o <- as.h2o(dat)

或者:

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

希望这有帮助!

相关问题