Search in sources :

Example 1 with FeatureMap

use of org.jpmml.xgboost.FeatureMap in project jpmml-r by jpmml.

the class XGBoostConverter method loadFeatureMap.

private static FeatureMap loadFeatureMap(RGenericVector fmap) {
    RIntegerVector id = (RIntegerVector) fmap.getValue(0);
    RIntegerVector name = (RIntegerVector) fmap.getValue(1);
    RIntegerVector type = (RIntegerVector) fmap.getValue(2);
    if (!name.isFactor() || !type.isFactor()) {
        throw new IllegalArgumentException();
    }
    FeatureMap featureMap = new FeatureMap();
    for (int i = 0; i < id.size(); i++) {
        if (i != id.getValue(i)) {
            throw new IllegalArgumentException();
        }
        featureMap.addEntry(name.getLevelValue(i), type.getLevelValue(i));
    }
    return featureMap;
}
Also used : FeatureMap(org.jpmml.xgboost.FeatureMap)

Example 2 with FeatureMap

use of org.jpmml.xgboost.FeatureMap in project jpmml-r by jpmml.

the class XGBoostConverter method encodeSchema.

@Override
public void encodeSchema(RExpEncoder encoder) {
    RGenericVector booster = getObject();
    RGenericVector schema = (RGenericVector) booster.getValue("schema", true);
    RVector<?> fmap;
    try {
        fmap = (RVector<?>) booster.getValue("fmap");
    } catch (IllegalArgumentException iae) {
        throw new IllegalArgumentException("No feature map information. Please initialize the \'fmap\' element");
    }
    FeatureMap featureMap;
    try {
        featureMap = loadFeatureMap(fmap);
    } catch (IOException ioe) {
        throw new IllegalArgumentException(ioe);
    }
    if (schema != null) {
        RVector<?> missing = (RVector<?>) schema.getValue("missing", true);
        if (missing != null) {
            featureMap.addMissingValue(ValueUtil.formatValue(missing.asScalar()));
        }
    }
    Learner learner = ensureLearner();
    // Dependent variable
    {
        ObjFunction obj = learner.getObj();
        FieldName targetField = FieldName.create("_target");
        List<String> targetCategories = null;
        if (schema != null) {
            RStringVector responseName = (RStringVector) schema.getValue("response_name", true);
            RStringVector responseLevels = (RStringVector) schema.getValue("response_levels", true);
            if (responseName != null) {
                targetField = FieldName.create(responseName.asScalar());
            }
            if (responseLevels != null) {
                targetCategories = responseLevels.getValues();
            }
        }
        Label label = obj.encodeLabel(targetField, targetCategories, encoder);
        encoder.setLabel(label);
    }
    // Independent variables
    {
        List<Feature> features = featureMap.encodeFeatures(encoder);
        for (Feature feature : features) {
            encoder.addFeature(feature);
        }
    }
}
Also used : Label(org.jpmml.converter.Label) IOException(java.io.IOException) Feature(org.jpmml.converter.Feature) Learner(org.jpmml.xgboost.Learner) FeatureMap(org.jpmml.xgboost.FeatureMap) List(java.util.List) FieldName(org.dmg.pmml.FieldName) ObjFunction(org.jpmml.xgboost.ObjFunction)

Aggregations

FeatureMap (org.jpmml.xgboost.FeatureMap)2 IOException (java.io.IOException)1 List (java.util.List)1 FieldName (org.dmg.pmml.FieldName)1 Feature (org.jpmml.converter.Feature)1 Label (org.jpmml.converter.Label)1 Learner (org.jpmml.xgboost.Learner)1 ObjFunction (org.jpmml.xgboost.ObjFunction)1