增加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

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>