Search in sources :

Example 11 with KiePMMLMiningField

use of org.kie.pmml.commons.model.KiePMMLMiningField in project drools by kiegroup.

the class PreProcessTest method manageMissingValuesNotReturnInvalid.

@Test
public void manageMissingValuesNotReturnInvalid() {
    List<MISSING_VALUE_TREATMENT_METHOD> missingValueTreatmentMethods = Arrays.stream(MISSING_VALUE_TREATMENT_METHOD.values()).filter(treatmentMethod -> !treatmentMethod.equals(MISSING_VALUE_TREATMENT_METHOD.RETURN_INVALID)).collect(Collectors.toList());
    final String fieldName = "FIELD";
    missingValueTreatmentMethods.forEach(missingValueTreatmentMethod -> {
        KiePMMLMiningField miningField = KiePMMLMiningField.builder(fieldName, null).withMissingValueTreatmentMethod(missingValueTreatmentMethod).build();
        PMMLRequestData pmmlRequestData = new PMMLRequestData();
        PreProcess.manageMissingValues(miningField, pmmlRequestData);
        assertTrue(pmmlRequestData.getRequestParams().isEmpty());
        String missingValueReplacement = "REPLACEMENT";
        miningField = KiePMMLMiningField.builder(fieldName, null).withDataType(DATA_TYPE.STRING).withMissingValueTreatmentMethod(missingValueTreatmentMethod).withMissingValueReplacement(missingValueReplacement).build();
        pmmlRequestData = new PMMLRequestData();
        PreProcess.manageMissingValues(miningField, pmmlRequestData);
        assertEquals(1, pmmlRequestData.getRequestParams().size());
        assertTrue(pmmlRequestData.getMappedRequestParams().containsKey(fieldName));
        ParameterInfo parameterInfo = pmmlRequestData.getMappedRequestParams().get(fieldName);
        assertEquals(missingValueReplacement, parameterInfo.getValue());
        assertEquals(String.class, parameterInfo.getType());
    });
}
Also used : IntStream(java.util.stream.IntStream) CLOSURE(org.kie.pmml.api.enums.CLOSURE) KiePMMLConstant(org.kie.pmml.commons.model.expressions.KiePMMLConstant) Arrays(java.util.Arrays) KiePMMLParameterField(org.kie.pmml.commons.transformations.KiePMMLParameterField) KiePMMLMiningField(org.kie.pmml.commons.model.KiePMMLMiningField) KiePMMLInterval(org.kie.pmml.commons.model.expressions.KiePMMLInterval) OP_TYPE(org.kie.pmml.api.enums.OP_TYPE) ArrayList(java.util.ArrayList) MiningField(org.kie.pmml.api.models.MiningField) KiePMMLNameValue(org.kie.pmml.commons.model.tuples.KiePMMLNameValue) KiePMMLTransformationDictionary(org.kie.pmml.commons.transformations.KiePMMLTransformationDictionary) Map(java.util.Map) ProcessingDTO(org.kie.pmml.commons.model.ProcessingDTO) KiePMMLFieldRef(org.kie.pmml.commons.model.expressions.KiePMMLFieldRef) MISSING_VALUE_TREATMENT_METHOD(org.kie.pmml.api.enums.MISSING_VALUE_TREATMENT_METHOD) INVALID_VALUE_TREATMENT_METHOD(org.kie.pmml.api.enums.INVALID_VALUE_TREATMENT_METHOD) MINING_FUNCTION(org.kie.pmml.api.enums.MINING_FUNCTION) ParameterInfo(org.kie.api.pmml.ParameterInfo) KiePMMLDefineFunction(org.kie.pmml.commons.transformations.KiePMMLDefineFunction) Assert.assertTrue(org.junit.Assert.assertTrue) Test(org.junit.Test) Collectors(java.util.stream.Collectors) DATA_TYPE(org.kie.pmml.api.enums.DATA_TYPE) List(java.util.List) KiePMMLApply(org.kie.pmml.commons.model.expressions.KiePMMLApply) Assert.assertNull(org.junit.Assert.assertNull) PMMLRequestData(org.kie.api.pmml.PMMLRequestData) KiePMMLTestingModel(org.kie.pmml.commons.testingutility.KiePMMLTestingModel) Optional(java.util.Optional) Collections(java.util.Collections) KiePMMLException(org.kie.pmml.api.exceptions.KiePMMLException) Assert.assertEquals(org.junit.Assert.assertEquals) KiePMMLDerivedField(org.kie.pmml.commons.transformations.KiePMMLDerivedField) MISSING_VALUE_TREATMENT_METHOD(org.kie.pmml.api.enums.MISSING_VALUE_TREATMENT_METHOD) PMMLRequestData(org.kie.api.pmml.PMMLRequestData) ParameterInfo(org.kie.api.pmml.ParameterInfo) KiePMMLMiningField(org.kie.pmml.commons.model.KiePMMLMiningField) Test(org.junit.Test)

Example 12 with KiePMMLMiningField

use of org.kie.pmml.commons.model.KiePMMLMiningField in project drools by kiegroup.

the class PreProcess method preProcess.

/**
 * Method to create a <code>ProcessingDTO</code> with <b>fix</b> values from the given <code>KiePMMLModel</code>
 * @param model
 * @param context
 * @return
 */
public static ProcessingDTO preProcess(final KiePMMLModel model, final PMMLContext context) {
    final List<KiePMMLMiningField> notTargetMiningFields = model.getMiningFields() != null ? model.getKiePMMLMiningFields().stream().filter(miningField -> !miningField.isTarget()).collect(Collectors.toList()) : Collections.emptyList();
    final PMMLRequestData requestData = context.getRequestData();
    convertInputData(notTargetMiningFields, requestData);
    verifyFixInvalidValues(notTargetMiningFields, requestData);
    verifyAddMissingValues(notTargetMiningFields, requestData);
    final ProcessingDTO toReturn = createProcessingDTO(model, requestData.getMappedRequestParams());
    executeTransformations(toReturn, requestData);
    return toReturn;
}
Also used : ProcessingDTO(org.kie.pmml.commons.model.ProcessingDTO) PMMLRequestData(org.kie.api.pmml.PMMLRequestData) KiePMMLMiningField(org.kie.pmml.commons.model.KiePMMLMiningField)

Example 13 with KiePMMLMiningField

use of org.kie.pmml.commons.model.KiePMMLMiningField in project drools by kiegroup.

the class KiePMMLMiningFieldInstanceFactoryTest method getKiePMMLMiningField.

@Test
public void getKiePMMLMiningField() {
    DataField dataField = getRandomDataField();
    MiningField toConvert = getRandomMiningField(dataField);
    KiePMMLMiningField toVerify = KiePMMLMiningFieldInstanceFactory.getKiePMMLMiningField(toConvert, dataField);
    commonVerifyKiePMMLMiningField(toVerify, toConvert, dataField);
}
Also used : InstanceFactoriesTestCommon.commonVerifyKiePMMLMiningField(org.kie.pmml.compiler.commons.factories.InstanceFactoriesTestCommon.commonVerifyKiePMMLMiningField) KiePMMLMiningField(org.kie.pmml.commons.model.KiePMMLMiningField) PMMLModelTestUtils.getRandomMiningField(org.kie.pmml.compiler.api.testutils.PMMLModelTestUtils.getRandomMiningField) MiningField(org.dmg.pmml.MiningField) DataField(org.dmg.pmml.DataField) PMMLModelTestUtils.getRandomDataField(org.kie.pmml.compiler.api.testutils.PMMLModelTestUtils.getRandomDataField) InstanceFactoriesTestCommon.commonVerifyKiePMMLMiningField(org.kie.pmml.compiler.commons.factories.InstanceFactoriesTestCommon.commonVerifyKiePMMLMiningField) KiePMMLMiningField(org.kie.pmml.commons.model.KiePMMLMiningField) Test(org.junit.Test)

Example 14 with KiePMMLMiningField

use of org.kie.pmml.commons.model.KiePMMLMiningField in project drools by kiegroup.

the class PreProcessTest method verifyFixInvalidValuesInvalidAsMissing.

@Test
public void verifyFixInvalidValuesInvalidAsMissing() {
    KiePMMLMiningField miningField0 = KiePMMLMiningField.builder("FIELD-0", null).withDataType(DATA_TYPE.STRING).withInvalidValueTreatmentMethod(INVALID_VALUE_TREATMENT_METHOD.AS_MISSING).withAllowedValues(Arrays.asList("123", "124", "125")).build();
    KiePMMLMiningField miningField1 = KiePMMLMiningField.builder("FIELD-1", null).withDataType(DATA_TYPE.DOUBLE).withInvalidValueTreatmentMethod(INVALID_VALUE_TREATMENT_METHOD.AS_MISSING).withAllowedValues(Arrays.asList("1.23", "12.4", "1.25")).build();
    List<KiePMMLInterval> intervals = Arrays.asList(new KiePMMLInterval(0.0, 12.4, CLOSURE.CLOSED_CLOSED), new KiePMMLInterval(12.6, 14.5, CLOSURE.OPEN_CLOSED));
    KiePMMLMiningField miningField2 = KiePMMLMiningField.builder("FIELD-2", null).withDataType(DATA_TYPE.DOUBLE).withInvalidValueTreatmentMethod(INVALID_VALUE_TREATMENT_METHOD.AS_MISSING).withIntervals(intervals).build();
    List<KiePMMLMiningField> miningFields = Arrays.asList(miningField0, miningField1, miningField2);
    PMMLRequestData pmmlRequestData = new PMMLRequestData("123", "modelName");
    pmmlRequestData.addRequestParam("FIELD-0", "122");
    pmmlRequestData.addRequestParam("FIELD-1", 12.5);
    pmmlRequestData.addRequestParam("FIELD-2", 14.6);
    PreProcess.verifyFixInvalidValues(miningFields, pmmlRequestData);
    assertTrue(pmmlRequestData.getRequestParams().isEmpty());
}
Also used : PMMLRequestData(org.kie.api.pmml.PMMLRequestData) KiePMMLInterval(org.kie.pmml.commons.model.expressions.KiePMMLInterval) KiePMMLMiningField(org.kie.pmml.commons.model.KiePMMLMiningField) Test(org.junit.Test)

Example 15 with KiePMMLMiningField

use of org.kie.pmml.commons.model.KiePMMLMiningField in project drools by kiegroup.

the class PreProcessTest method verifyFixInvalidValuesInvalidAsValueWithoutReplacement.

@Test(expected = KiePMMLException.class)
public void verifyFixInvalidValuesInvalidAsValueWithoutReplacement() {
    KiePMMLMiningField miningField0 = KiePMMLMiningField.builder("FIELD-0", null).withDataType(DATA_TYPE.STRING).withInvalidValueTreatmentMethod(INVALID_VALUE_TREATMENT_METHOD.AS_VALUE).withAllowedValues(Arrays.asList("123", "124", "125")).build();
    KiePMMLMiningField miningField1 = KiePMMLMiningField.builder("FIELD-1", null).withDataType(DATA_TYPE.DOUBLE).withInvalidValueTreatmentMethod(INVALID_VALUE_TREATMENT_METHOD.AS_VALUE).withAllowedValues(Arrays.asList("1.23", "12.4", "1.25")).build();
    List<KiePMMLInterval> intervals = Arrays.asList(new KiePMMLInterval(0.0, 12.4, CLOSURE.CLOSED_CLOSED), new KiePMMLInterval(12.6, 14.5, CLOSURE.OPEN_CLOSED));
    KiePMMLMiningField miningField2 = KiePMMLMiningField.builder("FIELD-2", null).withDataType(DATA_TYPE.DOUBLE).withInvalidValueTreatmentMethod(INVALID_VALUE_TREATMENT_METHOD.AS_VALUE).withIntervals(intervals).build();
    List<KiePMMLMiningField> miningFields = Arrays.asList(miningField0, miningField1, miningField2);
    PMMLRequestData pmmlRequestData = new PMMLRequestData("123", "modelName");
    pmmlRequestData.addRequestParam("FIELD-0", "122");
    pmmlRequestData.addRequestParam("FIELD-1", 12.5);
    pmmlRequestData.addRequestParam("FIELD-2", 14.6);
    PreProcess.verifyFixInvalidValues(miningFields, pmmlRequestData);
}
Also used : PMMLRequestData(org.kie.api.pmml.PMMLRequestData) KiePMMLInterval(org.kie.pmml.commons.model.expressions.KiePMMLInterval) KiePMMLMiningField(org.kie.pmml.commons.model.KiePMMLMiningField) Test(org.junit.Test)

Aggregations

KiePMMLMiningField (org.kie.pmml.commons.model.KiePMMLMiningField)20 Test (org.junit.Test)18 PMMLRequestData (org.kie.api.pmml.PMMLRequestData)15 KiePMMLInterval (org.kie.pmml.commons.model.expressions.KiePMMLInterval)14 ParameterInfo (org.kie.api.pmml.ParameterInfo)12 ArrayList (java.util.ArrayList)9 DATA_TYPE (org.kie.pmml.api.enums.DATA_TYPE)7 INVALID_VALUE_TREATMENT_METHOD (org.kie.pmml.api.enums.INVALID_VALUE_TREATMENT_METHOD)7 MISSING_VALUE_TREATMENT_METHOD (org.kie.pmml.api.enums.MISSING_VALUE_TREATMENT_METHOD)7 OP_TYPE (org.kie.pmml.api.enums.OP_TYPE)7 ProcessingDTO (org.kie.pmml.commons.model.ProcessingDTO)7 Arrays (java.util.Arrays)6 Collections (java.util.Collections)6 List (java.util.List)6 Map (java.util.Map)6 Optional (java.util.Optional)6 Collectors (java.util.stream.Collectors)6 IntStream (java.util.stream.IntStream)6 Assert.assertEquals (org.junit.Assert.assertEquals)6 Assert.assertNull (org.junit.Assert.assertNull)6