注:加载失败时尝试修改pmml文件版本为4.3

依赖

<dependency>
<groupId>org.jpmml</groupId>
<artifactId>pmml-evaluator</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.jpmml</groupId>
<artifactId>pmml-evaluator-extension</artifactId>
<version>1.4.1</version>
</dependency> ------------resources添加--------------
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<include>application-${activatedProperties}.yml</include>
<include>**/**.pmml</include>
</includes>
</resource>
</resources>
加载模型
@Bean
@Qualifier("evaluator")
public Evaluator load() {
PMML pmml = null;
try {
ClassPathResource classPathResource = new ClassPathResource("META-INF/xxx.pmml");
InputStream is = classPathResource.getInputStream();
pmml = PMMLUtil.unmarshal(is);
} catch (IOException e) {
log.error("Get resource:xxx.pmml failed! error msg:{}", e.getMessage());
} catch (JAXBException | SAXException e) {
log.error(e.getMessage());
}
ModelEvaluatorFactory modelEvaluatorFactory = ModelEvaluatorFactory.newInstance();
modelEvaluator = (Evaluator) modelEvaluatorFactory.newModelEvaluator(pmml);
modelEvaluator.verify();
log.info("load model successful!");
return modelEvaluator;
}
调用模型
@Autowired
@Qualifier("evaluator")
private Evaluator evaluator; @Test
public void moduleTest() {
List<InputField> inputFields = evaluator.getInputFields();
Map<String, Object> map = new LinkedHashMap<>();
map.put("x1", 50);
map.put("x2", 50);
map.put("x3", 7);
map.put("x4", 60);
map.put("x5", 250);
map.put("x6", 6);
map.put("x7", 80);
map.put("x8", 260);
map.put("x9", 48);
map.put("x10", 1);
map.put("x11", 5);
map.put("x12", 1);
map.put("x13", 0);
Map<FieldName, FieldValue> args = new HashMap<>();
for (InputField inputField : inputFields) {
FieldName name = inputField.getName();
Object value = map.get(name.getValue());
FieldValue inputFieldValue = inputField.prepare(value);
args.put(name, inputFieldValue);
}
Map<FieldName, ?> evaluate = evaluator.evaluate(args);
Object value = evaluate.get(evaluator.getTargetFields().get(0).getName());
BigDecimal predictValue = JSON.parseObject(JSON.toJSONString(value)).getJSONObject("values").getJSONObject("1.0").getBigDecimal("value");
log.info("result:{}", predictValue);
}

JAVA加载PMML算法模型的更多相关文章

  1. Torch 7 load saved model failed, 加载保存的模型失败

    Torch 7 load saved model failed, 加载保存的模型失败: 可以尝试下面的解决方案:  

  2. Java加载资源文件的两种方法

    处理配置文件对于Java程序员来说再常见不过了,不管是Servlet,Spring,抑或是Structs,都需要与配置文件打交道.Java将配置文件当作一种资源(resource)来处理,并且提供了两 ...

  3. java加载properties文件的六中基本方式实现

    java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过impo ...

  4. java加载类的方法1.classloader 2.class.forName()

    java加载类的方法1.classloader 2.class.forName() 加载一个类后,是在方法去创建这个类的元信息class对象,在方法区立刻创建.在方法区创建.

  5. Java加载Properties配置文件工具类

    Java加载Properties配置文件工具类 import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; ...

  6. cesium模型加载-加载fbx格式模型

    整体思路: fbx格式→dae格式→gltf格式→cesium加载gltf格式模型 具体方法: 1. fbx格式→dae格式 工具:3dsMax, 3dsMax插件:OpenCOLLADA, 下载地址 ...

  7. JAVA加载Properties配置资源文件

    JAVA加载Properties配置资源文件 制作人:全心全意 配置文件(资源文件):以properties作为拓展名的文件 Java代码是如何加载properties文件的? 必须使用Propert ...

  8. java加载properties文件的六种方法总结

    java加载properties文件的六种方法总结 java加载properties文件的六中基本方式实现 java加载properties文件的方式主要分为两大类:一种是通过import java. ...

  9. java加载property文件配置

    1 properties简介: properties是一种文本文件,内容格式为:     key = value     #单行注释 适合作为简单配置文件使用,通常作为参数配置.国际化资源文件使用. ...

  10. Java加载Class文件的原理机制

    详见:http://blog.sina.com.cn/s/blog_6cbfd2170100ljmp.html 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器 ...

随机推荐

  1. 小程序中使用less

    小程序中使用Less 原生小程序不支持less,其他基于小程序的框架大体都支持,如wepy,mpvue,taro等.但是仅仅因为一个less功能,而且引入一个框架,肯定是不可取的.因此可以用以下方式来 ...

  2. js实现不同的域名 输出不同的结果

    js实现域名判断后跳转到指定网址,也适用于同一虚拟空间放多个网站: <script> try { if(self.location == "http://apple.baidu. ...

  3. Docker容器 获取宿主机CPU信息等或重启网卡命令操作介绍

    一.作用场景及知识点 1. 使用场景(SSH方式除外): A. 运行在Docker容器里面的程序,怎么采集宿主机的CPU.内存.磁盘等信息: B. 容器内更改宿主机的网卡信息,怎么操作宿主机执行命令: ...

  4. Window:下载并安装FileZilla客户端

    FileZilla官方网站:https://filezilla-project.org/ 环境 操作系统:Window 10 企业版LTSC;内存:8GB;操作类型:64位. 说明 本人想在腾讯云的系 ...

  5. JDBC基本案例

    public static void main(String[] args) throws Exception { //1注册驱动 Class.forName("com.mysql.jdbc ...

  6. Coursera Programming Languages, Part C 华盛顿大学 Week 1

    来进入这一系列课程的最后一 Part 啦! \(P1\) 我们介绍了 \(ML\),一种 static typing 的 functional language \(P2\) 我们介绍了 \(Rack ...

  7. [2001年NOIP普及组] 求先序排列

    给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入 第一行输入一个字符串表示二叉树的中序排列,第二行输入一个字符串表示二叉树的后序排列. 输 ...

  8. vue 同一个子组件,两次赋值不同,dom不更新

    转自:https://blog.csdn.net/WO_JIAMIFENG/article/details/115250918 <div :key="inputkey"> ...

  9. xml与DataSet互转

    //将DataSet转换为xml字符串   public static string ConvertDataSetToXMLFile(DataSet xmlDS, Encoding encoding) ...

  10. python3GUI--轮播图效果展示By:PyQt5(附源码下载地址)

    @ 目录 一.前言 二.展示 1.酷我音乐 2.QQ飞车 3.虎牙 4.网易云音乐 5.英雄联盟 6.英雄联盟(Pro) 7.腾讯视频 三.源代码 1.demo02GUI.py 2.engine.py ...