增加pmml测试

This commit is contained in:
2025-02-11 22:29:21 +08:00
parent a84ec9dff5
commit 36184d8cc2
13 changed files with 161 additions and 183 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -3,7 +3,7 @@ node_modules/
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
.idea # .idea
.Archive/ .Archive/
.vscode/ .vscode/
dist dist

5
.idea/.gitignore generated vendored
View File

@@ -1,5 +0,0 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/

9
.idea/FIBO-Rule.iml generated
View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

75
.idea/compiler.xml generated
View File

@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="ddp-enginex-dataflow-engine" />
<module name="ddp-monitor" />
<module name="ddp-datax-dataflow-field" />
<module name="ddp-datax-realtime-field" />
<module name="ddp-strategyx-script-rule" />
<module name="ddp-analysis" />
<module name="ddp-common-utils" />
<module name="ddp-enginex-runner-node" />
<module name="ddp-enginex-risk-engine" />
<module name="ddp-strategyx-collection-rule" />
<module name="ddp-enginex-rule-engine" />
<module name="ddp-common-model" />
<module name="ddp-strategyx-score-card" />
<module name="ddp-strategyx-decision-table" />
<module name="ddp-strategyx-list-library" />
<module name="ddp-strategyx-guide-rule" />
<module name="ddp-modelx" />
<module name="ddp-enginex-personas-engine" />
<module name="ddp-datax-offline-field" />
<module name="ddp-strategyx-ai-model" />
<module name="ddp-runner-api" />
<module name="ddp-common-dao" />
<module name="ddp-strategyx-tag" />
<module name="ddp-strategyx-data-clean" />
<module name="ddp-authx" />
<module name="ddp-enginex-marketing-engine" />
<module name="ddp-common-service" />
<module name="ddp-strategyx-decision-tree" />
<module name="ddp-manager-web" />
</profile>
</annotationProcessing>
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="ddp-analysis" options="-parameters" />
<module name="ddp-authx" options="-parameters" />
<module name="ddp-common-dao" options="-parameters" />
<module name="ddp-common-model" options="-parameters" />
<module name="ddp-common-service" options="-parameters" />
<module name="ddp-common-utils" options="-parameters" />
<module name="ddp-datax-dataflow-field" options="-parameters" />
<module name="ddp-datax-offline-field" options="-parameters" />
<module name="ddp-datax-realtime-field" options="-parameters" />
<module name="ddp-enginex-dataflow-engine" options="-parameters" />
<module name="ddp-enginex-marketing-engine" options="-parameters" />
<module name="ddp-enginex-personas-engine" options="-parameters" />
<module name="ddp-enginex-risk-engine" options="-parameters" />
<module name="ddp-enginex-rule-engine" options="-parameters" />
<module name="ddp-enginex-runner-node" options="-parameters" />
<module name="ddp-manager-web" options="-parameters" />
<module name="ddp-modelx" options="-parameters" />
<module name="ddp-monitor" options="-parameters" />
<module name="ddp-runner-api" options="-parameters" />
<module name="ddp-strategyx-ai-model" options="-parameters" />
<module name="ddp-strategyx-collection-rule" options="-parameters" />
<module name="ddp-strategyx-data-clean" options="-parameters" />
<module name="ddp-strategyx-decision-table" options="-parameters" />
<module name="ddp-strategyx-decision-tree" options="-parameters" />
<module name="ddp-strategyx-guide-rule" options="-parameters" />
<module name="ddp-strategyx-list-library" options="-parameters" />
<module name="ddp-strategyx-score-card" options="-parameters" />
<module name="ddp-strategyx-script-rule" options="-parameters" />
<module name="ddp-strategyx-tag" options="-parameters" />
</option>
</component>
</project>

44
.idea/encodings.xml generated
View File

@@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/ddp/ddp-analysis/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-authx/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-common/ddp-dao/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-common/ddp-model/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-common/ddp-service/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-common/ddp-utils/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-common/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-datax/dataflow-field/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-datax/offline-field/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-datax/realtime-field/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-datax/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-datax/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-enginex/dataflow-engine/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-enginex/marketing-engine/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-enginex/personas-engine/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-enginex/risk-engine/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-enginex/rule-engine/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-enginex/runner-node/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-enginex/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-enginex/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-manager-web/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-modelx/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-monitor/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-runner-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/ai-model/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/collection-rule/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/data-clean/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/decision-table/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/decision-tree/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/guide-rule/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/list-library/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/score-card/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/script-rule/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/ddp-strategyx/tag/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ddp/src/main/resources" charset="UTF-8" />
</component>
</project>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://maven.aliyun.com/repository/public" />
</remote-repository>
</component>
</project>

14
.idea/misc.xml generated
View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/ddp/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml generated
View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/FIBO-Rule.iml" filepath="$PROJECT_DIR$/.idea/FIBO-Rule.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@@ -1 +1,64 @@
spring.profiles.active=dev # spring.profiles.active=dev
server.port=8070
server.servlet.context-path=/Riskmanage
logging.config=classpath:logging-config.xml
# mysql
spring.datasource.druid.url=jdbc:mysql://120.27.225.67:9609/riskmanage?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
spring.datasource.druid.username=riskmanage
spring.datasource.druid.password=riskmanage@Farben2023
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.initialSize=20
spring.datasource.druid.minIdle=20
spring.datasource.druid.maxActive=100
spring.datasource.druid.maxWait=60000
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
spring.datasource.druid.minEvictableIdleTimeMillis=300000
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.testOnBorrow=true
spring.datasource.druid.testOnReturn=false
spring.datasource.druid.poolPreparedStatements=true
spring.datasource.druid.maxOpenPreparedStatements=20
spring.datasource.druid.validationQuery=SELECT 1
spring.datasource.druid.validation-query-timeout=500
spring.datasource.druid.filters=stat
# redis
redis.host=127.0.0.1
redis.port=6379
redis.db=0
redis.password=
redis.pool.maxTotal=3000
redis.pool.maxIdle=100
redis.pool.maxWait=1000
redis.pool.timeout=100000
# mail
spring.mail.host=smtp.exmail.qq.com
spring.mail.username=xxx
spring.mail.password=xxx
spring.mail.port=465
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.timeout=50000
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback=false
## hbase
spring.data.hbase.quorum: ip:2181
spring.data.hbase.rootDir: /usr/local/hbase/datatest
spring.data.hbase.nodeParent: /hbase
runner.url: http://localhost:8071
# hbase
monitor.data.storage.type=mysql
# canal
switch.use.cache=off
switch.canal.cache=off
canal.hostname=127.0.0.1
canal.port=11111

View File

@@ -0,0 +1,74 @@
package pmml;
import com.fibo.ddp.common.service.strategyx.aimodel.PMMLExecutor.PMMLExecutor;
import com.fibo.ddp.common.service.strategyx.aimodel.PMMLExecutor.impl.PMMLExecutorRFImpl;
import org.jpmml.evaluator.InputField;
import org.jpmml.evaluator.OutputField;
import org.jpmml.evaluator.TargetField;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PmmlTest {
public static void main(String[] args)throws Exception{
PMMLExecutor pmmlExecutor = new PMMLExecutorRFImpl();
String file = "/Users/dugang/work/2025/risk/fibo-rule/ddp/ddp-runner-api/src/test/resources/demo001.pmml";
// 加载模型文件
org.jpmml.evaluator.Evaluator evaluator = pmmlExecutor.loadPmml(file);
System.out.println("summary="+ evaluator.getSummary());
List<InputField> inputFields = evaluator.getInputFields();
System.out.println("inputFields.size="+inputFields.size());
for(InputField item:inputFields){
System.out.println(item);
}
List<InputField> activeFields = evaluator.getActiveFields();
System.out.println("activeFields.size="+activeFields.size());
for(InputField item:activeFields){
System.out.println(item);
}
List<TargetField> targetFields = evaluator.getTargetFields();
System.out.println("targetFields.size="+targetFields.size());
for(TargetField item:targetFields){
System.out.println(item);
}
List<OutputField> outputFields = evaluator.getOutputFields();
System.out.println("outputFields.size="+outputFields.size());
for(OutputField item:outputFields){
System.out.println(item);
}
Map<String, Object> input = new HashMap<>();
input.put("x1",1.0);
input.put("x2",2.0);
double modelResult = pmmlExecutor.predict(evaluator, input);
System.out.println("modelResult="+modelResult);
input.put("x1","1.0");
input.put("x2","2.0");
modelResult = pmmlExecutor.predict(evaluator, input);
System.out.println("modelResult="+modelResult);
input.put("x1","1.7");
input.put("x2","2.1");
modelResult = pmmlExecutor.predict(evaluator, input);
System.out.println("modelResult="+modelResult);
}
}

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<PMML xmlns="http://www.dmg.org/PMML-4_4" version="4.4">
<Header copyright="Example Corp" description="Simple Linear Regression Model">
<Application name="Example App" version="1.0"/>
</Header>
<DataDictionary numberOfFields="3">
<DataField name="x1" optype="continuous" dataType="double"/>
<DataField name="x2" optype="continuous" dataType="double"/>
<DataField name="y" optype="continuous" dataType="double"/>
</DataDictionary>
<RegressionModel modelName="SimpleLinearRegression" functionName="regression">
<MiningSchema>
<MiningField name="x1" usageType="active"/>
<MiningField name="x2" usageType="active"/>
<MiningField name="y" usageType="predicted"/>
</MiningSchema>
<RegressionTable intercept="1.0">
<NumericPredictor name="x1" exponent="1" coefficient="0.5"/>
<NumericPredictor name="x2" exponent="1" coefficient="0.3"/>
</RegressionTable>
</RegressionModel>
</PMML>