JAVA加载PMML算法模型
注:加载失败时尝试修改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算法模型的更多相关文章
- Torch 7 load saved model failed, 加载保存的模型失败
Torch 7 load saved model failed, 加载保存的模型失败: 可以尝试下面的解决方案:
- Java加载资源文件的两种方法
处理配置文件对于Java程序员来说再常见不过了,不管是Servlet,Spring,抑或是Structs,都需要与配置文件打交道.Java将配置文件当作一种资源(resource)来处理,并且提供了两 ...
- java加载properties文件的六中基本方式实现
java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过impo ...
- java加载类的方法1.classloader 2.class.forName()
java加载类的方法1.classloader 2.class.forName() 加载一个类后,是在方法去创建这个类的元信息class对象,在方法区立刻创建.在方法区创建.
- Java加载Properties配置文件工具类
Java加载Properties配置文件工具类 import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; ...
- cesium模型加载-加载fbx格式模型
整体思路: fbx格式→dae格式→gltf格式→cesium加载gltf格式模型 具体方法: 1. fbx格式→dae格式 工具:3dsMax, 3dsMax插件:OpenCOLLADA, 下载地址 ...
- JAVA加载Properties配置资源文件
JAVA加载Properties配置资源文件 制作人:全心全意 配置文件(资源文件):以properties作为拓展名的文件 Java代码是如何加载properties文件的? 必须使用Propert ...
- java加载properties文件的六种方法总结
java加载properties文件的六种方法总结 java加载properties文件的六中基本方式实现 java加载properties文件的方式主要分为两大类:一种是通过import java. ...
- java加载property文件配置
1 properties简介: properties是一种文本文件,内容格式为: key = value #单行注释 适合作为简单配置文件使用,通常作为参数配置.国际化资源文件使用. ...
- Java加载Class文件的原理机制
详见:http://blog.sina.com.cn/s/blog_6cbfd2170100ljmp.html 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器 ...
随机推荐
- canvas 模糊
让style以50%的效果展示 创建2倍的canvas <!DOCTYPE html> <html> <head> <meta charset="u ...
- 微信小程序云函数中管理短信验证码的完整SDK工具
微信小程序云开发管理短信验证码并不是一件容易的事情,它不像其他web服务器开发中可以将验证码存放到session或者cookie中,你只能将其存到云开发的数据库中,实现起来非常困难.一个简单的需要短信 ...
- 存储SAN
存储技术介绍 DAS (direct attached storage) 直接连接存储--块级 SAN(storage area network) 存储区域网络--块级 NAS(network ...
- HTTP-看这一篇就够了
HTTP和HTTPS有什么区别 1.传输过程中信息是否加密,HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密的超文本传输协议,信息是加密传输: 2.服务端使用的端口号不一致 ...
- double 四舍五入和去尾
// import java.math.RoundingMode;// import java.text.NumberFormat; double d= 1.345233; //四舍五入 保留两位小数 ...
- Vue3 + Vue Router 4.x 添加过渡动效报错
1. 报错信息 2. 报错原因 检查页面代码发现动效出错页面为多根节点,修改后动效正常 <template> <div> <div>xxx</div> ...
- 会话保持 Session和cookie
Session是什么? Session在网络中称为会话控制,是服务器为了保护用户状态而创建的一个特殊的对象,简而言之,session就是一个对象,用于存储信息. Session有什么用? sessio ...
- #科技 #资讯 #生活 RTX 4080显卡在欧跌破建议零售价, 小鹏回应自研电池, Meta因泄漏超5亿用户资料被罚款 ,黑猫投诉开启2022“你我同心 反诈同行”系列活动,这就是今天的其它大新闻
今天是2022年11月29日 十一月初六 现在是下午15:29 下面是今天的其他大新闻 #NEWS 1 #RTX 4080在欧跌破建议零售价 ( IT 之家 )据 PCGamesHardware 报道 ...
- hbuliter x 连接雷电模拟器
adb 路径 E:\HBuilderX\plugins\launcher\tools\adbs 也可以配置环境变量 配置环境变量:将adb.exe所在路径,放在Path中计算机(右键)→属性→高级系 ...
- function | fastica
fastica - Fast Independent Component Analysis FastICA for Matlab 7.x and 6.x Version 2.5, October 19 ...