增加pmml测试
This commit is contained in:
14
ddp/.gitignore
vendored
14
ddp/.gitignore
vendored
@@ -1,14 +0,0 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.idea
|
||||
.Archive/
|
||||
.vscode/
|
||||
dist
|
||||
*.log
|
||||
target/
|
||||
*.iml
|
||||
apidoc/
|
||||
logs/
|
||||
@@ -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
|
||||
74
ddp/ddp-runner-api/src/test/java/pmml/PmmlTest.java
Normal file
74
ddp/ddp-runner-api/src/test/java/pmml/PmmlTest.java
Normal 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);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
22
ddp/ddp-runner-api/src/test/resources/demo001.pmml
Normal file
22
ddp/ddp-runner-api/src/test/resources/demo001.pmml
Normal 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>
|
||||
Reference in New Issue
Block a user