5

您能否指导我如何在基于 Java/JVM 的应用程序中创建和执行机器学习模型/统计模型(回归、决策树、K 均值聚类、朴素贝叶斯、记分卡/线性/逻辑回归等以及 GBM、GLM) (生产中)。

我们有一种 ETL 类型的基于 Java 的产品,可以在其中完成机器学习的大部分数据准备步骤,例如从 JDBC、文件、HDFS、No SQL 等数据摄取、连接和聚合等(特征工程所需的)现在我们想使用机器学习/统计建模添加分析功能。

现在,我们正在使用 JPMML-评估器对使用 R 和 python(和 Knime)以 PMML 格式创建的模型进行评分,但它需要三个独立且不相关的步骤:- 1- 在我们的 Java/JVM 应用程序中准备数据并保存的第一步csv 文件或 DB 中的采样数据(训练和测试)数据,- 2- 在 R 和 python(和 Knime)中创建机器学习模型并将其导出为 PMML 4.2 格式 - 3- 在我们的 Java 中导入/部署 PMML基于应用程序并使用 JPMML 评估器在生产中执行它。

我确信这是机器学习中的一个常见问题,因为通常在生产中 JAVA 优于 Python 或 R。您能否建议在基于 JVM 中创建和执行基于 python/scikit 的机器学习模型的更好方法是什么?应用。

您认为如何在基于 JVM 的应用程序中更无缝地实现第 2 步和第 3 步,而不影响性能和可用性:-

1- 调用内部调用python scikit 脚本(在后台)的 java 程序以在 PMML 中创建模型然后使用 JPMML 评估器。它会向用户假装他在一个基于 JVM 的应用程序中(更好的可用性)。我不确定使用 PMML 的限制和缺点是什么,因为 jpmml-sklearn 并不支持所有功能。2-调用内部调用python脚本的java程序并在外部python环境中创建模型和执行并将模型和结果序列化到文件/csv或内存数据库(或缓存,如hazelcast)中父 Java 应用程序将在哪里获取结果等。我研究了我不能使用 Jython 来执行 Sci-kit 模型。3-我可以使用 Jep(在 Java 中嵌入 Python)在 JVM 中嵌入 Cpython 吗?有人尝试过用于 sci-kit 模型吗?

或者,我应该探索在我的基于 JVM 的应用程序中使用 Mahout 或 weka - 基于 java 的机器学习库。(我需要同时支持windows和非windows平台)

我也在探索基于 Java 的 H2Oai。有没有人试过。

4

3 回答 3

1

我将 IntelliJ IDEA 与 python 插件一起使用。这样,我在同一个项目中同时拥有 java 和 python 代码。数据在数据库中;无论我当前在编辑器中是否有 .java 或 .py 文件,该连接始终可见且可访问。在配置列表中,您可以拥有 Python 脚本、Java 应用程序、maven 目标等。因此,我认为您不必将 Python 和 Java 代码混合在一起(通过从 Java 中调用 Python 脚本)。这是完全没有必要的。

我的工作流程是(IntelliJ IDEA 中的所有内容): 1. 准备数据(通常是 SQL) 2. 运行 python 脚本,它将转换器管道应用于从某个数据库表构造的 pandas 数据帧并输出 PMML。3. 在您的 java 应用程序中使用 scikit-learn 模型。

于 2018-02-16T14:14:38.640 回答
0

如果你有一个带有 HDFS 后端的 ETL,我建议在集群上部署 Spark 并使用 Spark 的MLib机器学习算法。他们支持你上面提到的方法。

您介意就您计划使用的数据的大小(行、列、类型)提供一些背景信息吗?Java 不是我推荐的 ML 语言,但 Scala 编译为 JVM 字节码,并且具有与 java 相似的语法(除了具有 Java API)。

如果您正在制作概念验证,那么 Java 很好,但如果您打算使用大数据,它的扩展性并不好。

于 2017-03-10T11:45:55.457 回答
0

我为我的问题找到了一个不错的解决方案。我正在使用用Java 开发的H2O.ai来使用开源进行可扩展的机器学习。它提供 Java(Restful API)、Python、R 和 Scala 的 API。它拥有一流的分类、回归、聚类等算法,并且如果有人拥有 Spark 集群,它还可以与 Apache Hadoop 和 Spark (sparkling-water) 无缝集成。它还提供了一种基于多层前馈人工神经网络的深度学习算法。我正在使用 Java 绑定 API/Rest API,有时还使用低级 H2o API(用于 h2o 3 节点集群管理)。

我遇到了另一个基于 Java 的替代方案,称为Smile - 统计机器智能和学习引擎,它提供回归、分类、聚类、关联规则挖掘、特征选择等。有人对这些或类似的基于 Java 的 ML 库有更多反馈吗?

于 2017-09-13T20:21:56.747 回答