use of org.drools.core.impl.InternalRuleUnitExecutor in project drools by kiegroup.
the class DecisionTreeTest method testMissingTreeWeighted2.
@Test
public void testMissingTreeWeighted2() throws Exception {
Resource res = ResourceFactory.newClassPathResource(source2);
KieBase kbase = new KieHelper().addResource(res, ResourceType.PMML).build();
RuleUnitExecutor executor = RuleUnitExecutor.create().bind(kbase);
KieRuntimeLogger console = ((InternalRuleUnitExecutor) executor).addConsoleLogger();
PMMLRequestData requestData = new PMMLRequestData("123", "Missing");
requestData.addRequestParam(new ParameterInfo<>("123", "fld1", Double.class, -1.0));
requestData.addRequestParam(new ParameterInfo<>("123", "fld2", Double.class, -1.0));
requestData.addRequestParam(new ParameterInfo<>("123", "fld3", String.class, "miss"));
PMML4Result resultHolder = new PMML4Result();
DataSource<PMMLRequestData> data = executor.newDataSource("request");
DataSource<PMML4Result> results = executor.newDataSource("results");
DataSource<PMML4Data> pmmlData = executor.newDataSource("pmmlData");
List<String> possiblePackages = calculatePossiblePackageNames("Missing");
Class<? extends RuleUnit> unitClass = getStartingRuleUnit("RuleUnitIndicator", (InternalKnowledgeBase) kbase, possiblePackages);
assertNotNull(unitClass);
int x = executor.run(unitClass);
data.insert(requestData);
results.insert(resultHolder);
executor.run(unitClass);
console.close();
System.out.println(resultHolder);
Collection<?> objects = ((InternalRuleUnitExecutor) executor).getSessionObjects();
objects.forEach(o -> {
System.out.println(o);
});
pmmlData.forEach(pd -> {
System.out.println(pd);
});
AbstractTreeToken token = (AbstractTreeToken) resultHolder.getResultValue("MissingTreeToken", null);
assertNotNull(token);
assertEquals(0.6, token.getConfidence(), 1e-6);
assertEquals("null", token.getCurrent());
assertEquals(100.0, token.getTotalCount(), 0.0);
Object fld9 = resultHolder.getResultValue("Fld9", null);
assertNotNull(fld9);
String value = (String) resultHolder.getResultValue("Fld9", "value");
assertNotNull(value);
assertEquals("tgtX", value);
}
use of org.drools.core.impl.InternalRuleUnitExecutor in project drools by kiegroup.
the class MiningmodelTest method testSelectAll.
@Test
public void testSelectAll() {
RuleUnitExecutor executor = createExecutor(source4);
// KieRuntimeLogger console = ((InternalRuleUnitExecutor)executor).addConsoleLogger();
PMMLRequestData request = new PMMLRequestData("1234", "SampleSelectAllMine");
request.addRequestParam("age", 33.0);
request.addRequestParam("occupation", "SKYDIVER");
request.addRequestParam("residenceState", "KN");
request.addRequestParam("validLicense", true);
PMML4Result resultHolder = new PMML4Result();
resultHolder.setCorrelationId(request.getCorrelationId());
DataSource<PMMLRequestData> childModelRequest = executor.newDataSource("childModelRequest");
DataSource<PMML4Result> childModelResults = executor.newDataSource("childModelResults");
DataSource<SegmentExecution> childModelSegments = executor.newDataSource("childModelSegments");
DataSource<? extends AbstractPMMLData> miningModelPojo = executor.newDataSource("miningModelPojo");
List<String> possiblePackages = this.calculatePossiblePackageNames("SampleSelectAllMine");
Class<? extends RuleUnit> ruleUnitClass = this.getStartingRuleUnit("Start Mining - SampleSelectAllMine", (InternalKnowledgeBase) kbase, possiblePackages);
assertNotNull(ruleUnitClass);
data.insert(request);
resultData.insert(resultHolder);
executor.run(ruleUnitClass);
// console.close();
resultData.forEach(rd -> {
assertEquals("OK", rd.getResultCode());
assertEquals(request.getCorrelationId(), rd.getCorrelationId());
ScoreCard sc = rd.getResultValue("ScoreCard", null, ScoreCard.class).orElse(null);
assertNotNull(sc);
Map map = sc.getRanking();
assertNotNull(map);
assertTrue(map instanceof LinkedHashMap);
LinkedHashMap ranking = (LinkedHashMap) map;
assertTrue(ranking.containsKey("LX00") || ranking.containsKey("LC00"));
if (ranking.containsKey("LX00")) {
assertTrue(ranking.containsKey("RES"));
assertTrue(ranking.containsKey("CX2"));
assertEquals(-1.0, ranking.get("LX00"));
assertEquals(-10.0, ranking.get("RES"));
assertEquals(-30.0, ranking.get("CX2"));
Iterator iter = ranking.keySet().iterator();
assertEquals("LX00", iter.next());
assertEquals("RES", iter.next());
assertEquals("CX2", iter.next());
assertEquals(41.345, sc.getScore(), 1e-6);
} else {
assertTrue(ranking.containsKey("RST"));
assertTrue(ranking.containsKey("DX2"));
assertEquals(-1.0, ranking.get("LC00"));
assertEquals(10.0, ranking.get("RST"));
assertEquals(-30.0, ranking.get("DX2"));
Iterator iter = ranking.keySet().iterator();
assertEquals("RST", iter.next());
assertEquals("LC00", iter.next());
assertEquals("DX2", iter.next());
assertEquals(21.345, sc.getScore(), 1e-6);
}
});
int segmentsExecuted = 0;
for (Iterator<SegmentExecution> iter = childModelSegments.iterator(); iter.hasNext(); ) {
SegmentExecution cms = iter.next();
assertEquals(request.getCorrelationId(), cms.getCorrelationId());
if (cms.getState() == SegmentExecutionState.COMPLETE)
segmentsExecuted++;
}
assertEquals(2, segmentsExecuted);
}
use of org.drools.core.impl.InternalRuleUnitExecutor in project drools by kiegroup.
the class MiningmodelTest method testSimpleModelChain.
@Test
public void testSimpleModelChain() {
RuleUnitExecutor executor = createExecutor(source5);
assertNotNull(executor);
// KieRuntimeLogger console = ((InternalRuleUnitExecutor)executor).addConsoleLogger();
PMMLRequestData request = new PMMLRequestData("1234", "SampleModelChainMine");
request.addRequestParam("age", 33.0);
request.addRequestParam("occupation", "TEACHER");
request.addRequestParam("residenceState", "TN");
request.addRequestParam("validLicense", true);
PMML4Result resultHolder = new PMML4Result();
resultHolder.setCorrelationId(request.getCorrelationId());
DataSource<PMMLRequestData> childModelRequest = executor.newDataSource("childModelRequest");
DataSource<PMML4Result> childModelResults = executor.newDataSource("childModelResults");
DataSource<SegmentExecution> childModelSegments = executor.newDataSource("childModelSegments");
DataSource<? extends AbstractPMMLData> miningModelPojo = executor.newDataSource("miningModelPojo");
List<String> possiblePackages = this.calculatePossiblePackageNames("SampleModelChainMine");
Class<? extends RuleUnit> ruleUnitClass = this.getStartingRuleUnit("Start Mining - SampleModelChainMine", (InternalKnowledgeBase) kbase, possiblePackages);
assertNotNull(ruleUnitClass);
data.insert(request);
resultData.insert(resultHolder);
executor.run(ruleUnitClass);
// console.close();
assertEquals("OK", resultHolder.getResultCode());
Map<String, Object> resultVars = resultHolder.getResultVariables();
assertNotNull(resultVars);
assertTrue(resultVars.containsKey("QualificationLevel"));
assertTrue(resultVars.containsKey("OverallScore"));
String qual = resultHolder.getResultValue("QualificationLevel", "value", String.class).orElse(null);
Double oscore = resultHolder.getResultValue("OverallScore", "value", Double.class).orElse(null);
assertNotNull(qual);
assertNotNull(oscore);
assertEquals("Well", qual);
assertEquals(56.345, oscore, 1e-6);
}
use of org.drools.core.impl.InternalRuleUnitExecutor in project drools by kiegroup.
the class MiningmodelTest method testSelectFirstSegmentFirst.
@Test
public void testSelectFirstSegmentFirst() {
RuleUnitExecutor executor = createExecutor(source1);
// KieRuntimeLogger console = ((InternalRuleUnitExecutor)executor).addConsoleLogger();
PMMLRequestData request = new PMMLRequestData("1234", "SampleMine");
request.addRequestParam("fld1", 30.0);
request.addRequestParam("fld2", 60.0);
request.addRequestParam("fld3", "false");
request.addRequestParam("fld4", "optA");
PMML4Result resultHolder = new PMML4Result();
resultHolder.setCorrelationId(request.getCorrelationId());
DataSource<PMMLRequestData> childModelRequest = executor.newDataSource("childModelRequest");
DataSource<PMML4Result> childModelResults = executor.newDataSource("childModelResults");
DataSource<SegmentExecution> childModelSegments = executor.newDataSource("childModelSegments");
DataSource<? extends AbstractPMMLData> miningModelPojo = executor.newDataSource("miningModelPojo");
List<String> possiblePackages = this.calculatePossiblePackageNames("SampleMine");
Class<? extends RuleUnit> ruleUnitClass = this.getStartingRuleUnit("Start Mining - SampleMine", (InternalKnowledgeBase) kbase, possiblePackages);
assertNotNull(ruleUnitClass);
data.insert(request);
resultData.insert(resultHolder);
executor.run(ruleUnitClass);
// console.close();
Collection<?> objects = ((InternalRuleUnitExecutor) executor).getSessionObjects();
objects.forEach(o -> {
System.out.println(o);
});
miningModelPojo.forEach(mmp -> {
System.out.println(mmp);
});
resultData.iterator().forEachRemaining(rd -> {
assertEquals(request.getCorrelationId(), rd.getCorrelationId());
if (rd.getSegmentationId() == null) {
assertEquals("OK", rd.getResultCode());
assertNotNull(rd.getResultValue("Fld5", null));
String value = rd.getResultValue("Fld5", "value", String.class).orElse(null);
assertEquals("tgtY", value);
}
});
}
use of org.drools.core.impl.InternalRuleUnitExecutor in project drools by kiegroup.
the class MiningmodelTest method testWithScorecard.
@Test
public void testWithScorecard() {
RuleUnitExecutor executor = createExecutor(source2);
// KieRuntimeLogger console = ((InternalRuleUnitExecutor)executor).addConsoleLogger();
PMMLRequestData request = new PMMLRequestData("1234", "SampleScorecardMine");
request.addRequestParam("age", 33.0);
request.addRequestParam("occupation", "SKYDIVER");
request.addRequestParam("residenceState", "KN");
request.addRequestParam("validLicense", true);
PMML4Result resultHolder = new PMML4Result();
resultHolder.setCorrelationId(request.getCorrelationId());
DataSource<PMMLRequestData> childModelRequest = executor.newDataSource("childModelRequest");
DataSource<PMML4Result> childModelResults = executor.newDataSource("childModelResults");
DataSource<SegmentExecution> childModelSegments = executor.newDataSource("childModelSegments");
DataSource<? extends AbstractPMMLData> miningModelPojo = executor.newDataSource("miningModelPojo");
List<String> possiblePackages = this.calculatePossiblePackageNames("SampleScorecardMine");
Class<? extends RuleUnit> ruleUnitClass = this.getStartingRuleUnit("Start Mining - SampleScorecardMine", (InternalKnowledgeBase) kbase, possiblePackages);
assertNotNull(ruleUnitClass);
data.insert(request);
resultData.insert(resultHolder);
executor.run(ruleUnitClass);
// console.close();
resultData.forEach(rd -> {
assertEquals(request.getCorrelationId(), rd.getCorrelationId());
assertEquals("OK", rd.getResultCode());
if (rd.getSegmentationId() == null) {
ScoreCard sc = rd.getResultValue("ScoreCard", null, ScoreCard.class).orElse(null);
assertNotNull(sc);
Map map = sc.getRanking();
assertNotNull(map);
assertTrue(map instanceof LinkedHashMap);
LinkedHashMap ranking = (LinkedHashMap) map;
assertTrue(ranking.containsKey("LX00"));
assertTrue(ranking.containsKey("RES"));
assertTrue(ranking.containsKey("CX2"));
assertEquals(-1.0, ranking.get("LX00"));
assertEquals(-10.0, ranking.get("RES"));
assertEquals(-30.0, ranking.get("CX2"));
Iterator iter = ranking.keySet().iterator();
assertEquals("LX00", iter.next());
assertEquals("RES", iter.next());
assertEquals("CX2", iter.next());
}
});
int segmentsExecuted = 0;
for (Iterator<SegmentExecution> iter = childModelSegments.iterator(); iter.hasNext(); ) {
SegmentExecution cms = iter.next();
assertEquals(request.getCorrelationId(), cms.getCorrelationId());
if (cms.getState() == SegmentExecutionState.COMPLETE)
segmentsExecuted++;
}
assertEquals(1, segmentsExecuted);
}
Aggregations