Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/02/10 18:10:15 (14 years ago)
Author:
gkronber
Message:

Implemented #824 (Refactor: ITreeEvaluator interface to provide a method that evaluates a tree on a range of samples.)

Location:
trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/ClassificationMeanSquaredErrorEvaluator.cs

    r2328 r2578  
    2424using HeuristicLab.Data;
    2525using HeuristicLab.Common;
     26using HeuristicLab.GP.Interfaces;
     27using System.Linq;
     28using HeuristicLab.DataAnalysis;
    2629
    2730namespace HeuristicLab.GP.StructureIdentification.Classification {
     
    4043    }
    4144
    42     public override void Evaluate(IScope scope, ITreeEvaluator evaluator, HeuristicLab.DataAnalysis.Dataset dataset, int targetVariable, double[] classes, double[] thresholds, int start, int end) {
     45    public override void Evaluate(IScope scope, IFunctionTree tree, ITreeEvaluator evaluator, Dataset dataset, int targetVariable, double[] classes, double[] thresholds, int start, int end) {
    4346      double errorsSquaredSum = 0;
     47      double[] estimatedValues = evaluator.Evaluate(dataset, tree, Enumerable.Range(start, end - start)).ToArray();
    4448      for (int sample = start; sample < end; sample++) {
    45         double estimated = evaluator.Evaluate(sample);
    4649        double original = dataset.GetValue(sample, targetVariable);
    4750        if (!double.IsNaN(original) && !double.IsInfinity(original)) {
    48           double error = estimated - original;
     51          double error = estimatedValues[sample - start] - original;
    4952          // between classes use squared error
    5053          // on the lower end and upper end only add linear error if the absolute error is larger than 1
     
    5760          }
    5861        }
     62
    5963      }
    6064
  • trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/GPClassificationEvaluatorBase.cs

    r2577 r2578  
    2424using HeuristicLab.Data;
    2525using HeuristicLab.DataAnalysis;
     26using HeuristicLab.GP.Interfaces;
    2627
    2728namespace HeuristicLab.GP.StructureIdentification.Classification {
     
    3334    }
    3435
    35     public override void Evaluate(IScope scope, ITreeEvaluator evaluator, Dataset dataset, int targetVariable, int start, int end) {
     36    public override void Evaluate(IScope scope, IFunctionTree tree, ITreeEvaluator evaluator, Dataset dataset, int targetVariable, int start, int end) {
    3637
    3738      ItemList<DoubleData> classes = GetVariableValue<ItemList<DoubleData>>("TargetClassValues", scope, true);
    3839      double[] classesArr = new double[classes.Count];
    39       for(int i = 0; i < classesArr.Length; i++) classesArr[i] = classes[i].Data;
     40      for (int i = 0; i < classesArr.Length; i++) classesArr[i] = classes[i].Data;
    4041      Array.Sort(classesArr);
    4142      double[] thresholds = new double[classes.Count - 1];
    42       for(int i = 0; i < classesArr.Length - 1; i++) {
     43      for (int i = 0; i < classesArr.Length - 1; i++) {
    4344        thresholds[i] = (classesArr[i] + classesArr[i + 1]) / 2.0;
    4445      }
    4546
    46       Evaluate(scope, evaluator, dataset, targetVariable, classesArr, thresholds, start, end);
     47      Evaluate(scope, tree, evaluator, dataset, targetVariable, classesArr, thresholds, start, end);
    4748    }
    4849
    49     public abstract void Evaluate(IScope scope, ITreeEvaluator evaluator, Dataset dataset, int targetVariable, double[] classes, double[] thresholds, int start, int end);
     50    public abstract void Evaluate(IScope scope, IFunctionTree tree, ITreeEvaluator evaluator, Dataset dataset, int targetVariable, double[] classes, double[] thresholds, int start, int end);
    5051  }
    5152}
Note: See TracChangeset for help on using the changeset viewer.