【问题标题】:Import H2O model to Python将 H2O 模型导入 Python
【发布时间】:2018-08-12 22:35:41
【问题描述】:

我在 H2O 中构建了模型(例如,GLM 模型) 现在,我想在 Python 中导入该模型以用于其他应用程序。

我该怎么做?

【问题讨论】:

标签: python model h2o


【解决方案1】:

较新版本的 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)

注意:在缺少h2o.import_mojo() 函数的旧 H2O 版本中,MOJO 无法重新导入 python。

所以h2o.save_model() 似乎失去了它的作用——我们可以只使用my_model.save_mojo()(注意它不是h2o 方法,而是模型对象的一个​​属性),因为这些文件不仅可以用于Java应用程序部署,而且在 python 中也是如此(实际上他们仍然在内部使用 python-Java 桥)。

【讨论】:

    【解决方案2】:

    试试这个:

    # 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)
    

    【讨论】:

      【解决方案3】:

      您需要将模型导出为 MOJO 或 POJO(如果您的算法支持,则首选 MOJO)。这是一个 Java 对象,因此您需要使用 Java 来运行它。如何做到这一点有很多选择:

      http://docs.h2o.ai/h2o/latest-stable/h2o-docs/productionizing.html

      (顺便说一句,R API 最近添加了 h2o.predict_json() ,它为您将参数转换为 JSON 和 Java 调用;Python API 中似乎没有任何内容,但如果您阅读 the R code 你'会看到它没有做任何复杂的事情:只是运行一个 shell 命令。)

      另一种选择是坚持运行 H2O 服务器,并从 Python 中使用它。在这种情况下,您只想保存模型(二进制格式),然后在每次要进行预测时将其加载(回到 H2O 集群):http://docs.h2o.ai/h2o/latest-stable/h2o-docs/save-and-load-model.html

      这种方法的缺点是二进制格式总是与 H2O 版本相关联。因此,如果您升级 H2O,您将无法再使用您保存的模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-24
        • 2015-10-30
        • 2021-09-18
        • 1970-01-01
        相关资源
        最近更新 更多