2016-07-21 9 views
0

Ich habe ein zufälliges Waldmodell in Rstudio trainiert, mit h2o-Bibliothek, und dann habe ich es als .rda-Datei gespeichert, jetzt möchte ich andere Daten mit dem Modell buildt. Also habe ich das Modell geladen, ich habe das neue Dataset in einem H2OFrame gedreht und ich versuche, mit predict(model, new_data) Funktion zu erreichen. Was erhalte ich die folgende Fehlermeldung:Vorhersagen mit h2o.randomForest gespeichert Modell

ERROR: Unexpected HTTP Status code: 404 Not Found (url = http://localhost:54321/4/Predictions/models/DRF_model_R_1468754145815_1/frames/file1840210c1889_sid_9b90_2) 

water.exceptions.H2OKeyNotFoundArgumentException 
[1] "water.exceptions.H2OKeyNotFoundArgumentException: Object 'DRF_model_R_1468754145815_1' not found in function: predict for argument: model" 
[2] " water.api.ModelMetricsHandler.predict2(ModelMetricsHandler.java:239)"                 
[3] " sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"                   
[4] " sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)"               
[5] " sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"             
[6] " java.lang.reflect.Method.invoke(Method.java:498)"                      
[7] " water.api.Handler.handle(Handler.java:62)"                        
[8] " water.api.RequestServer.handle(RequestServer.java:655)"                    
[9] " water.api.RequestServer.serve(RequestServer.java:596)"                     
[10] " water.JettyHTTPD$H2oDefaultServlet.doGeneric(JettyHTTPD.java:745)"                  
[11] " water.JettyHTTPD$H2oDefaultServlet.doPost(JettyHTTPD.java:681)"                  
[12] " javax.servlet.http.HttpServlet.service(HttpServlet.java:755)"                   
[13] " javax.servlet.http.HttpServlet.service(HttpServlet.java:848)"                   
[14] " org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)"                
[15] " org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)"               
[16] " org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)"               
[17] " org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)"               
[18] " org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)"              
[19] " org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)"             
[20] " org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)"                
[21] " org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)"              
[22] " org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)"              
[23] " org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)"               
[24] " org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)"             
[25] " org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)"              
[26] " org.eclipse.jetty.server.Server.handle(Server.java:370)"                    
[27] " org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)"          
[28] " org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)"           
[29] " org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)"          
[30] " org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)"      
[31] " org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)"                  
[32] " org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)"                 
[33] " org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)"            
[34] " org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)"           
[35] " org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)"              
[36] " org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)"              
[37] " java.lang.Thread.run(Thread.java:745)"                         

Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, : 


ERROR MESSAGE: 

Object 'DRF_model_R_1468754145815_1' not found in function: predict for argument: model 

Ich bin neu .. auf Irgendeine Idee zu H2O, was nicht in Ordnung ist?

Antwort

1

Sie können es nicht als RDA-Datei von innen R speichern. Das Modell existiert im H2O-Cluster und Sie müssen h2o.saveModel() verwenden, um es zu speichern. Und dann h2o.loadModel(), um es erneut zu laden. Siehe ?h2o.saveModel und ?h2o.loadModel.

BTW, beachten Sie die Asymmetrie zwischen den Funktionen: Sie geben ein Verzeichnis zu saveModel, und Sie geben einen Dateinamen zu loadModel. (Der Dateiname ist die Modell-ID.)

+0

ok danke! aber das bedeutet, dass ich das Modell erneut ausführen muss, um es zu speichern? Oder ich kann das alte Modell laden und dann mit 'h2o.loadModel()' speichern? (Letztes Mal dauerte das Modelltraining 17h) –

+0

@FrancescoDalPont Wenn du h2o.saveModel() nicht benutzt hast, kannst du es nicht laden und musst es neu machen. Es tut uns leid! Wenn das Modell so lange braucht, um zu trainieren, werfen Sie einen Blick auf Checkpoints: Sie können, sagen wir, die ersten 50 Bäume machen, dann dieses Modell speichern, aber auch weiter lernen. Und wiederhole das alle 50 Bäume (oder jede Stunde - wie viele Bäume du auch in einer Stunde machst). Sobald das Modell für dich gut genug ist, hörst du einfach auf. –

Verwandte Themen