private List<Feature> initFeatures(PyClassDict object, OpType opType, DataType dataType, SkLearnEncoder encoder){ List<String> activeFields = getActiveFields(); if(activeFields == null){ int numberOfFeatures = -1; if(object instanceof HasNumberOfFeatures){ HasNumberOfFeatures hasNumberOfFeatures = (HasNumberOfFeatures)object; numberOfFeatures = hasNumberOfFeatures.getNumberOfFeatures(); } // End if if(numberOfFeatures < 0){ throw new IllegalArgumentException("The first transformer or estimator object (" + ClassDictUtil.formatClass(object) + ") does not specify the number of input features"); } activeFields = new ArrayList<>(numberOfFeatures); for(int i = 0, max = numberOfFeatures; i < max; i++){ activeFields.add("x" + String.valueOf(i + 1)); } logger.warn("Attribute \'" + ClassDictUtil.formatMember(this, "active_fields") + "\' is not set. Assuming {} as the names of active fields", activeFields); } List<Feature> result = new ArrayList<>(); for(String activeField : activeFields){ DataField dataField = encoder.createDataField(FieldName.create(activeField), opType, dataType); result.add(new WildcardFeature(encoder, dataField)); } return result; }
public List<Feature> getFeatures(String column){ List<Feature> features = this.columnFeatures.get(column); if(features == null){ FieldName name = FieldName.create(column); DataField dataField = getDataField(name); if(dataField == null){ dataField = createDataField(name); } Feature feature; DataType dataType = dataField.getDataType(); switch(dataType){ case STRING: feature = new WildcardFeature(this, dataField); break; case INTEGER: case DOUBLE: feature = new ContinuousFeature(this, dataField); break; case BOOLEAN: feature = new BooleanFeature(this, dataField); break; default: throw new IllegalArgumentException("Data type " + dataType + " is not supported"); } return Collections.singletonList(feature); } return features; }
rowFeatures.add(new WildcardFeature(encoder, dataField));
features.add(new WildcardFeature(encoder, dataField));