注:加载失败时尝试修改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. java使用array是copyof创建新长度数组

    Arrays.copyof() int[] copied = Arrays.copyOf(arr, 10); //10 the the length of the new array System.o ...

  2. mac SIP系统完整性保护关闭方法

    许多Mac用户反应,装了部分软件后打不开,那可能是sip系统完整性没有关闭.下面我们就来看一下如何关闭sip系统完整性. 检查状态 在sip系统完整性关闭前,我们先检查是否启用了SIP系统完整性保护. ...

  3. WinForm - 自定义控件

    WinForm 自定义控件 --- 系统自带类型属性 引用 https://blog.csdn.net/qq_34059233/article/details/119636338 以SunnyUI为栗 ...

  4. Mysql5.5命令行修改密码(免安装)

    1. 命令行运行 mysql -uroot -p  my.ini文件设置跳过密码验证(详情见https://www.cnblogs.com/chaoge666/p/13626037.html) 2.输 ...

  5. nacos之配置中心使用

    发布配置 dataId 数据的key group 组id 获取配置 通过group,dataId获取配置信息 监听配置 Listening-Configs里的值是重点,组成方式 dataId的值%02 ...

  6. 20202411 2020-2021-2 《Python程序设计》实验二报告

    20202411 2020-2021-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 2024 姓名: 陈书桓 学号:20202411 实验教师 ...

  7. Linux 使用Apache服务部署静态网站

    网站服务程序 我们平时访问的网站服务就是Web网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务.如图所示,Web网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求 ...

  8. Linux python后台任务

    Ubuntu 后台持续运行python服务 一般使用 nohup python -u app.py>t.log 2>&1 & nohup python3 -u app.py ...

  9. withRouter

    withRouter 可以加工一般组件,让一般组件具备路由组件所特有的api,比如this.props.history withRouter的返回值是一个新组件 import {withRouter} ...

  10. What is the Best Python IDE for Data Science?

    Created by Guido van Rossum, Python was first released back in 1991. The interpreted high-level prog ...