### 在Java/JVM应用程序中拟合和评分机器学习模型

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

我们有一个基于Java的ETL产品,可以进行大部分机器学习的数据准备步骤,如从JDBC、文件、HDFS、NoSQL等数据摄取,进行连接和聚合等(这些是特征工程所需的),现在我们想添加使用机器学习/统计建模的分析能力。

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

我确信这是一个机器学习中的常见问题,因为在生产环境中通常更倾向于使用Java而不是Python或R。您能建议在JVM应用程序中创建和执行基于Python/scikit的机器学习模型的更好方法吗?

您对在JVM应用程序中更无缝地实现步骤#2和#3有什么想法,以免影响性能和可用性:

1- 调用一个Java程序,该程序在内部调用Python scikit脚本(在后台)来创建PMML格式的模型,然后使用JPMML评估器。这将让用户感觉他是在一个单一的JVM应用程序中(更好的可用性)。我还不确定使用PMML的局限性和缺点,因为并非所有功能都在jpmml-sklearn中支持。2- 调用一个Java程序,该程序在内部调用Python脚本,在外部Python环境中进行模型创建和执行,并将模型和结果序列化到文件/csv或内存数据库(或缓存,如hazelcast),父Java应用程序将从中获取结果等。我研究后发现不能使用Jython来执行Sci-kit模型。3- 我可以使用Jep(在Java中嵌入Python)来在JVM中嵌入Cpython吗?是否有人尝试过用于sci-kit模型?

或者,我应该探索使用Mahout或weka – 这些基于Java的机器学习库来用于我的JVM应用程序。(我需要支持Windows和非Windows平台)

我也在探索H2Oai,这是一个基于Java的平台。是否有人尝试过它?


回答:

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

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

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注