Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/05/15 10:29:24 (10 years ago)
Author:
mkommend
Message:

#2237: Merged r11315, r11317, r11338, r11343, r11362, r11426, r11443, r11445, r11446, r11448 into stable.

Location:
stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Algorithms.DataAnalysis

  • stable/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModel.cs

    r11170 r11901  
    7676      // we assume that the trees array (double[]) is immutable in alglib
    7777      randomForest.innerobj.trees = original.randomForest.innerobj.trees;
    78      
     78
    7979      // allowedInputVariables is immutable so we don't need to clone
    8080      allowedInputVariables = original.allowedInputVariables;
     
    188188
    189189    public static RandomForestModel CreateRegressionModel(IRegressionProblemData problemData, int nTrees, double r, double m, int seed,
    190       out double rmsError, out double avgRelError, out double outOfBagAvgRelError, out double outOfBagRmsError) {
    191 
     190      out double rmsError, out double outOfBagRmsError, out double avgRelError, out double outOfBagAvgRelError) {
     191      return CreateRegressionModel(problemData, problemData.TrainingIndices, nTrees, r, m, seed, out rmsError, out avgRelError, out outOfBagAvgRelError, out outOfBagRmsError);
     192    }
     193
     194    public static RandomForestModel CreateRegressionModel(IRegressionProblemData problemData, IEnumerable<int> trainingIndices, int nTrees, double r, double m, int seed,
     195      out double rmsError, out double outOfBagRmsError, out double avgRelError, out double outOfBagAvgRelError) {
    192196      var variables = problemData.AllowedInputVariables.Concat(new string[] { problemData.TargetVariable });
    193       double[,] inputMatrix = AlglibUtil.PrepareInputMatrix(problemData.Dataset, variables, problemData.TrainingIndices);
     197      double[,] inputMatrix = AlglibUtil.PrepareInputMatrix(problemData.Dataset, variables, trainingIndices);
    194198
    195199      alglib.dfreport rep;
     
    201205      outOfBagRmsError = rep.oobrmserror;
    202206
    203       return new RandomForestModel(dForest,
    204         seed, problemData,
    205         nTrees, r, m);
     207      return new RandomForestModel(dForest,seed, problemData,nTrees, r, m);
    206208    }
    207209
    208210    public static RandomForestModel CreateClassificationModel(IClassificationProblemData problemData, int nTrees, double r, double m, int seed,
    209211      out double rmsError, out double outOfBagRmsError, out double relClassificationError, out double outOfBagRelClassificationError) {
     212      return CreateClassificationModel(problemData, problemData.TrainingIndices, nTrees, r, m, seed, out rmsError, out outOfBagRmsError, out relClassificationError, out outOfBagRelClassificationError);
     213    }
     214
     215    public static RandomForestModel CreateClassificationModel(IClassificationProblemData problemData, IEnumerable<int> trainingIndices, int nTrees, double r, double m, int seed,
     216      out double rmsError, out double outOfBagRmsError, out double relClassificationError, out double outOfBagRelClassificationError) {
    210217
    211218      var variables = problemData.AllowedInputVariables.Concat(new string[] { problemData.TargetVariable });
    212       double[,] inputMatrix = AlglibUtil.PrepareInputMatrix(problemData.Dataset, variables, problemData.TrainingIndices);
     219      double[,] inputMatrix = AlglibUtil.PrepareInputMatrix(problemData.Dataset, variables, trainingIndices);
    213220
    214221      var classValues = problemData.ClassValues.ToArray();
     
    235242      outOfBagRelClassificationError = rep.oobrelclserror;
    236243
    237       return new RandomForestModel(dForest,
    238         seed, problemData,
    239         nTrees, r, m, classValues);
     244      return new RandomForestModel(dForest,seed, problemData,nTrees, r, m, classValues);
    240245    }
    241246
     
    264269
    265270    private static void AssertInputMatrix(double[,] inputMatrix) {
    266       if (inputMatrix.Cast<double>().Any(x => double.IsNaN(x) || double.IsInfinity(x)))
     271      if (inputMatrix.Cast<double>().Any(x => Double.IsNaN(x) || Double.IsInfinity(x)))
    267272        throw new NotSupportedException("Random forest modeling does not support NaN or infinity values in the input dataset.");
    268273    }
Note: See TracChangeset for help on using the changeset viewer.