@Override public Stream<Feature> apply(Feature feature){ PMMLEncoder encoder = feature.getEncoder(); if(feature instanceof CategoricalFeature){ CategoricalFeature categoricalFeature = (CategoricalFeature)feature; List<String> values = categoricalFeature.getValues(); if(!useAllFactorLevels){ values = values.subList(1, values.size()); } return values.stream() .map(value -> new BinaryFeature(encoder, categoricalFeature.getName(), categoricalFeature.getDataType(), value)); } return Stream.of(feature); } };
@Override public Stream<Feature> apply(Feature feature){ ModelEncoder encoder = (ModelEncoder)feature.getEncoder(); if(feature instanceof CategoricalFeature){ CategoricalFeature categoricalFeature = (CategoricalFeature)feature; List<String> values = new ArrayList<>(categoricalFeature.getValues()); values.add("missing(NA)"); ImputerUtil.encodeFeature(categoricalFeature, "missing(NA)", MissingValueTreatmentMethod.AS_VALUE); return values.stream() .map(value -> new BinaryFeature(encoder, categoricalFeature.getName(), categoricalFeature.getDataType(), value)); } return Stream.of(feature); } };
static public Feature encodeFeature(Feature feature, Object replacementValue, MissingValueTreatmentMethod missingValueTreatmentMethod){ ModelEncoder encoder = (ModelEncoder)feature.getEncoder(); Field<?> field = feature.getField(); if(field instanceof DataField){ MissingValueDecorator missingValueDecorator = new MissingValueDecorator() .setMissingValueReplacement(ValueUtil.formatValue(replacementValue)) .setMissingValueTreatment(missingValueTreatmentMethod); encoder.addDecorator(feature.getName(), missingValueDecorator); return feature; } else { throw new IllegalArgumentException(); } } }
ModelEncoder encoder = (ModelEncoder)feature.getEncoder();