2015-09-18 7 views
2

Я использую пакет h2o в 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 

T он полностью сохраняет, загружает и забивает подход, отлично работает, когда я использую R-пакеты для сборки моделей, но почему-то здесь не работает. Может кто-то, пожалуйста, предоставить решение? Я не могу снова воссоздать модель снова, я хочу забить некоторые данные.

H2o соединение кажется прекрасным, так как модель недавно построена и по-прежнему присутствует в памяти, забивание происходит гладко.

ответ

3

Объекты модели H2O отличаются от R-объектов. Объект модели H2O хранится в кластере H2O, а в R вы можете видеть только ссылку на него, которая выглядит как обычная модель R. Следовательно, если вы сохраните свой сеанс R и перезапустите его позже, возможно, вы будете работать против другого кластера H2O, у которого нет модели, на которую ссылается ваш R-сеанс.

Решение состоит в том, чтобы сохранить/загрузить модель H2O с помощью методов h2o.saveModel/h2o.saveModel.

Например:

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