@Override
public List<Feature> encodeFeatures(List<Feature> features, SkLearnEncoder encoder){
Boolean withData = getWithData();
Boolean withStatistics = getWithStatistics();
ClassDictUtil.checkSize(1, features);
Feature feature = features.get(0);
WildcardFeature wildcardFeature = (WildcardFeature)feature;
if(withData){
List<?> data = getData();
Function<Object, String> function = new Function<Object, String>(){
@Override
public String apply(Object object){
return ValueUtil.formatValue(object);
}
};
List<String> categories = Lists.transform(data, function);
feature = wildcardFeature.toCategoricalFeature(categories);
}
if(withStatistics){
Map<String, ?> counts = extractMap(getCounts(), 0);
Object[] discrStats = getDiscrStats();
UnivariateStats univariateStats = new UnivariateStats()
.setField(wildcardFeature.getName())
.setCounts(createCounts(counts))
.setDiscrStats(createDiscrStats(discrStats));
encoder.putUnivariateStats(univariateStats);
}
return super.encodeFeatures(Collections.singletonList(feature), encoder);
}