目录

  • 大体流程
  • python方面
    • 生成模型并导出pmml的代码
  • Java方面
    • 一个坑
    • 另一个小点
    • 代码

大体流程

用python将生成的模型导出为pmml格式,java通过加载本地pmml文件的形式读取模型,给予参数,实现预测或分类,本文用spring boot,接口接收前端各参数数值,预测后返回给前端使用,大致这么个流程

python方面

生成模型并导出pmml的代码

def exportPmml():iris = load_iris()# 创建带有特征名称的 DataFrameiris_df = pd.DataFrame(iris.data, columns=iris.feature_names)# 创建模型管道iris_pipeline = PMMLPipeline([("classifier", RandomForestClassifier())])# 训练模型iris_pipeline.fit(iris_df, iris.target)# 导出模型到 RandomForestClassifier_Iris.pmml 文件sklearn2pmml(iris_pipeline, "RandomForestClassifier_Iris.pmml")return None

网上可以搜到挺多,这里是用的JPMML导出Pmml,pipeline用的是PMMLPipeline,其实也是实现的sklearn的pipeline,如果用Nyoka,pipeline用的是sklearn的pipeline,差不多,它们的github主页都提供了Usage和多种模型案例

Java方面

一个坑

网上搜到的代码在加载pmml模型是如果遇到报错提示Exception in thread "main" java.lang.IllegalArgumentException: http://www.dmg.org/PMML-4_4,尝试把文件里第二行版本号修改为

另一个小点

maven里有关pmml的包的版本号1.4.x与1.5.x的代码有差别,导的版本不匹配,可能导的东西都找不到,而且名字也会不一样

代码

@Component
public class LoadModel1_5_x {private Evaluator evaluator;public String modelUrl="E:\\Softwares\\Learn\\IntelliJ_Projects\\IrisModelTest\\src\\main\\resources\\static\\RandomForestClassifier_Iris.pmml";public LoadModel1_5_x() {PMML pmml;// 模型导入try {if (modelUrl != null) {File file = new File(modelUrl);InputStream inputStream = new FileInputStream(file);InputStream is = inputStream;pmml = org.jpmml.model.PMMLUtil.unmarshal(is);ModelEvaluatorFactory modelEvaluatorFactory = ModelEvaluatorFactory.newInstance();//1.5.x版本 使用一个pmml配置了两个不同的evaluatorsModelEvaluatorBuilder modelEvaluatorBuilder = new ModelEvaluatorBuilder(pmml);//第一种this.evaluator = modelEvaluatorBuilder.build();System.out.println("模型build成功!");}} catch (FileNotFoundException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (JAXBException e) {e.printStackTrace();}}public Object predict(Map<String,Double> irismap){List<InputField> inputFields = evaluator.getInputFields();// 过模型的原始特征,从画像中获取数据,作为模型输入Map<FieldName, FieldValue> arguments = new LinkedHashMap();for (InputField inputField : inputFields) {FieldName inputFieldName = inputField.getName();Object rawValue = irismap.get(inputFieldName.getValue());FieldValue inputFieldValue = inputField.prepare(rawValue);arguments.put(inputFieldName, inputFieldValue);}Map<FieldName, ?> results = evaluator.evaluate(arguments);List<TargetField> targetFields = evaluator.getTargetFields();//对于分类问题等有多个输出。for (TargetField targetField : targetFields) {FieldName targetFieldName = targetField.getName();Object targetFieldValue = results.get(targetFieldName);System.err.println("target: " + targetFieldName.getValue()+ " value: " + targetFieldValue);}return results;}}

然后controller里autowired一个模型,构造一个参数map

Map<String, Double> map = new HashMap<String, Double>();map.put("sepal length (cm)", (double) 7);map.put("sepal width (cm)", (double) 3.2);map.put("petal length (cm)", (double) 4.7);map.put("petal width (cm)", (double) 1.4);

使用模型类的predict方法就可以简单实现啦

jav使用python模型实现方案相关推荐

  1. android studio调用python_Android Studio调用python运行thensorflow模型--CLE方案实现

    Android Studio调用python运行thensorflow模型--CLE方案实现 Android Studio调用python运行thensorflow模型--CLE方案实现 我使用的是虚 ...

  2. 太骚了!Python模型完美切换SAS,还能这么玩。。

    作者:东哥起飞 来源:Python数据科学 大家都知道,Python 和 SAS 是两个很常用的数据挖掘工具.Python 开源.免费.有丰富的三方库,一般在互联网公司广泛使用.而SAS需付费,且费用 ...

  3. python 线性回归 技术方案亮点_python线性回归实战案例

    最近在学习朋友常国珍老师的书,内容非常实用!希望深入浅出学习机器学习的同学可学习北大博士常国珍建模实战课程系列常国珍录制的Python 数据科学机器学习教学视频,可以由浅入深的学习机器学习! 本案例代 ...

  4. Python模型顶点法线修复

    Python模型顶点法线修复 参考: https://zhuanlan.zhihu.com/p/52297977

  5. Python 模型持久化

    Python 模型持久化 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 模型持久化简介 当我们需要将我们的模型与其它的应用或 ...

  6. python模型部署方法_终极开箱即用的自动化Python模型选择方法

    python模型部署方法 Choosing the best model is a key step after feature selection in any data science proje ...

  7. 1w字详解 ClickHouse漏斗模型实践方案(收藏)

    作者:互联网大数据团队- Wu Yonggang 日常工作中做为数仓开发工程师.数据分析师经常碰到漏斗分析模型,本文详细介绍漏斗模型的概念及基本原理,并阐述了其在平台内部的具体实现.针对实际使用过程的 ...

  8. 如何防止你的代码被窃取?Python代码加密方案汇总(带实例验证)

    Python代码加密方案汇总 文章目录 Python代码加密方案汇总 需求描述 基础:Python文件格式 `.py` python源代码 `.pyc` 编译得到的字节码文件 `.pyo` 编译优化后 ...

  9. python模型训练_python模型训练与预测练习

    python模型训练与预测练习 发布时间:2018-03-09 17:49, 浏览次数:368 , 标签: python 我是照着YouTube上的机器学习视频做的,视频里讲的比较简洁,下来自己做遇到 ...

  10. python模型转PMML

    关于python模型的部署,目前有以下几种方式 flask等python为服务框架,无需跨语言 xgb4j,lgb4j等Java包,需跨语言,但只支持xgb/lgb PMML,跨语言,支持所有skle ...

最新文章

  1. 比特币源码研读(4)数据结构-交易池TransactionPool
  2. 原创文章收录不高从根源找问题
  3. 计算机网络·CSMA/CD协议有关计算
  4. AI+5G:2019.03.31第11届中国(深圳)IT领袖峰会【IT新未来: 5G与人工智能】内容概要
  5. python语句分类_Python新手入门【语句类型】
  6. 几个so经常使用Function
  7. 理解Android安全机制
  8. “不会Linux,会有什么影响?”资深程序员:基本等于自废武功!
  9. C语言:使用冒泡算法将数组中的数据从大到小进行排序
  10. Modelsim的下载及安装
  11. Unity基础知识结构总结
  12. Linux入门及进阶学习推荐书籍
  13. 热敏电阻制作温度传感器的c语言,NTC热敏电阻温度测量和控制系统.doc
  14. 数据结构 实验 c/c++ 六度空间 图 图论
  15. 电脑it族宝典常用电脑的从怎样保护自己的眼睛
  16. 全智通A+常见问题汇总解答—A+库存盘点,点击生成盘点,生成错误的数据
  17. STEAM游戏高主频i9-12900k 搭建CS:GO服务器
  18. java毕业设计bs架构实习管理系统源码+系统+数据库+lw文档+调试运行
  19. 主成分分析(PCA)与K-L变换
  20. Nginx HTTP请求的11个阶段

热门文章

  1. TapTap实习三个月总结
  2. 英语语法成分:主谓宾定状补
  3. Python pandas,pandas.series,series的主要方法
  4. Word2016如何插入公式?Word2016插入公式方法
  5. 政府12345便民服务热线 -- MICC全媒体智能呼叫中心建设方案
  6. 为什么说数据不动代码动?移动计算比移动数据更划算?
  7. 三种常规用的矢量网络分析仪系统误差校准方法
  8. android脚本,安卓好用的脚本程序—Gscript
  9. PYNQ在PS端进行图片缩放
  10. bzoj 4568 [Scoi2016]幸运数字