注:加载失败时尝试修改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. GOF23种设计模式是哪些

    设计模式实践里面提供了许多经久不衰的解决方案和最佳方案.这里,GOF 设计模式主要分为三大类:创建模式.结构模式和行为模式.创建模式对于创建对象实例非常有用.结构模式通过处理类或对象的组合来作用于企业 ...

  2. Qt中QGraphicsScene和QraphicsView显示坐标问题解决

    相信打开这个界面的你,一定遇到了这两玩意儿设置完坐标发现对不上的问题...查询Qt官方文档后发现: 网上搜索了一番,基本上这个坐标系就是长酱紫: 所以加上这行代码就行了: ui->graphic ...

  3. 转载:java中DAO层、Service层、Control层的说明

    转自:https://blog.csdn.net/qq_22771739/article/details/82344336?utm_source=blogxgwz6 DAO层:DAO层叫数据访问层,全 ...

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

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

  5. PostScript语言教程(五、文本打印)

    5.1.POSTSCRIPT字体 字体是具有统一规格的字符集.其中包含数百个字符集,包含熟悉的TIMES和HELVETICA 使用POSTSCRIPT字体 在你打印文本之前,你需要指定所需的字体,这个 ...

  6. Vue 二维码生成插件

    1. 安装 qrcode.vue 仓库地址 // vue2 安装1.x版本.vue3 安装3.x版本 npm install --save qrcode.vue // 或 yarn add qrcod ...

  7. once函数

    function once(fn){ let down = false; return function(){ if(!down){ down = true; return fn.apply(this ...

  8. js获取当前日期的前七天,月份+日(数组)

    1.定义一个空对象. let dayArr = []: 2.时间格式化  function formatterDate(date,fmt){     let nowDate = {       yyy ...

  9. 4组-Beta冲刺-2/5

    一.基本情况 队名:摸鲨鱼小队 组长博客:https://www.cnblogs.com/smallgrape/p/15595704.html github链接:https://github.com/ ...

  10. P2504 聪明的猴子

    题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上.猴子不会游泳,但跳跃能力比较强,它们仍然可以 ...