首页 > 其他分享 >搭建一个简易的 PMML 模型测试环境

搭建一个简易的 PMML 模型测试环境

时间:2024-04-21 23:46:10浏览次数:19  
标签:PMML 模型 fieldName new evaluator 加载 测试环境 搭建

PMML,全称为 Predictive Model Markup Language,是一种标准化的模型描述和交换格式。它允许从不同的数据挖掘和机器学习软件中导出模型,并在其他系统中进行部署,无需重新编写代码。PMML 通过定义一套统一的规则来描述模型,包括数据预处理、模型参数以及输入输出格式等。目前PMML已支持包括逻辑回归、树模型、神经网络(目前多用ONNX 部署) 等多种常见的数据挖掘和机器学习模型。

信贷风控领域,PMML被广泛使用来部署信用评分模型,并将其集成到线下和线上的贷款申请审核流程中。本文将探讨如何利用 IntelliJ IDEA 和 Maven 搭建一个简单的 PMML 测试环境。通过这个环境,我们可以方便地加载、验证和测试各种 PMML 模型,确保它们在部署前能够正确执行并满足业务需求。

PMML 文件主要组成部分

PMML 文件包含以下几个主要部分:

  • Header:包含模型的一般信息,如版权、描述及生成模型的应用程序名称和版本。
  • Data Dictionary:定义模型使用的所有可能字段,包括字段类型(连续的、分类的、序数的)和数据类型(如字符串或双精度浮点数)。
  • Data Transformations:定义数据转换操作,包括规范化、离散化和值映射等,以适应挖掘模型的需求。
  • Model:描述数据挖掘模型的具体信息,如模型名称、函数名称、算法名称及激活函数等。
  • Mining Schema:列出模型中使用的所有字段,并包含每个字段的具体信息,如使用类型和缺失值处理策略。
  • Output:定义模型输出字段,用于后处理预测值,如转换或应用概率分布等。

在风控模型的开发与测试中,利用PMML(Predictive Model Markup Language)进行模型部署与验证是一种高效且常用的方法。今天,我们将探讨如何通过PMML来测试预测模型,同时也分享一些实用的代码片段,帮助你更好地理解与应用。

Maven 依赖配置

pom.xml​文件中配置所需的依赖,确保PMML-Evaluator能够被正确加载。下面是一个简单的示例,展示了如何配置这些依赖:

<dependencies>
    <dependency>
        <groupId>org.jpmml</groupId>
        <artifactId>pmml-evaluator</artifactId>
        <version>1.5.10</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.3</version>
    </dependency>
</dependencies>

模型加载与评估

通过PMML模型进行评估前,需要先加载PMML文件。

public static Evaluator loadPmmlEvaluator(String modelPath) throws Exception {
    File modelFile = new File(modelPath);
    try (InputStream modelInputStream = new FileInputStream(modelFile)) {
        PMML pmmlModel = org.jpmml.model.PMMLUtil.unmarshal(modelInputStream);
        ModelEvaluatorFactory evaluatorFactory = ModelEvaluatorFactory.newInstance();
        ModelEvaluatorBuilder evaluatorBuilder = new ModelEvaluatorBuilder(pmmlModel)
                .setModelEvaluatorFactory(evaluatorFactory);
        return evaluatorBuilder.build();
    }
}

测试数据的生成

生成合适的测试数据是模型验证的关键。以下代码片段可以直接通过加载的 PMML 文件中的字段,来生成一份测试数据,用于模型的快速验证:

public static Map<String, Double> createTestInputData(Evaluator evaluator) {
    List<InputField> inputFields = evaluator.getInputFields();
    Map<String, Double> inputData = new HashMap<>();
    Random randomGenerator = new Random();
    for (InputField field : inputFields) {
        FieldName fieldName = field.getName();
        inputData.put(fieldName.getValue(), randomGenerator.nextDouble() * 200000);
    }
    return inputData;
}

执行模型预测

最后一步是使用前面生成的测试数据来执行模型预测。

public static void executeModelPrediction(Evaluator evaluator, Map<String, Double> inputData) throws Exception {
    Map<FieldName, FieldValue> preparedInputs = new LinkedHashMap<>();
    for (InputField field : evaluator.getInputFields()) {
        FieldName fieldName = field.getName();
        Object rawValue = inputData.get(fieldName.getValue());
        FieldValue preparedValue = field.prepare(rawValue);
        preparedInputs.put(fieldName, preparedValue);
    }

    Map<FieldName, ?> predictionResults = evaluator.evaluate(preparedInputs);
    for (TargetField targetField : evaluator.getTargetFields()) {
        FieldName fieldName = targetField.getName();
        Object fieldValue = predictionResults.get(fieldName);
        System.err.println("Target: " + fieldName.getValue() + " Value: " + fieldValue);
    }
}

通过正确配置 PMML 模型文件路径,可以快速对自动生成的测试样本打分测试,输出格式如下:

image

通过以上步骤,我们搭建了一个快速对 PMML 模型文件进行本地测试的简易环境,可以有效地加载、执行PMML模型,进行必要的测试。

参考资料

Predictive Model Markup Language

PMML文档

标签:PMML,模型,fieldName,new,evaluator,加载,测试环境,搭建
From: https://www.cnblogs.com/aka-chestnut/p/18149783

相关文章

  • Python环境和PyCharm搭建教程
    1、python下载和安装1、访问Python官网:https://www.python.org/ 2、以Windows为例,我们选择一个稳定的版本进行安装,这里需要注意选择和自己操作系统类型一致的安装包,64位操作系统选择 64-bit/32位操作系统选择 32-bit,x86表示是32位机子/x86-64表示64位机子的。Stabl......
  • 前端【TS】02-typescript【基础】【搭建Vite+Vue3+TS项目】【为ref标注类型】
    前置基于Vite创建Vue3+TS环境vite官方文档:https://cn.vitejs.dev/guide/vite除了支持基础阶段的纯TS环境之外,还支持Vue+TS开发环境的快速创建,命令如下:1npmcreatevite@latestvue-ts-project----templatevue-ts23//说明:41.npmcreatevite@lates......
  • 如何在服务器上搭建git仓库
    参考:https://blog.csdn.net/qq_43615903/article/details/104875791安装git并创建用户该服务器上如果已经建过仓库,可以直接跳到下一部分使用yuminstallgit安装git,使用git--version检查是否安装成功。使用addusergit创建用户,使用passwdgit设置密码,其中用户名和......
  • zk集群+kafka集群搭建
    kafka集群搭建本文环境:Javajdk1.8+zookeeper3.6.1+kafka2.6.0+CentOS7.2准备服务器:三台linux服务器分别是11.10.135.198、11.10.135.202、11.10.135.207前置说明:zookeeper运行需要依赖jdk,kafka运行需要依赖zokeeper,所以需要先安装jdk,然后安装zookeepe......
  • 模拟器搭建流程
    第一个文件mmap_drvUbuntu中在客户端打开桌面文件mmap_drv这是个驱动文件,sudomake是编译命令,如果需要清理生成的驱动文件那就输入sudomakeclean.前面下驱动的指令已经完成并且安装第二个文件event_drvevent_drv文件也一样cd到他的位置然后sudomakeclean干净后再sudomake......
  • 使用Lagent AgentLego 搭建智能体
    对于这个作业,这里只给出截图,不给详细过程,因为确实没有什么好写的。具体的步骤可以查看官方教程。作业要求基础作业完成LagentWebDemo使用,并在作业中上传截图。文档可见LagentWebDemo完成AgentLego直接使用部分,并在作业中上传截图。文档可见直接使用AgentLego。......
  • 搭建清华ChatGLM2-6B
    一、环境配置ChatGLM2-6B至少需要13G GPU(虽然官网说12G即可),int8需要8G,int4需要4G。Win10系统,GTX1060显卡6GB(只能用int4模型,亲测开启GLM2时占了5GB以上)1、git2、conda 3、python3.94、pip5、CUDA11.1(GPU相关)6、torch1.10.1 (跟......
  • SRS 4.0开发环境搭建:包括推流、服务器配置、拉流测试
    SRS4.0开发环境搭建:包括推流、服务器配置、拉流测试音视频开发技术 ​关注他 2人赞同了该文章云服务器:阿里云Ubuntu16.04服务器:SRS(SimpleRealtimeServer,支持RTMP、HTTP-FLV、HLS、WebRTC)推流端:ffmpeg+OBS拉流端:ffplay+VLC+srs播放......
  • 便宜又好用的免费服务器-搭建网站必备!优惠服务器,你值得拥有!
    ++书谷网库++服务器收录大全便宜又好用的免费服务器——搭建网站必备!优惠服务器,你值得拥有!在数字化时代的浪潮中,拥有一个属于自己的网站已经成为个人、企业乃至机构展示自身形象、推广产品和服务的重要途径。然而,对于许多初学者和小型企业来说,搭建网站的成本和难度常常成为阻碍他......
  • 免费PHP服务器-轻松搭建网站,快速响应,稳定高速!
    免费的PHP服务器对于初学者和小型项目来说可能是一个吸引人的选择,但需要注意的是,免费的服务往往有一些限制和潜在的风险。在选择免费PHP服务器时,请务必考虑以下几点:++书谷网库++免费服务器收录大全性能限制:免费服务器往往有资源限制,如CPU、内存和存储空间的限制。这可能导致网站......