创建 h2o 集成模型时,h2o-ensemble 收到错误请求(临时 ID RTMP_5 已存在),即使之前工作很艰难,也会出现 R 错误

标签 r machine-learning bad-request h2o

嗨,我开始使用 h2o ensemble 包(此处:https://github.com/h2oai/h2o-3/tree/master/h2o-r/ensemble 进行一些数据分析并尝试了演示代码。

代码之前运行良好:

## ## setting up h2o
library(h2oEnsemble)
nodes <- 2 ## number of processes
localH2O <-  h2o.init(nthreads=nodes)

## ## simulated data set
dat <- matrix(rnorm(6e3), ncol=3, dimnames=list(NULL, c("W", "X", "Y")))
dat <- as.data.frame(dat)
Z <- as.factor(rbinom(nrow(dat), size=1, prob=plogis(.2+.1*dat$W-.2*dat$X)))
dat <- cbind(dat, Z=Z)
## W,X,Y: Input
## Z: output
dat.app <- dat[1:1e3, ]
dat.val <- dat[1e3+(1:1e3), ]

## ## h2o procedure
dat.h2o.app <- as.h2o(localH2O, dat.app) ## learning
dat.h2o.val <- as.h2o(localH2O, dat.val) ## validation

library.h2o <- c("h2o.deeplearning.Tanh",
                 "h2o.randomForest.1000x100")

h2o.randomForest.1000x100 <- function(...,ntrees=1000,nbins=100) {
    h2oEnsemble::h2o.randomForest.wrapper(..., ntrees=ntrees, nbins=nbins,seed=1)
}
h2o.deeplearning.Tanh <- function(...,hidden=c(200, 200,200),activation="Tanh" ) {
    h2oEnsemble::h2o.deeplearning.wrapper(..., hidden=hidden,    activation=activation,seed=1)
}
h2o.model <- h2o.ensemble(y="Z", x=c("W", "X", "Y"),
                          training_frame=dat.h2o.app,
                          family="binomial",
                          learner=library.h2o,
                          cvControl=list(V=10, shuffle=TRUE),
                          metalearner="h2o.glm.wrapper") # getting the 400 bad request

h2o.pred.val <- predict(h2o.model, newdat=dat.h2o.val)$pred
table((h2o.pred.val>0.5)+0, dat.val$Z)

它突然向我抛出一个 400 错误请求(RTMP_5 已经存在)

R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> ## ## setting up h2o
> library(h2oEnsemble)
> nodes <- 2 ## number of processes
> localH2O <-  h2o.init(nthreads=nodes)
Successfully connected to http://127.0.0.1:54321/ 

R is connected to the H2O cluster: 
    H2O cluster uptime:         9 days 19 hours 
    H2O cluster version:        3.6.0.8 
    H2O cluster name:           H2O_started_from_R_root_afl027 
    H2O cluster total nodes:    1 
    H2O cluster total memory:   6.98 GB 
    H2O cluster total cores:    6 
    H2O cluster allowed cores:  2 
    H2O cluster healthy:        TRUE 

> 
> ## ## simulated data set
> dat <- matrix(rnorm(6e3), ncol=3, dimnames=list(NULL, c("W", "X", "Y")))
> dat <- as.data.frame(dat)
> Z <- as.factor(rbinom(nrow(dat), size=1, prob=plogis(.2+.1*dat$W-.2*dat$X)))
> dat <- cbind(dat, Z=Z)
> ## W,X,Y: input
> ## Z: output
> dat.app <- dat[1:1e3, ]
> dat.val <- dat[1e3+(1:1e3), ]
> 
> ## ## h2o procedure
> dat.h2o.app <- as.h2o(dat.app) ## apprentissage

  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
> dat.h2o.val <- as.h2o(dat.val) ## validation

  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
> 
> library.h2o <- c("h2o.deeplearning.Tanh",
+                  "h2o.randomForest.1000x100")
> 
> h2o.model <- h2o.ensemble(y="Z", x=c("W", "X", "Y"),
+                           training_frame=dat.h2o.app,
+                           family="binomial",
+                           learner=library.h2o,
+                           cvControl=list(V=10, shuffle=TRUE),
+                           metalearner="h2o.glm.wrapper")

ERROR: Unexpected HTTP Status code: 400 Bad Request (url = http://127.0.0.1:54321/99/Rapids)

java.lang.IllegalArgumentException
 [1] "water.rapids.ASTTmpAssign.apply(ASTAssign.java:254)"                                  
 [2] "water.rapids.ASTTmpAssign.apply(ASTAssign.java:248)"                                  
 [3] "water.rapids.ASTExec.exec(ASTExec.java:46)"                                           
 [4] "water.rapids.Session.exec(Session.java:56)"                                           
 [5] "water.rapids.Exec.exec(Exec.java:63)"                                                 
 [6] "water.api.RapidsHandler.exec(RapidsHandler.java:23)"                                  
 [7] "sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)"                          
 [8] "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
 [9] "java.lang.reflect.Method.invoke(Method.java:622)"                                     
[10] "water.api.Handler.handle(Handler.java:64)"                                            
[11] "water.api.RequestServer.handle(RequestServer.java:644)"                               
[12] "water.api.RequestServer.serve(RequestServer.java:585)"                                
[13] "water.JettyHTTPD$H2oDefaultServlet.doGeneric(JettyHTTPD.java:617)"                    
[14] "water.JettyHTTPD$H2oDefaultServlet.doPost(JettyHTTPD.java:565)"                       
[15] "javax.servlet.http.HttpServlet.service(HttpServlet.java:755)"                         
[16] "javax.servlet.http.HttpServlet.service(HttpServlet.java:848)"                         
[17] "org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)"               

Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, :
    Temp ID RTMP_5 already exists
Calls : h2o.ensemble ... .eval.driver -> .h2o.__remoteSend -> .h2o.doSafeREST
Execution halted

我有点迷失方向,不明白为什么它现在不起作用,训练集应该采用良好的格式。 有人遇到过这个问题吗?如果是的话,你是如何克服这个错误的?

最佳答案

这实际上是最新版本的 h2o R 包中的一个错误,现已修复。它将在 h2o R 软件包的下一个稳定版本中进行修补,或者您可以在此处下载夜间版本:http://h2o-release.s3.amazonaws.com/h2o/master/latest.html

问题源于对 h2o.init 的多次调用。目前,您可以通过关闭所有 h2o 实例并重试来解决此错误。

更多信息请点击:https://groups.google.com/forum/#!topic/h2ostream/E6u9YbWmD6k

关于创建 h2o 集成模型时,h2o-ensemble 收到错误请求(临时 ID RTMP_5 已存在),即使之前工作很艰难,也会出现 R 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34490981/

相关文章:

python - 有没有一种方法可以让我们在不使用热编码器的情况下训练 RNN?

twitter - 用于主题检测的推文之间的表示和良好的相似性度量

java - Spring 启动: 400 Bad request error even when parameter is present

R-tapply 不保持日期格式

Pyspark 模型的 Python 等价物

android - HTTPURLConnection - 400 错误请求

c# - 400 错误请求,Azure 服务管理 api 配置更改

regex - 如何测试两个字符串是否同时出现在另一个字符串中?

r - 使用shiny.io访问本地mysql服务器

r - 如何在数据框其他列的一列中搜索字符串