@Override
public List<Feature> encodeFeatures(List<Feature> features, SkLearnEncoder encoder){
String function = getFunction();
Boolean trimBlanks = getTrimBlanks();
if(function == null && !trimBlanks){
return features;
}
List<Feature> result = new ArrayList<>();
for(Feature feature : features){
Expression expression = feature.ref();
if(function != null){
expression = PMMLUtil.createApply(function, expression);
}
if(trimBlanks){
expression = PMMLUtil.createApply("trimBlanks", expression);
}
Field<?> field = encoder.toCategorical(feature.getName(), Collections.emptyList());
field.setDataType(DataType.STRING);
DerivedField derivedField = encoder.createDerivedField(FeatureUtil.createName("normalize", feature), OpType.CATEGORICAL, DataType.STRING, expression);
feature = new StringFeature(encoder, derivedField);
result.add(feature);
}
return result;
}