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

标签 java machine-learning h2o sparkling-water

我正在尝试在 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 端。用于 Sparkling Water 的 Scala 和 Python API 有详细的文档记录。苏打水用户指南是一个很好的起点:

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

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

这里最大的问题是 Java API 没有很好的文档记录,而且您找不到关于如何使用它的友好示例。 Java API 的最佳文档是源代码本身,以及 h2o-3 项目 github 中的单元测试(搜索“测试”目录):

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

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

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

关于java - 如何将 H2o 嵌入到 Java 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50377307/

相关文章:

java - 仅在滚动功能完成后获取项目

java - Sonar 扫描仪给出一个名为 "Please provide compiled classes of your project with sonar.java.binaries property"的错误

java - Maven 引发 java.lang.NoSuchMethodError org.codehaus.plexus.util.xml.pull.MXParser

artificial-intelligence - Church 编程语言的应用

r - 检测 H2O 实例是否已经在 R 中运行

java - 如何使用 GoogleIdToken 从 java 连接到 google 工作表

machine-learning - 使用 IsolationForest 检测高维数据集异常值的正确方法

machine-learning - 关于简单自动编码器实现的问题

r - H2O:退出时保留-ice_root?

h2o - 如何在 H2o 中保存/加载经过训练的模型?