Search in sources :

Example 1 with TreeEnsemblePredictorConfiguration

use of org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration in project knime-core by knime.

the class TreeEnsembleRegressionPredictorNodeModel method validateSettings.

/**
 * {@inheritDoc}
 */
@Override
protected void validateSettings(final NodeSettingsRO settings) throws InvalidSettingsException {
    TreeEnsemblePredictorConfiguration config = new TreeEnsemblePredictorConfiguration(true, "");
    config.loadInModel(settings);
}
Also used : TreeEnsemblePredictorConfiguration(org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration)

Example 2 with TreeEnsemblePredictorConfiguration

use of org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration in project knime-core by knime.

the class RandomForestClassificationLearnerNodeModel method createOutOfBagPredictor.

/**
 * @param ensembleSpec
 * @param ensembleModel
 * @param inSpec
 * @return
 * @throws InvalidSettingsException
 */
private TreeEnsemblePredictor createOutOfBagPredictor(final TreeEnsembleModelPortObjectSpec ensembleSpec, final TreeEnsembleModelPortObject ensembleModel, final DataTableSpec inSpec) throws InvalidSettingsException {
    String targetColumn = m_configuration.getTargetColumn();
    TreeEnsemblePredictorConfiguration ooBConfig = new TreeEnsemblePredictorConfiguration(false, targetColumn);
    String append = targetColumn + " (Out-of-bag)";
    ooBConfig.setPredictionColumnName(append);
    ooBConfig.setAppendPredictionConfidence(true);
    ooBConfig.setAppendClassConfidences(true);
    ooBConfig.setAppendModelCount(true);
    return new TreeEnsemblePredictor(ensembleSpec, ensembleModel, inSpec, ooBConfig);
}
Also used : TreeEnsemblePredictorConfiguration(org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration) TreeEnsemblePredictor(org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictor)

Example 3 with TreeEnsemblePredictorConfiguration

use of org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration in project knime-core by knime.

the class TreeEnsembleClassificationLearnerNodeModel method createOutOfBagPredictor.

/**
 * @param ensembleSpec
 * @param ensembleModel
 * @param inSpec
 * @return
 * @throws InvalidSettingsException
 */
private TreeEnsemblePredictor createOutOfBagPredictor(final TreeEnsembleModelPortObjectSpec ensembleSpec, final TreeEnsembleModelPortObject ensembleModel, final DataTableSpec inSpec) throws InvalidSettingsException {
    String targetColumn = m_configuration.getTargetColumn();
    TreeEnsemblePredictorConfiguration ooBConfig = new TreeEnsemblePredictorConfiguration(false, targetColumn);
    String append = targetColumn + " (Out-of-bag)";
    ooBConfig.setPredictionColumnName(append);
    ooBConfig.setAppendPredictionConfidence(true);
    ooBConfig.setAppendClassConfidences(true);
    ooBConfig.setAppendModelCount(true);
    return new TreeEnsemblePredictor(ensembleSpec, ensembleModel, inSpec, ooBConfig);
}
Also used : TreeEnsemblePredictorConfiguration(org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration) TreeEnsemblePredictor(org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictor)

Example 4 with TreeEnsemblePredictorConfiguration

use of org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration in project knime-core by knime.

the class TreeEnsembleClassificationPredictorCellFactory method getCells.

/**
 * {@inheritDoc}
 */
@Override
public DataCell[] getCells(final DataRow row) {
    TreeEnsembleModelPortObject modelObject = m_predictor.getModelObject();
    TreeEnsemblePredictorConfiguration cfg = m_predictor.getConfiguration();
    final TreeEnsembleModel ensembleModel = modelObject.getEnsembleModel();
    int size = 1;
    final boolean appendConfidence = cfg.isAppendPredictionConfidence();
    if (appendConfidence) {
        size += 1;
    }
    final boolean appendClassConfidences = cfg.isAppendClassConfidences();
    if (appendClassConfidences) {
        size += m_targetValueMap.size();
    }
    final boolean appendModelCount = cfg.isAppendModelCount();
    if (appendModelCount) {
        size += 1;
    }
    final boolean hasOutOfBagFilter = m_predictor.hasOutOfBagFilter();
    DataCell[] result = new DataCell[size];
    DataRow filterRow = new FilterColumnRow(row, m_learnColumnInRealDataIndices);
    PredictorRecord record = ensembleModel.createPredictorRecord(filterRow, m_learnSpec);
    if (record == null) {
        // missing value
        Arrays.fill(result, DataType.getMissingCell());
        return result;
    }
    OccurrenceCounter<String> counter = new OccurrenceCounter<String>();
    final int nrModels = ensembleModel.getNrModels();
    int nrValidModels = 0;
    for (int i = 0; i < nrModels; i++) {
        if (hasOutOfBagFilter && m_predictor.isRowPartOfTrainingData(row.getKey(), i)) {
        // ignore, row was used to train the model
        } else {
            TreeModelClassification m = ensembleModel.getTreeModelClassification(i);
            TreeNodeClassification match = m.findMatchingNode(record);
            String majorityClassName = match.getMajorityClassName();
            counter.add(majorityClassName);
            nrValidModels += 1;
        }
    }
    String bestValue = counter.getMostFrequent();
    int index = 0;
    if (bestValue == null) {
        assert nrValidModels == 0;
        Arrays.fill(result, DataType.getMissingCell());
        index = size - 1;
    } else {
        result[index++] = m_targetValueMap.get(bestValue);
        if (appendConfidence) {
            final int freqValue = counter.getFrequency(bestValue);
            result[index++] = new DoubleCell(freqValue / (double) nrValidModels);
        }
        if (appendClassConfidences) {
            for (String key : m_targetValueMap.keySet()) {
                int frequency = counter.getFrequency(key);
                double ratio = frequency / (double) nrValidModels;
                result[index++] = new DoubleCell(ratio);
            }
        }
    }
    if (appendModelCount) {
        result[index++] = new IntCell(nrValidModels);
    }
    return result;
}
Also used : TreeNodeClassification(org.knime.base.node.mine.treeensemble.model.TreeNodeClassification) TreeEnsembleModel(org.knime.base.node.mine.treeensemble.model.TreeEnsembleModel) DoubleCell(org.knime.core.data.def.DoubleCell) TreeEnsemblePredictorConfiguration(org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration) DataRow(org.knime.core.data.DataRow) IntCell(org.knime.core.data.def.IntCell) TreeEnsembleModelPortObject(org.knime.base.node.mine.treeensemble.model.TreeEnsembleModelPortObject) PredictorRecord(org.knime.base.node.mine.treeensemble.data.PredictorRecord) DataCell(org.knime.core.data.DataCell) FilterColumnRow(org.knime.base.data.filter.column.FilterColumnRow) TreeModelClassification(org.knime.base.node.mine.treeensemble.model.TreeModelClassification)

Example 5 with TreeEnsemblePredictorConfiguration

use of org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration in project knime-core by knime.

the class RandomForestRegressionPredictorNodeModel method validateSettings.

/**
 * {@inheritDoc}
 */
@Override
protected void validateSettings(final NodeSettingsRO settings) throws InvalidSettingsException {
    TreeEnsemblePredictorConfiguration config = new TreeEnsemblePredictorConfiguration(true, "");
    config.loadInModel(settings);
}
Also used : TreeEnsemblePredictorConfiguration(org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration)

Aggregations

TreeEnsemblePredictorConfiguration (org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictorConfiguration)16 TreeEnsemblePredictor (org.knime.base.node.mine.treeensemble.node.predictor.TreeEnsemblePredictor)4 TreeEnsembleModelPortObject (org.knime.base.node.mine.treeensemble.model.TreeEnsembleModelPortObject)3 DataCell (org.knime.core.data.DataCell)3 ArrayList (java.util.ArrayList)2 FilterColumnRow (org.knime.base.data.filter.column.FilterColumnRow)2 PredictorRecord (org.knime.base.node.mine.treeensemble.data.PredictorRecord)2 TreeEnsembleModel (org.knime.base.node.mine.treeensemble.model.TreeEnsembleModel)2 TreeEnsembleModelPortObjectSpec (org.knime.base.node.mine.treeensemble.model.TreeEnsembleModelPortObjectSpec)2 DataColumnSpec (org.knime.core.data.DataColumnSpec)2 DataRow (org.knime.core.data.DataRow)2 DataTableSpec (org.knime.core.data.DataTableSpec)2 DoubleCell (org.knime.core.data.def.DoubleCell)2 IntCell (org.knime.core.data.def.IntCell)2 UniqueNameGenerator (org.knime.core.util.UniqueNameGenerator)2 Mean (org.apache.commons.math.stat.descriptive.moment.Mean)1 Variance (org.apache.commons.math.stat.descriptive.moment.Variance)1 TreeModelClassification (org.knime.base.node.mine.treeensemble.model.TreeModelClassification)1 TreeModelRegression (org.knime.base.node.mine.treeensemble.model.TreeModelRegression)1 TreeNodeClassification (org.knime.base.node.mine.treeensemble.model.TreeNodeClassification)1