Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/16/11 17:13:33 (14 years ago)
Author:
gkronber
Message:

#1418 Added upper and lower estimation bounds for symbolic classification and regression.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectiveTrainingBestSolutionAnalyzer.cs

    r5685 r5720  
    3838  [StorableClass]
    3939  public sealed class SymbolicClassificationSingleObjectiveTrainingBestSolutionAnalyzer : SymbolicDataAnalysisSingleObjectiveTrainingBestSolutionAnalyzer<ISymbolicClassificationSolution>,
    40     ISymbolicDataAnalysisInterpreterOperator {
     40    ISymbolicDataAnalysisInterpreterOperator, ISymbolicDataAnalysisBoundedOperator {
    4141    private const string ProblemDataParameterName = "ProblemData";
    4242    private const string SymbolicDataAnalysisTreeInterpreterParameterName = "SymbolicDataAnalysisTreeInterpreter";
     43    private const string UpperEstimationLimitParameterName = "UpperEstimationLimit";
     44    private const string LowerEstimationLimitParameterName = "LowerEstimationLimit";
    4345    #region parameter properties
    4446    public ILookupParameter<IClassificationProblemData> ProblemDataParameter {
     
    4749    public ILookupParameter<ISymbolicDataAnalysisExpressionTreeInterpreter> SymbolicDataAnalysisTreeInterpreterParameter {
    4850      get { return (ILookupParameter<ISymbolicDataAnalysisExpressionTreeInterpreter>)Parameters[SymbolicDataAnalysisTreeInterpreterParameterName]; }
     51    }
     52    public IValueLookupParameter<DoubleValue> UpperEstimationLimitParameter {
     53      get { return (IValueLookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; }
     54    }
     55
     56    public IValueLookupParameter<DoubleValue> LowerEstimationLimitParameter {
     57      get { return (IValueLookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; }
    4958    }
    5059    #endregion
     
    5665      get { return SymbolicDataAnalysisTreeInterpreterParameter.ActualValue; }
    5766    }
     67    public DoubleValue UpperEstimationLimit {
     68      get { return UpperEstimationLimitParameter.ActualValue; }
     69    }
     70    public DoubleValue LowerEstimationLimit {
     71      get { return LowerEstimationLimitParameter.ActualValue; }
     72    }
    5873    #endregion
     74
    5975    [StorableConstructor]
    6076    private SymbolicClassificationSingleObjectiveTrainingBestSolutionAnalyzer(bool deserializing) : base(deserializing) { }
     
    6480      Parameters.Add(new LookupParameter<IClassificationProblemData>(ProblemDataParameterName, "The problem data for the symbolic classification solution."));
    6581      Parameters.Add(new LookupParameter<ISymbolicDataAnalysisExpressionTreeInterpreter>(SymbolicDataAnalysisTreeInterpreterParameterName, "The symbolic data analysis tree interpreter for the symbolic expression tree."));
     82      Parameters.Add(new ValueLookupParameter<DoubleValue>(UpperEstimationLimitParameterName, "The upper limit for the estimated values produced by the symbolic classification model."));
     83      Parameters.Add(new ValueLookupParameter<DoubleValue>(LowerEstimationLimitParameterName, "The lower limit for the estimated values produced by the symbolic classification model."));
    6684    }
    6785    public override IDeepCloneable Clone(Cloner cloner) {
     
    7290      double[] classValues;
    7391      double[] thresholds;
    74       var estimatedValues = SymbolicDataAnalysisTreeInterpreter.GetSymbolicExpressionTreeValues(bestTree, ProblemData.Dataset, ProblemData.TrainingIndizes);
     92      var estimatedValues = SymbolicDataAnalysisTreeInterpreter.GetSymbolicExpressionTreeValues(bestTree, ProblemData.Dataset, ProblemData.TrainingIndizes)
     93        .LimitToRange(LowerEstimationLimit.Value, UpperEstimationLimit.Value);
    7594      var targetValues = ProblemData.Dataset.GetEnumeratedVariableValues(ProblemData.TargetVariable, ProblemData.TrainingIndizes);
    7695      AccuracyMaximizationThresholdCalculator.CalculateThresholds(ProblemData, estimatedValues, targetValues, out classValues, out thresholds);
    77       var model = new SymbolicDiscriminantFunctionClassificationModel(bestTree, SymbolicDataAnalysisTreeInterpreter, classValues, thresholds);
     96      var model = new SymbolicDiscriminantFunctionClassificationModel(bestTree, SymbolicDataAnalysisTreeInterpreter, classValues, thresholds, LowerEstimationLimit.Value, UpperEstimationLimit.Value);
    7897      return new SymbolicDiscriminantFunctionClassificationSolution(model, ProblemData);
    7998    }
Note: See TracChangeset for help on using the changeset viewer.