R h2o以MOJO或POJO格式从磁盘加载已保存的模型

hor*_*ceT 7 io r h2o

我正在追赶h2o的MOJO和POJO模型格式.我可以用MOJO/POJO保存模型

h2o.download_mojo(model, path = "/media/somewhere/tmp") # ok
h2o.download_pojo(model, path = "/media/somewhere/tmp") # ok
Run Code Online (Sandbox Code Playgroud)

与名称写入一个对象像mymodel.zipmymodel.java到目录.

但是,我不清楚如何将它读回R中的服务器.我试过,

saved_model2 <- h2o.loadModel("/media/somewhere/tmp/mymodel.java") # not work
saved_model3 <- h2o.loadModel("/media/somewhere/tmp/mymodel.zip") # not work
Run Code Online (Sandbox Code Playgroud)

但得到这样的错误信息,

ERROR: Unexpected HTTP Status code: 400 Bad Request (url = http://localhost:54321/99/Models.bin/)

java.lang.IllegalArgumentException
 [1] "java.lang.IllegalArgumentException: Missing magic number 0x1CED at stream start"  
....
Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page,  : 

ERROR MESSAGE:

Missing magic number 0x1CED at stream start
Run Code Online (Sandbox Code Playgroud)

Eri*_*ell 10

如果您希望在R中对H2O模型进行预测,那么您有三个选项(您选择哪种方法取决于您的用例):

  1. 您可以使用二进制模型而不是MOJO(或POJO).对于此方法,您可以使用模型将模型导出到磁盘,h2o.saveModel()然后将其加载回使用h2o.loadModel()并使用进行预测predict(model, test).
  2. 如果您仍然希望将模型导出为MOJO(或POJO)格式,则可以使用R中的h2o.mojo_predict_df()h2o.mojo_predict_csv()函数在测试集上生成预测(来自R data.frame或CSV文件).
  3. 作为#2的替代方案,如果您的数据是JSON格式,您可以使用h2o.predict_json(),但它一次只能获得一行.

  • 如果二进制方法适合您,那么您可以坚持使用该方法.缺点是您必须始终运行H2O集群,并且二进制模型与特定版本的H2O绑定.`h2o.predict_json()`方法更像是标准纯Java MOJO/POJO方法的便利包装器.在这种情况下,您不需要运行H2O集群,您可以将模型编译到更大的Java项目中. (2认同)