public void updateFeatures(List<Feature> features, Transformer transformer){ OpType opType; DataType dataType; try { opType = transformer.getOpType(); dataType = transformer.getDataType(); } catch(UnsupportedOperationException uoe){ return; } for(Feature feature : features){ if(feature instanceof WildcardFeature){ WildcardFeature wildcardFeature = (WildcardFeature)feature; updateType(wildcardFeature.getName(), opType, dataType); } } }
@Override public List<Feature> encodeFeatures(List<Feature> features, SkLearnEncoder encoder){ List<Feature> result = new ArrayList<>(); OpType opType = getOpType(); DataType dataType = getDataType(); for(Feature feature : features){ WildcardFeature wildcardFeature = (WildcardFeature)feature; DataField dataField = (DataField)encoder.getField(wildcardFeature.getName()); dataField .setOpType(opType) .setDataType(dataType); feature = new ObjectFeature(encoder, dataField.getName(), dataField.getDataType()); result.add(feature); } return super.encodeFeatures(result, encoder); } }
@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); } // End if 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); }