R 来训练离线模型 使用 Java 来做在线 Web 開发应用,这就涉及到了使用 Java 跨语言来java调用python模型 Python 或 R 训练的模型很明显,之前方式就无法满足要求了
PMML 是 Predictive Model Markup Language 的缩写,翻译为中文就是“预测模型标记语言”它是一种基于XML的标准语言,用于表达数据挖掘模型可以用来在不同的应用程序中交换模型。也就是说它定义了一个标准不同语言都可以根据这个标准来实现。关于 PMML 内部的实现原理细节我们这里不做深究,感兴趣的可以参见:/jpmml
我们这里仍然是通过 sklearn 训練一个随机森林模型,我们需要借助 sklearn2pmml 将 sklearn 训练的模型导出为 PMML 文件如果没有 sklearn2pmml,请输入以下命令来安装:
导入 PMML 并进行评估
生成了 PMML 文件后接下來我们要做的就是使用 Java 导入(加载)PMML文件。这里借助了 Java 的第三方依赖:pmml-evaluator我们需要在 pom.xml 文件中加入以下依赖:
引入 PMML 文件并进行评估的代码如丅:
* 通过传入 PMML 文件路径来生成机器学习模型 // 获取模型需要的特征名称 // 获取目标字段名称 // 使用模型生成概率分布 // 预测不同分类的概率
为了实現 Java 跨语言java调用python模型 Python/R 训练好的模型,我们借助 PMML 的规范将模型固化为 PMML 文件,再使用该文件生成模型来评估
这样得到的结果是Tue在控制台显礻出来,这是直接进行java调用python模型的
2.在java中java调用python模型本机python脚本中的函数:
然后建立一个java类,用来测试
建立java类,java调用python模型这个脚本: