使用h2o-ensemble时遇到R错误:创建h2o集成模型时收到“坏请求”(临时ID RTMP_5已存在)的错误,尽管之前可以正常工作

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

之前代码运行得很好:

## ## 设置h2o
library(h2oEnsemble)
nodes <- 2 ## 进程数量
localH2O <-  h2o.init(nthreads=nodes)
## ## 模拟数据集
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: 输入
## Z: 输出
dat.app <- dat[1:1e3, ]
dat.val <- dat[1e3+(1:1e3), ]
## ## h2o过程
dat.h2o.app <- as.h2o(localH2O, dat.app) ## 学习
dat.h2o.val <- as.h2o(localH2O, dat.val) ## 验证
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") # 收到400坏请求
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版本3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
版权所有 (C) 2015 R统计计算基金会
平台: x86_64-pc-linux-gnu (64位)
R是免费软件,并且没有任何保证。
欢迎在特定条件下重新分发它。输入'license()'或'licence()'查看分发详情。
支持自然语言,但运行在英语环境中
R是一个协作项目,有许多贡献者。
输入'contributors()'获取更多信息,输入'citation()'了解如何在出版物中引用R或R包。
输入'demo()'查看一些演示,输入'help()'获取在线帮助,或输入'help.start()'获取HTML浏览器界面的帮助。
输入'q()'退出R。
> ## ## 设置h2o
> library(h2oEnsemble)
> nodes <- 2 ## 进程数量
> localH2O <-  h2o.init(nthreads=nodes)
成功连接到 http://127.0.0.1:54321/ R已连接到H2O集群:
    H2O集群运行时间:         9天19小时
    H2O集群版本:        3.6.0.8
    H2O集群名称:           H2O_started_from_R_root_afl027
    H2O集群总节点数:    1
    H2O集群总内存:   6.98 GB
    H2O集群总核心数:    6
    H2O集群允许的核心数:  2
    H2O集群健康状态:        TRUE
>
> ## ## 模拟数据集
> 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: 输入
> ## Z: 输出
> dat.app <- dat[1:1e3, ]
> dat.val <- dat[1e3+(1:1e3), ]
>
> ## ## h2o过程
> dat.h2o.app <- as.h2o(dat.app) ## 学习
 |                                                                              |
                                                                      |   0%
 |                                                                              |
======================================================================| 100%
> dat.h2o.val <- as.h2o(dat.val) ## 验证
 |                                                                              |
                                                                      |   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")
错误:意外HTTP状态码:400坏请求(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)"
               在.h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, :    临时ID RTMP_5已存在
调用 : h2o.ensemble ... .eval.driver -> .h2o.__remoteSend -> .h2o.doSafeREST
执行已停止

我有点迷失了,不明白为什么现在它不工作了,训练集应该处于正确的格式中。有人遇到过这个问题吗?如果有,你是如何解决这个错误的?


回答:

这实际上是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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注