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

问题描述 投票:5回答:3

您能否指导我如何在基于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-调用一个java程序,它在内部调用python scikit script(在引擎盖下)到create a model in 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。有人试过吗

java machine-learning scikit-learn h2o pmml
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模型。


0
投票

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

您是否介意给出一些关于您计划使用的数据大小(行,列,类型)的上下文? Java不是我推荐的ML的goto语言,但Scala编译为JVM字节码,并且具有与java类似的语法(除了具有Java API)。

如果您正在制作概念验证,那么Java就可以了,但如果您计划使用大数据,那么它实际上并不能很好地扩展。


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库有更多的反馈?

© www.soinside.com 2019 - 2024. All rights reserved.