繁体   English   中英

如何将H2o嵌入Java应用程序中?

[英]How can I embed H2o in a Java application?

我正在尝试在Java应用程序中开始嵌入式H2o并训练模型。 但是我没有得到文档中确切解释的内容( http://docs.h2o.ai/h2o/latest-stable/h2o-docs/faq/java.html )。 有人可以通过提供示例帮助我吗?

谢谢,

这里要了解的关键是您是否真的想在应用程序中训练模型,还是只想对模型评分。 最初,大多数人只想为模型评分。

计分

计分既简单又自然。 请在此处查看MOJO和POJO javadoc api:

按照javadoc中显示的模式使用Easy API。 以下是相关代码的片段:

EasyPredictModelWrapper model = new EasyPredictModelWrapper(MojoModel.load("GBM_model.zip"));
RowData row = new RowData();
row.put("AGE", "68");
...
BinomialModelPrediction p = model.predictBinomial(row);

评分和保存以进行延迟培训

许多人会做的是在他们的实时应用程序中打分,并保存新数据(在某处)以进行延迟培训。 然后离线训练模型,然后将其再次投入生产以进行评分。 这是一个非常典型的模型生命周期,易于理解和管理。

训练

在您的应用程序中嵌入H2O进行实际培训会更加复杂。

如果要嵌入H2O,则可以使用以下两种方法之一:

良好支持的选项1 将H2O实例作为一个单独的进程(或分布式情况下的一组进程)启动,并使用R或Python与之通信。

记录良好的H2O API是R API和Python API。 (还有一个REST API,其中包含大量生成的文档,但我认为它不那么易于使用。)

您可以在以下位置找到许多文档和示例:

备受支持的选项2 编写一个Spark应用程序,并使用Sparkling Water和Scala或PySparkling和Python。

实际上,这不需要太多的Spark,因为Sparkling Water中嵌入的H2O实际上根本不依赖于Spark端。 气泡水的Scala和Python API都有详细的文档记录。 《苏打水用户指南》是开始这样做的好地方:

...然后这是其他更难的选择:

(更难)选项3 您可以将H2O作为Maven依赖项包括在内,并直接从Java调用它。

这里最大的问题是Java API的文档不完善,您将不会找到友好的示例来使用它。 Java API的最佳文档是源代码本身,以及h2o-3项目github中的单元测试(搜索“ test”目录):

(更难)选项4 有人直接从REST API调用了H2O。

我不建议这样做,因为这很困难,但是,如果您想尝试一下,学习如何使用REST API的最佳方法是打开R的日志记录,并查看R客户端和H2O之间的消息有效负载:

# R program.
h2o.init()
h2o.startLogging()
h2o.importFile("test.csv")
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM