将H2O模型导入Python

时间:2018-03-05 09:56:43

标签: python model h2o

我的模型内置H2O(比方说,GLM模型) 现在,我想在Python中导入该模型以用于其他应用程序。

我该怎么做?

3 个答案:

答案 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 桥接器)。