我的模型内置H2O(比方说,GLM模型) 现在,我想在Python中导入该模型以用于其他应用程序。
我该怎么做?
答案 0 :(得分:1)
尝试一下:
# build the model
model = H2ODeepLearningEstimator(params)
model.train(params)
# save the model
model_path = h2o.save_model(model=model, path="/tmp/mymodel", force=True)
print(model_path)
/tmp/mymodel/DeepLearning_model_python_1441838096933
# load the model
saved_model = h2o.load_model(model_path)
答案 1 :(得分:0)
您需要将模型导出为MOJO或POJO(如果您的算法支持,则更喜欢MOJO)。这是一个Java对象,因此您需要使用Java来运行它。有很多选项可供选择:
http://docs.h2o.ai/h2o/latest-stable/h2o-docs/productionizing.html
(BTW,R API最近添加了h2o.predict_json(),它将参数转换为JSON并为您调用Java;在Python API中似乎没有任何内容,但如果您阅读{{3}你会发现它没有做任何复杂的事情:只运行一个shell命令。)
另一种选择是坚持运行H2O服务器,并使用Python。在这种情况下,您只想保存模型(二进制格式),然后在每次要进行预测时加载它(返回H2O集群):the R code
这种方法的缺点是二进制格式总是与H2O版本相关联。因此,如果您升级H2O,则无法再使用已保存的模型。
答案 2 :(得分:0)
较新版本的 H2O 能够通过 python API 导入 MOJO:
# re-import saved MOJO
imported_model = h2o.import_mojo(path)
new_observations = h2o.import_file(path='new_observations.csv')
predictions = imported_model.predict(new_observations)
注意:MOJO 不能重新导入到缺少 h2o.import_mojo()
函数的旧版 H2O 中的 python。
所以 h2o.save_model()
似乎失去了它的作用——我们可以只使用 my_model.save_mojo()
(注意它不是一个 h2o
方法,而是模型对象的一个属性),因为这些文件可以不仅可以用于 Java 应用程序的部署,还可以用于 Python(实际上他们内部仍然使用 Python-Java 桥接器)。