@Override protected ContinuousOutputFeature toContinuousFeature(FieldName name, DataType dataType, Supplier<? extends Expression> expressionSupplier){ PMMLEncoder encoder = ensureEncoder(); Output output = getOutput(); OutputField outputField = OutputUtil.getOutputField(output, name); if(outputField == null){ Expression expression = expressionSupplier.get(); outputField = new OutputField(name, dataType) .setOpType(OpType.CONTINUOUS) .setResultFeature(ResultFeature.TRANSFORMED_VALUE) .setFinalResult(false) .setExpression(expression); output.addOutputFields(outputField); } return new ContinuousOutputFeature(encoder, output, outputField); }
public CategoricalOutputFeature(PMMLEncoder encoder, Output output, OutputField outputField, List<String> values){ this(encoder, output, outputField.getName(), outputField.getDataType(), values); }
@Override public VisitorAction accept(Visitor visitor) { VisitorAction status = visitor.visit(this); if (status == VisitorAction.CONTINUE) { visitor.pushParent(this); if ((status == VisitorAction.CONTINUE)&&hasExtensions()) { status = PMMLObject.traverse(visitor, getExtensions()); } if (status == VisitorAction.CONTINUE) { status = PMMLObject.traverse(visitor, getDecisions(), getExpression()); } if ((status == VisitorAction.CONTINUE)&&hasValues()) { status = PMMLObject.traverse(visitor, getValues()); } visitor.popParent(); } if (status == VisitorAction.TERMINATE) { return VisitorAction.TERMINATE; } return VisitorAction.CONTINUE; }
/** * Create the output field, and set the field name, operation type, data type and feature type * * @param fieldName * - the name of output field * @param opType * - operation type * @param dataType * - data type * @param feature * - result feature type * @return OutputField */ protected OutputField createOutputField(String fieldName, OpType opType, DataType dataType, ResultFeatureType feature) { OutputField outputField = new OutputField(); outputField.withName(new FieldName(fieldName)); outputField.withOptype(opType); outputField.withDataType(dataType); outputField.withFeature(feature); return outputField; }
@Override public VisitorAction visit(OutputField outputField){ ResultFeature resultFeature = outputField.getResultFeature(); switch(resultFeature){ case TRANSFORMED_VALUE: case DECISION: { String segmentId = outputField.getSegmentId(); if(segmentId != null){ outputField.setValue(filter(outputField.getValue())); } } break; default: break; } return super.visit(outputField); }
FieldName name = outputField.getName(); DataField dataField = encoder.createDataField(name, outputField.getOpType(), outputField.getDataType()); OutputField outputField = new OutputField(derivedField.getName(), derivedField.getDataType()) .setOpType(derivedField.getOpType()) .setResultFeature(ResultFeature.TRANSFORMED_VALUE) .setExpression(derivedField.getExpression());
FieldName targetName = outputField.getTargetField(); ResultFeature resultFeature = outputField.getResultFeature(); String segmentId = outputField.getSegmentId(); String name = outputField.getValue(); if(name == null){ throw new MissingAttributeException(outputField, PMMLAttributes.OUTPUTFIELD_VALUE); Expression expression = outputField.getExpression(); if(expression != null){ throw new MisplacedElementException(expression); case ENTITY_AFFINITY: String entityId = outputField.getValue(); case REPORT: FieldName reportName = outputField.getReportField(); if(reportName == null){ throw new MissingAttributeException(outputField, PMMLAttributes.OUTPUTFIELD_REPORTFIELD); FieldName outputName = outputField.getName(); if(outputName == null){ throw new MissingAttributeException(outputField, PMMLAttributes.OUTPUTFIELD_NAME);
OutputField outputField = new OutputField() .setName(FieldName.create("segment_" + id)) .setResultFeature(ResultFeature.PREDICTED_VALUE) .setSegmentId(id);
int rank = (i + 1); OutputField outputField = new OutputField(FieldName.create("neighbor(" + rank + ")"), DataType.STRING) .setOpType(OpType.CATEGORICAL) .setResultFeature(ResultFeature.ENTITY_ID) .setRank(rank);
@Test public void inspectFieldAnnotations(){ PMML pmml = createPMML(); AssociationModel model = new AssociationModel(); pmml.addModels(model); assertVersionRange(pmml, Version.PMML_3_0, Version.PMML_4_3); Output output = new Output(); model.setOutput(output); assertVersionRange(pmml, Version.PMML_4_0, Version.PMML_4_3); model.setScorable(Boolean.FALSE); assertVersionRange(pmml, Version.PMML_4_1, Version.PMML_4_3); model.setScorable(null); assertVersionRange(pmml, Version.PMML_4_0, Version.PMML_4_3); OutputField outputField = new OutputField() .setRuleFeature(OutputField.RuleFeature.AFFINITY); output.addOutputFields(outputField); assertVersionRange(pmml, Version.PMML_4_1, Version.PMML_4_2); outputField.setDataType(DataType.DOUBLE); assertVersionRange(pmml, Version.PMML_4_1, Version.PMML_4_3); model.setOutput(null); assertVersionRange(pmml, Version.PMML_3_0, Version.PMML_4_3); }
.setFinalResult(false); .setFinalResult(false); encoder.createDataField(outputField.getName(), null);
/** * Create an instance of {@link OutputField } * */ public OutputField createOutputField() { return new OutputField(); }
@Override public ContinuousOutputFeature toContinuousFeature(){ PMMLEncoder encoder = ensureEncoder(); Output output = getOutput(); OutputField outputField = getField(); DataType dataType = outputField.getDataType(); switch(dataType){ case INTEGER: case FLOAT: case DOUBLE: break; default: throw new IllegalArgumentException(); } outputField.setOpType(OpType.CONTINUOUS); return new ContinuousOutputFeature(encoder, output, outputField); }
void putOutputField(OutputField outputField){ putOutputField(outputField.getName(), outputField); }
@Override public DataType getDataType(){ DataType dataType = outputField.getDataType(); if(dataType == null){ if(value instanceof Collection){ Collection<?> values = (Collection<?>)value; dataType = TypeUtil.getDataType(values); } else { dataType = TypeUtil.getDataType(value); } } return dataType; }
.setFinalResult(false); } else .setFinalResult(false); } else .setDataType(DataType.INTEGER);
@Override public VisitorAction visit(OutputField outputField){ ResultFeature resultFeature = outputField.getResultFeature(); switch(resultFeature){ case STANDARD_ERROR: report(new UnsupportedAttributeException(outputField, resultFeature)); break; default: break; } return super.visit(outputField); }
org.dmg.pmml.OutputField pmmlOutputField = outputField.getField(); if(!(org.dmg.pmml.ResultFeature.RESIDUAL).equals(pmmlOutputField.getResultFeature())){ continue; FieldName targetName = pmmlOutputField.getTargetField(); if(targetName == null){ targetName = getTargetName();
private List<MLModelField> doGetOutputFieldsForPMMLStream(String pmmlContents) throws SAXException, JAXBException, UnsupportedEncodingException { List<MLModelField> fieldNames = new ArrayList<>(); PMMLManager pmmlManager = new PMMLManager(IOUtil.unmarshal(new ByteArrayInputStream(pmmlContents.getBytes("UTF-8")))); Evaluator modelEvaluator = (ModelEvaluator<?>) pmmlManager.getModelManager(null, ModelEvaluatorFactory.getInstance()); modelEvaluator.getPredictedFields().forEach((f) -> fieldNames.add(getModelField(modelEvaluator.getDataField(f)))); modelEvaluator.getOutputFields().forEach((f) -> { OutputField outputField = modelEvaluator.getOutputField(f); ResultFeatureType resultFeatureType = outputField.getFeature(); if (resultFeatureType != ResultFeatureType.PREDICTED_VALUE && resultFeatureType != ResultFeatureType.PREDICTED_DISPLAY_VALUE) { fieldNames.add(getModelField(outputField)); } }); return fieldNames; }