【问题标题】:Unable to convert data frame to h2o object无法将数据框转换为 h2o 对象
【发布时间】:2015-10-05 05:26:30
【问题描述】:

我在 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 的问题和我问的一样,但解决方案导致我出现同样的错误。

有人遇到过这个问题吗?我不完全确定如何处理。

【问题讨论】:

    标签: r dataframe h2o


    【解决方案1】:

    自 H2O-Classic 的最后一个稳定版本和 H2O-3.0 的最新稳定版本以来,将帧从 R 导入 H2O 的语法发生了变化。我相信您使用的是 H2O-3.0 版本,这意味着函数中的某些参数已经更改,模棱两可的“key”参数已更改为“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 &lt;- as.h2o(object = df),其中class(df)data.frame

    【讨论】:

    • 这仍然是“当前”解决方案吗?
    • 在h2o v3.8上测试,不需要在h2o.importFile()中指定destination_frame
    • 他们需要解决这个问题。我在版本 3.10.0.2 上,as.h2o 仍然因有序因素而损坏。
    【解决方案2】:

    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")
    

    【讨论】:

      【解决方案3】:

      试试这个。它对我有用。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          你应该试试:

          dat_h2o <- as.h2o(dat)
          

          或者:

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

          希望这会有所帮助!

          【讨论】:

            猜你喜欢
            • 2015-02-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-21
            • 2023-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多