use of org.jpmml.xgboost.Learner in project jpmml-r by jpmml.
the class XGBoostConverter method encodeModel.
@Override
public MiningModel encodeModel(Schema schema) {
RGenericVector booster = getObject();
RNumberVector<?> ntreeLimit = (RNumberVector<?>) booster.getValue("ntreelimit", true);
RBooleanVector compact = (RBooleanVector) booster.getValue("compact", true);
Learner learner = ensureLearner();
Schema xgbSchema = XGBoostUtil.toXGBoostSchema(schema);
MiningModel miningModel = learner.encodeMiningModel((ntreeLimit != null ? ValueUtil.asInteger(ntreeLimit.asScalar()) : null), (compact != null ? compact.asScalar() : false), xgbSchema);
return miningModel;
}
use of org.jpmml.xgboost.Learner 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);
}
}
}
Aggregations