/** * @param miningSchema {@link MiningSchema} from a model * @return names of features in order */ public static List<String> getFeatureNames(MiningSchema miningSchema) { return miningSchema.getMiningFields().stream().map(field -> field.getName().getValue()) .collect(Collectors.toList()); }
for (int featureIndex = 0; featureIndex < featureNames.size(); featureIndex++) { String featureName = featureNames.get(featureIndex); MiningField field = new MiningField(FieldName.create(featureName)); if (schema.isNumeric(featureName)) { field.setOpType(OpType.CONTINUOUS); field.setUsageType(MiningField.UsageType.ACTIVE); } else if (schema.isCategorical(featureName)) { field.setOpType(OpType.CATEGORICAL); field.setUsageType(MiningField.UsageType.ACTIVE); } else { field.setUsageType(MiningField.UsageType.SUPPLEMENTARY); field.setUsageType(MiningField.UsageType.PREDICTED); if (field.getUsageType() == MiningField.UsageType.ACTIVE && importances != null) { int predictorIndex = schema.featureToPredictorIndex(featureIndex); field.setImportance(importances[predictorIndex]);
@Test public void testBuildMiningSchema() { MiningSchema miningSchema = AppPMMLUtils.buildMiningSchema(buildTestSchema()); List<MiningField> miningFields = miningSchema.getMiningFields(); assertEquals(4, miningFields.size()); String[] fieldNames = { "foo", "bar", "baz", "bing" }; for (int i = 0; i < fieldNames.length; i++) { assertEquals(fieldNames[i], miningFields.get(i).getName().getValue()); } assertEquals(MiningField.UsageType.SUPPLEMENTARY, miningFields.get(0).getUsageType()); assertEquals(MiningField.UsageType.PREDICTED, miningFields.get(1).getUsageType()); assertEquals(MiningField.UsageType.SUPPLEMENTARY, miningFields.get(2).getUsageType()); assertEquals(MiningField.UsageType.ACTIVE, miningFields.get(3).getUsageType()); assertEquals(OpType.CATEGORICAL, miningFields.get(1).getOpType()); assertEquals(OpType.CONTINUOUS, miningFields.get(3).getOpType()); }
MiningField miningField = miningFields.get(i); String expectedFeature = expectedFeatureNames.get(i); String featureName = miningField.getName().getValue(); assertEquals("Wrong feature at position " + i, expectedFeature, featureName); if (schema.isNumeric(expectedFeature) || schema.isCategorical(expectedFeature)) { assertEquals("Wrong op type for feature + " + featureName, schema.isNumeric(expectedFeature) ? OpType.CONTINUOUS : OpType.CATEGORICAL, miningField.getOpType()); if (schema.isTarget(expectedFeature)) { assertEquals("Wrong usage type for feature " + featureName, MiningField.UsageType.PREDICTED, miningField.getUsageType()); } else { assertEquals("Wrong usage type for feature " + featureName, MiningField.UsageType.ACTIVE, miningField.getUsageType()); assertRange(miningField.getImportance(), 0.0, 1.0); miningField.getUsageType());
private boolean isRootInMiningList(FieldName root, List<MiningField> miningList) { for(int i = 0; i < miningList.size(); i++) { MiningField mField = miningList.get(i); if(mField.getUsageType() != FieldUsageType.ACTIVE) continue; FieldName mFieldName = mField.getName(); if(root.equals(mFieldName)) { return true; } } return false; }
MiningField miningField = it.next(); FieldName name = miningField.getName(); MiningField.UsageType usageType = miningField.getUsageType(); switch(usageType){ case ACTIVE: MiningField miningField = new MiningField(activeFieldName);
/** * @param miningSchema {@link MiningSchema} from a model * @return index of the {@link MiningField.UsageType#PREDICTED} feature */ public static Integer findTargetIndex(MiningSchema miningSchema) { List<MiningField> miningFields = miningSchema.getMiningFields(); for (int i = 0; i < miningFields.size(); i++) { if (miningFields.get(i).getUsageType() == MiningField.UsageType.PREDICTED) { return i; } } return null; }
@Override public MiningSchema build(BasicML basicML) { MiningSchema miningSchema = new MiningSchema(); for(ColumnConfig columnConfig: columnConfigList) { if(columnConfig.isFinalSelect() || columnConfig.isTarget()) { MiningField miningField = new MiningField(); // TODO, how to support segment variable in tree model, here should be changed miningField.setName(FieldName.create(CommonUtils.getSimpleColumnName(columnConfig.getColumnName()))); miningField.setOptype(getOptype(columnConfig)); if(columnConfig.isNumerical()) { miningField.setMissingValueReplacement(String.valueOf(columnConfig.getColumnStats().getMean())); } else { miningField.setMissingValueReplacement(""); } if(columnConfig.isFinalSelect()) { miningField.setUsageType(FieldUsageType.ACTIVE); } else if(columnConfig.isTarget()) { miningField.setUsageType(FieldUsageType.TARGET); } miningSchema.withMiningFields(miningField); } } return miningSchema; } }
MiningField xMF = new MiningField(FieldName.create("x")) .setOpType(OpType.CONTINUOUS).setUsageType(MiningField.UsageType.ACTIVE); miningFields.add(xMF); MiningField yMF = new MiningField(FieldName.create("y")) .setOpType(OpType.CONTINUOUS).setUsageType(MiningField.UsageType.ACTIVE); miningFields.add(yMF); MiningSchema miningSchema = new MiningSchema(miningFields);
new MiningField(temperature), new MiningField(humidity), new MiningField(windy), new MiningField(outlook), new MiningField(whatIdo) .setUsageType(MiningField.UsageType.TARGET) );
/** * Create an instance of {@link MiningField } * */ public MiningField createMiningField() { return new MiningField(); }
if(!Objects.equals(miningField.getOpType(), null)){ return false; String invalidValueReplacement = miningField.getInvalidValueReplacement(); if(invalidValueReplacement != null){ return false; InvalidValueTreatmentMethod invalidValueTreatmentMethod = miningField.getInvalidValueTreatment(); switch(invalidValueTreatmentMethod){ case RETURN_INVALID: String missingValueReplacement = miningField.getMissingValueReplacement(); if(missingValueReplacement != null){ return false; OutlierTreatmentMethod outlierTreatmentMethod = miningField.getOutlierTreatment(); switch(outlierTreatmentMethod){ case AS_IS:
@Override public VisitorAction accept(Visitor visitor) { VisitorAction status = visitor.visit(this); if (status == VisitorAction.CONTINUE) { visitor.pushParent(this); if ((status == VisitorAction.CONTINUE)&&hasExtensions()) { status = org.dmg.pmml.PMMLObject.traverse(visitor, getExtensions()); } visitor.popParent(); } if (status == VisitorAction.TERMINATE) { return VisitorAction.TERMINATE; } return VisitorAction.CONTINUE; }
private MiningField intern(MiningField miningField){ if(miningField == null || miningField.hasExtensions()){ return miningField; } // End if if(!InputFieldUtil.isDefault(null, miningField)){ return miningField; } return this.cache.intern(miningField); } }
static public OpType getOpType(Field<?> field, MiningField miningField){ OpType opType = field.getOpType(); // "A MiningField overrides a (Data)Field" if(miningField != null){ opType = firstNonNull(miningField.getOpType(), opType); } return opType; }
private static List<String> getSchemaFieldViaUsageType(final MiningSchema schema, final FieldUsageType type) { List<String> targetFields = new ArrayList<String>(); for(MiningField f: schema.getMiningFields()) { FieldUsageType uType = f.getUsageType(); if(uType == type) targetFields.add(f.getName().getValue()); } return targetFields; }
MiningField miningField = it.next(); FieldName name = miningField.getName(); MiningField.UsageType usageType = miningField.getUsageType(); switch(usageType){ case ACTIVE: MiningField miningField = new MiningField(activeFieldName);
/** * @param miningSchema {@link MiningSchema} from a model * @return index of the {@link MiningField.UsageType#PREDICTED} feature */ public static Integer findTargetIndex(MiningSchema miningSchema) { List<MiningField> miningFields = miningSchema.getMiningFields(); for (int i = 0; i < miningFields.size(); i++) { if (miningFields.get(i).getUsageType() == MiningField.UsageType.PREDICTED) { return i; } } return null; }
MiningField miningField = new MiningField(); miningField .setName(FieldName.create(CommonUtils.getSimpleColumnName(columnConfig.getColumnName()))); miningField.setOptype(getOptype(columnConfig)); if(columnConfig.isTarget()) { miningField.setUsageType(FieldUsageType.TARGET); } else { miningField.setUsageType(FieldUsageType.ACTIVE); MiningField miningField = new MiningField(); miningField.setName(FieldName.create(CommonUtils.getSimpleColumnName(columnConfig .getColumnName()))); miningField.setOptype(getOptype(columnConfig)); if(columnConfig.isTarget()) { miningField.setUsageType(FieldUsageType.TARGET); } else { miningField.setUsageType(FieldUsageType.ACTIVE); MiningField miningField = new MiningField(); .setName(FieldName.create(CommonUtils.getSimpleColumnName(columnConfig.getColumnName()))); miningField.setOptype(getOptype(columnConfig)); miningField.setUsageType(FieldUsageType.TARGET); } else { miningField.setUsageType(FieldUsageType.ACTIVE); MiningField miningField = new MiningField();
/** * Create an instance of {@link MiningField } * */ public MiningField createMiningField() { return new MiningField(); }