use of org.dmg.pmml.TreeModelDocument.TreeModel in project knime-core by knime.
the class AbstractGBTModelExporter method writeTreeIntoSegment.
private void writeTreeIntoSegment(final Segment segment, final TreeModelRegression tree, final Map<TreeNodeSignature, Double> coefficientMap) {
assert m_pmmlSpec != null : "The pmml spec is null, this indicates an implementation mistake.";
GBTRegressionTreeModelExporter exporter = new GBTRegressionTreeModelExporter(tree, m_derivedFieldMapper, coefficientMap);
if (exporter.hasWarning()) {
addWarning(exporter.getWarning());
}
TreeModel treeModel = segment.addNewTreeModel();
exporter.writeModelToPMML(treeModel, m_pmmlSpec);
}
use of org.dmg.pmml.TreeModelDocument.TreeModel in project knime-core by knime.
the class AbstractTreeModelPMMLTranslator method initializeFrom.
/**
* {@inheritDoc}
*/
@Override
public void initializeFrom(final PMMLDocument pmmlDoc) {
PMML pmml = pmmlDoc.getPMML();
List<TreeModel> trees = pmml.getTreeModelList();
if (trees.size() > 1) {
throw new IllegalArgumentException("This translator handles only single trees.");
} else if (trees.isEmpty()) {
throw new IllegalArgumentException("The provided PMMLDocument contains no tree models.");
}
MetaDataMapper<T> metaDataMapper = createMetaDataMapper(pmmlDoc, getTargetName(pmml));
TreeModelImporter<N, M, T> importer = createImporter(metaDataMapper);
m_treeModel = importer.importFromPMML(trees.get(0));
m_treeMetaData = metaDataMapper.getTreeMetaData();
m_learnSpec = metaDataMapper.getLearnSpec();
}
use of org.dmg.pmml.TreeModelDocument.TreeModel in project knime-core by knime.
the class AbstractTreeModelPMMLTranslator method exportTo.
/**
* {@inheritDoc}
*/
@Override
public SchemaType exportTo(final PMMLDocument pmmlDoc, final PMMLPortObjectSpec spec) {
PMML pmml = pmmlDoc.getPMML();
TreeModelDocument.TreeModel treeModel = pmml.addNewTreeModel();
AbstractTreeModelExporter<N> exporter = createExporter(new DerivedFieldMapper(pmmlDoc));
SchemaType st = exporter.writeModelToPMML(treeModel, spec);
if (exporter.hasWarning()) {
addWarning(exporter.getWarning());
}
return st;
}
use of org.dmg.pmml.TreeModelDocument.TreeModel in project knime-core by knime.
the class PMMLPortObject method moveGlobalTransformationsToModel.
/**
* Moves the content of the transformation dictionary to local
* transformations of the model if a model exists.
*/
public void moveGlobalTransformationsToModel() {
PMML pmml = m_pmmlDoc.getPMML();
TransformationDictionary transDict = pmml.getTransformationDictionary();
if (transDict == null || transDict.getDerivedFieldArray() == null || transDict.getDerivedFieldArray().length == 0) {
// nothing to be moved
return;
}
DerivedField[] globalDerivedFields = transDict.getDerivedFieldArray();
LocalTransformations localTrans = null;
if (pmml.getTreeModelArray().length > 0) {
TreeModel model = pmml.getTreeModelArray(0);
localTrans = model.getLocalTransformations();
if (localTrans == null) {
localTrans = model.addNewLocalTransformations();
}
} else if (pmml.getClusteringModelArray().length > 0) {
ClusteringModel model = pmml.getClusteringModelArray(0);
localTrans = model.getLocalTransformations();
if (localTrans == null) {
localTrans = model.addNewLocalTransformations();
}
} else if (pmml.getNeuralNetworkArray().length > 0) {
NeuralNetwork model = pmml.getNeuralNetworkArray(0);
localTrans = model.getLocalTransformations();
if (localTrans == null) {
localTrans = model.addNewLocalTransformations();
}
} else if (pmml.getSupportVectorMachineModelArray().length > 0) {
SupportVectorMachineModel model = pmml.getSupportVectorMachineModelArray(0);
localTrans = model.getLocalTransformations();
if (localTrans == null) {
localTrans = model.addNewLocalTransformations();
}
} else if (pmml.getRegressionModelArray().length > 0) {
RegressionModel model = pmml.getRegressionModelArray(0);
localTrans = model.getLocalTransformations();
if (localTrans == null) {
localTrans = model.addNewLocalTransformations();
}
} else if (pmml.getGeneralRegressionModelArray().length > 0) {
GeneralRegressionModel model = pmml.getGeneralRegressionModelArray(0);
localTrans = model.getLocalTransformations();
if (localTrans == null) {
localTrans = model.addNewLocalTransformations();
}
} else if (pmml.sizeOfRuleSetModelArray() > 0) {
RuleSetModel model = pmml.getRuleSetModelArray(0);
localTrans = model.getLocalTransformations();
if (localTrans == null) {
localTrans = model.addNewLocalTransformations();
}
}
if (localTrans != null) {
DerivedField[] derivedFields = appendDerivedFields(localTrans.getDerivedFieldArray(), globalDerivedFields);
localTrans.setDerivedFieldArray(derivedFields);
// remove derived fields from TransformationDictionary
transDict.setDerivedFieldArray(new DerivedField[0]);
}
// else do nothing as no model exists yet
}
use of org.dmg.pmml.TreeModelDocument.TreeModel in project knime-core by knime.
the class PMMLModelWrapper method getSegmentContent.
/**
* Returns the content of a segment as a model wrapper.
* @param s The segment
* @return Returns a wrapper around the model
*/
public static PMMLModelWrapper getSegmentContent(final Segment s) {
TreeModel treemodel = s.getTreeModel();
if (treemodel != null) {
return new PMMLTreeModelWrapper(treemodel);
}
RegressionModel regrmodel = s.getRegressionModel();
if (regrmodel != null) {
return new PMMLRegressionModelWrapper(regrmodel);
}
GeneralRegressionModel genregrmodel = s.getGeneralRegressionModel();
if (genregrmodel != null) {
return new PMMLGeneralRegressionModelWrapper(genregrmodel);
}
ClusteringModel clustmodel = s.getClusteringModel();
if (clustmodel != null) {
return new PMMLClusteringModelWrapper(clustmodel);
}
NaiveBayesModel nbmodel = s.getNaiveBayesModel();
if (nbmodel != null) {
return new PMMLNaiveBayesModelWrapper(nbmodel);
}
NeuralNetwork nn = s.getNeuralNetwork();
if (nn != null) {
return new PMMLNeuralNetworkWrapper(nn);
}
RuleSetModel rsmodel = s.getRuleSetModel();
if (rsmodel != null) {
return new PMMLRuleSetModelWrapper(rsmodel);
}
SupportVectorMachineModel svmmodel = s.getSupportVectorMachineModel();
if (svmmodel != null) {
return new PMMLSupportVectorMachineModelWrapper(svmmodel);
}
return null;
}
Aggregations