static public FieldValue discretize(Discretize discretize, FieldValue value){ String result = discretize(discretize, value.asDouble()); return FieldValueUtil.create(ExpressionUtil.getDataType(discretize, DataType.STRING), OpType.CATEGORICAL, result); }
static public FieldValue evaluateDiscretize(Discretize discretize, EvaluationContext context){ FieldValue value = context.evaluate(ensureField(discretize)); if(Objects.equals(FieldValues.MISSING_VALUE, value)){ return FieldValueUtil.create(getDataType(discretize, DataType.STRING), OpType.CATEGORICAL, discretize.getMapMissingTo()); } return DiscretizationUtil.discretize(discretize, value); }
static public FieldValue evaluateMapValues(MapValues mapValues, EvaluationContext context){ Map<String, FieldValue> values = new LinkedHashMap<>(); List<FieldColumnPair> fieldColumnPairs = mapValues.getFieldColumnPairs(); for(FieldColumnPair fieldColumnPair : fieldColumnPairs){ FieldName name = fieldColumnPair.getField(); if(name == null){ throw new MissingAttributeException(fieldColumnPair, PMMLAttributes.FIELDCOLUMNPAIR_FIELD); } String column = fieldColumnPair.getColumn(); if(column == null){ throw new MissingAttributeException(fieldColumnPair, PMMLAttributes.FIELDCOLUMNPAIR_COLUMN); } FieldValue value = context.evaluate(name); if(Objects.equals(FieldValues.MISSING_VALUE, value)){ return FieldValueUtil.create(getDataType(mapValues, DataType.STRING), OpType.CATEGORICAL, mapValues.getMapMissingTo()); } values.put(column, value); } return DiscretizationUtil.mapValue(mapValues, values); }
static public FieldValue mapValue(MapValues mapValues, Map<String, FieldValue> values){ String outputColumn = mapValues.getOutputColumn(); if(outputColumn == null){ throw new MissingAttributeException(mapValues, PMMLAttributes.MAPVALUES_OUTPUTCOLUMN); } DataType dataType = ExpressionUtil.getDataType(mapValues, DataType.STRING); InlineTable inlineTable = InlineTableUtil.getInlineTable(mapValues); if(inlineTable != null){ Map<String, String> row = match(inlineTable, values); if(row != null){ String result = row.get(outputColumn); if(result == null){ throw new InvalidElementException(inlineTable); } return FieldValueUtil.create(dataType, OpType.CATEGORICAL, result); } } return FieldValueUtil.create(dataType, OpType.CATEGORICAL, mapValues.getDefaultValue()); }