![](/img/trans.png)
[英]Can I use directly H2O library functions from Java or the only option for H2O is R?
[英]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.