Java源码示例:org.jpmml.converter.PMMLEncoder
示例1
@Override
public Label encodeLabel(FieldName targetField, List<?> targetCategories, PMMLEncoder encoder){
DataField dataField;
if(targetCategories == null){
targetCategories = LabelUtil.createTargetCategories(this.num_class_);
dataField = encoder.createDataField(targetField, OpType.CATEGORICAL, DataType.INTEGER, targetCategories);
} else
{
if(targetCategories.size() != this.num_class_){
throw new IllegalArgumentException("Expected " + this.num_class_ + " target categories, got " + targetCategories.size() + " target categories");
}
dataField = encoder.createDataField(targetField, OpType.CATEGORICAL, DataType.STRING, targetCategories);
}
return new CategoricalLabel(dataField);
}
示例2
@Override
public Label encodeLabel(FieldName targetField, List<?> targetCategories, PMMLEncoder encoder){
DataField dataField;
if(targetCategories == null){
targetCategories = LabelUtil.createTargetCategories(this.num_class);
dataField = encoder.createDataField(targetField, OpType.CATEGORICAL, DataType.INTEGER, targetCategories);
} else
{
if(targetCategories.size() != this.num_class){
throw new IllegalArgumentException("Expected " + this.num_class + " target categories, got " + targetCategories.size() + " target categories");
}
dataField = encoder.createDataField(targetField, OpType.CATEGORICAL, DataType.STRING, targetCategories);
}
return new CategoricalLabel(dataField);
}
示例3
@Override
public Label encodeLabel(FieldName targetField, List<?> targetCategories, PMMLEncoder encoder){
if(targetCategories != null && targetCategories.size() > 0){
throw new IllegalArgumentException("Regression requires zero target categories");
}
DataField dataField = encoder.createDataField(targetField, OpType.CONTINUOUS, DataType.DOUBLE);
return new ContinuousLabel(dataField);
}
示例4
static
public List<BinaryFeature> encodeFeature(PMMLEncoder encoder, Feature feature, List<?> values, boolean dropLast){
List<BinaryFeature> result = new ArrayList<>();
if(dropLast){
values = values.subList(0, values.size() - 1);
}
for(Object value : values){
result.add(new BinaryFeature(encoder, feature, value));
}
return result;
}
示例5
public TermFeature(PMMLEncoder encoder, DefineFunction defineFunction, Feature feature, String value){
super(encoder, FieldName.create(defineFunction.getName() + "(" + value + ")"), defineFunction.getDataType());
setDefineFunction(defineFunction);
setFeature(feature);
setValue(value);
}
示例6
@Override
public Label encodeLabel(FieldName targetField, List<?> targetCategories, PMMLEncoder encoder){
if(targetCategories != null){
throw new IllegalArgumentException("Regression requires zero target categories");
}
DataField dataField = encoder.createDataField(targetField, OpType.CONTINUOUS, DataType.FLOAT);
return new ContinuousLabel(dataField);
}
示例7
static
public PMMLEncoder getEncoder(List<? extends Feature> features){
Set<PMMLEncoder> encoders = features.stream()
.map(feature -> feature.getEncoder())
.collect(Collectors.toSet());
return Iterables.getOnlyElement(encoders);
}
示例8
@Override
public Feature encode(WildcardFeature wildcardFeature, List<?> values){
PMMLEncoder encoder = wildcardFeature.getEncoder();
if(values == null || values.isEmpty()){
DataField dataField = (DataField)encoder.getField(wildcardFeature.getName());
dataField.setOpType(OpType.CATEGORICAL);
return new ObjectFeature(encoder, dataField.getName(), dataField.getDataType());
}
return wildcardFeature.toCategoricalFeature(standardizeValues(wildcardFeature.getDataType(), values));
}
示例9
public DirectCategoricalFeature(PMMLEncoder encoder, DataField dataField){
super(encoder, dataField);
}
示例10
public BinaryCategoricalFeature(PMMLEncoder encoder, BinaryFeature binaryFeature){
super(encoder, binaryFeature, Arrays.asList(null, binaryFeature.getValue()));
}
示例11
abstract
public Label encodeLabel(FieldName targetField, List<?> targetCategories, PMMLEncoder encoder);
示例12
static
private MapValues createMapValues(FieldName name, Object identifier, List<Feature> features, List<Double> coefficients){
ListIterator<Feature> featureIt = features.listIterator();
ListIterator<Double> coefficientIt = coefficients.listIterator();
PMMLEncoder encoder = null;
List<Object> inputValues = new ArrayList<>();
List<Double> outputValues = new ArrayList<>();
while(featureIt.hasNext()){
Feature feature = featureIt.next();
Double coefficient = coefficientIt.next();
if(!(feature instanceof BinaryFeature)){
continue;
}
BinaryFeature binaryFeature = (BinaryFeature)feature;
if(!(name).equals(binaryFeature.getName())){
continue;
}
featureIt.remove();
coefficientIt.remove();
if(encoder == null){
encoder = binaryFeature.getEncoder();
}
inputValues.add(binaryFeature.getValue());
outputValues.add(coefficient);
}
MapValues mapValues = PMMLUtil.createMapValues(name, inputValues, outputValues)
.setDefaultValue(0d)
.setDataType(DataType.DOUBLE);
DerivedField derivedField = encoder.createDerivedField(FieldName.create("lookup(" + name.getValue() + (identifier != null ? (", " + identifier) : "") + ")"), OpType.CONTINUOUS, DataType.DOUBLE, mapValues);
featureIt.add(new ContinuousFeature(encoder, derivedField));
coefficientIt.add(1d);
return mapValues;
}
示例13
public WeightedTermFeature(PMMLEncoder encoder, DefineFunction defineFunction, Feature feature, String value, Number weight){
super(encoder, defineFunction, feature, value);
setWeight(weight);
}
示例14
public BinarizedCategoricalFeature(PMMLEncoder encoder, FieldName name, DataType dataType, List<BinaryFeature> binaryFeatures){
super(encoder, name, dataType);
setBinaryFeatures(binaryFeatures);
}
示例15
abstract
public Label encodeLabel(FieldName targetField, List<?> targetCategories, PMMLEncoder encoder);
示例16
public BaseNFeature(PMMLEncoder encoder, Field<?> field, int base, SetMultimap<Integer, ?> values){
this(encoder, field.getName(), field.getDataType(), base, values);
}
示例17
public BaseNFeature(PMMLEncoder encoder, Feature feature, int base, SetMultimap<Integer, ?> values){
this(encoder, feature.getName(), feature.getDataType(), base, values);
}
示例18
public BaseNFeature(PMMLEncoder encoder, FieldName name, DataType dataType, int base, SetMultimap<Integer, ?> values){
super(encoder, name, dataType);
setBase(base);
setValues(values);
}