我正在使用R中的h2o包来构建随机森林模型。我的任务要求我在以后重复给测试数据评分,因此我保存随机森林模型对象,如下所示。
save("D:/model_random_forest.RData")为了给数据打分,我稍后在内存中再次加载模型对象,如下所示
load("D:/model_random_forest.RData")但是当我用
scores <- h2o.predict(model_random_forest, test_data) 我得到以下错误
ERROR: Unexpected HTTP Status code: 404 Not Found (url = http://127.0.0.1:54321/3/Predictions/models/DRF_model_R_1442519642868_26/frames/test17_normal.hex_2)
water.exceptions.H2OKeyNotFoundArgumentException
[1] "water.api.ModelMetricsHandler.predict(ModelMetricsHandler.java:203)"
[2] "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
[3] "sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)"
[4] "sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)"
[5] "java.lang.reflect.Method.invoke(Unknown Source)"
[6] "water.api.Handler.handle(Handler.java:58)"
[7] "water.api.RequestServer.handle(RequestServer.java:637)"
[8] "water.api.RequestServer.serve(RequestServer.java:578)"
[9] "water.JettyHTTPD$H2oDefaultServlet.doGeneric(JettyHTTPD.java:617)"
[10] "water.JettyHTTPD$H2oDefaultServlet.doPost(JettyHTTPD.java:565)"
[11] "javax.servlet.http.HttpServlet.service(HttpServlet.java:755)"
[12] "javax.servlet.http.HttpServlet.service(HttpServlet.java:848)"
[13] "org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)"
Error in .h2o.doSafeREST(conn = conn, h2oRestApiVersion = h2oRestApiVersion, :
Object 'DRF_model_R_1442519642868_26' not found in function: predict for argument: model当我使用R包构建模型时,整个保存、加载和评分方法都工作得很好,但不知何故在这里失败了。有没有人能提供一个解决方案?我不能再一次重新构建模型,每次我想要得分一些数据。
H2o连接似乎很好,因为当模型是新构建的并且仍然存在于内存中时,评分会顺利发生。
发布于 2015-10-02 01:26:37
H2O模型对象不同于R-对象。H2O模型对象存储在H2O集群中,在R中您只能看到对它的引用,这看起来像一个普通的R模型。因此,如果您保存您的R会话,并稍后重新启动它,您可能会在不同的H2O集群上运行,该集群没有您的R会话引用的模型。
解决方案是通过h2o.saveModel/h2o.saveModel方法保存/加载H2O模型。
例如:
model <- h2o.randomForest(...)
model_path <- h2o.saveModel(
object = model,
path = "/tmp/mymodel",
force = TRUE)
print(model_path)请参阅文档了解更多示例:http://h2o-release.s3.amazonaws.com/h2o/rel-slater/5/docs-website/h2o-r/h2o_package.pdf
https://stackoverflow.com/questions/32652500
复制相似问题