如何在基于Java/JVM的应用程序中拟合和评分机器学习模型

Gau*_*pta 5 java machine-learning scikit-learn pmml h2o

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

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

现在,我们使用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-调用一个java程序,它在内部调用python脚本并在外部python环境中执行模型创建和执行,并将模型和结果序列化为file/csv或内存DB(或缓存,如hazelcast)父Java应用程序将获取结果等.我研究了我不能使用Jython来执行Sci-kit模型.3-我可以使用Jep(在Java中嵌入Python)在CVM中嵌入Cpython吗?是否有人尝试过sci-kit模型?

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

我也在探索基于java的H2Oai.有人试过吗

Gau*_*pta 0

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

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