Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/11/11 15:03:46 (13 years ago)
Author:
gkronber
Message:

Merged changes from trunk to data analysis exploration branch and added fractional distance metric evaluator. #1142

Location:
branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/SupportVectorRegression
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/SupportVectorRegression/BestSupportVectorRegressionSolutionAnalyzer.cs

    r4068 r5275  
    2222using System.Collections.Generic;
    2323using System.Linq;
     24using HeuristicLab.Common;
    2425using HeuristicLab.Core;
    2526using HeuristicLab.Data;
     
    5253    #endregion
    5354
     55    [StorableConstructor]
     56    private BestSupportVectorRegressionSolutionAnalyzer(bool deserializing) : base(deserializing) { }
     57    private BestSupportVectorRegressionSolutionAnalyzer(BestSupportVectorRegressionSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { }
    5458    public BestSupportVectorRegressionSolutionAnalyzer()
    5559      : base() {
    5660      Parameters.Add(new ScopeTreeLookupParameter<SupportVectorMachineModel>(SupportVectorRegressionModelParameterName, "The support vector regression models to analyze."));
    5761      Parameters.Add(new LookupParameter<SupportVectorRegressionSolution>(BestSolutionParameterName, "The best support vector regression solution."));
     62    }
     63
     64    public override IDeepCloneable Clone(Cloner cloner) {
     65      return new BestSupportVectorRegressionSolutionAnalyzer(this, cloner);
    5866    }
    5967
     
    6876                                             where ProblemData.InputVariables.ItemChecked(var)
    6977                                             select var.Value;
    70         var solution = new SupportVectorRegressionSolution(ProblemData, SupportVectorMachineModel[i], inputVariables, lowerEstimationLimit, upperEstimationLimit);
     78        var solution = new SupportVectorRegressionSolution((DataAnalysisProblemData)ProblemData.Clone(), SupportVectorMachineModel[i], inputVariables, lowerEstimationLimit, upperEstimationLimit);
    7179
    7280        BestSolutionParameter.ActualValue = solution;
  • branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/SupportVectorRegression/SupportVectorRegressionSolution.cs

    r4068 r5275  
    2424using System.Drawing;
    2525using System.Linq;
     26using HeuristicLab.Common;
    2627using HeuristicLab.Core;
    2728using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3637  [StorableClass]
    3738  public sealed class SupportVectorRegressionSolution : DataAnalysisSolution {
    38     public SupportVectorRegressionSolution() : base() { }
    39     public SupportVectorRegressionSolution(DataAnalysisProblemData problemData, SupportVectorMachineModel model, IEnumerable<string> inputVariables, double lowerEstimationLimit, double upperEstimationLimit)
    40       : base(problemData, lowerEstimationLimit, upperEstimationLimit) {
    41       this.Model = model;
    42     }
    43 
    4439    public override Image ItemImage {
    4540      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Function; }
     
    5348    public Dataset SupportVectors {
    5449      get { return CalculateSupportVectors(); }
     50    }
     51
     52    private List<double> estimatedValues;
     53    public override IEnumerable<double> EstimatedValues {
     54      get {
     55        if (estimatedValues == null) RecalculateEstimatedValues();
     56        return estimatedValues;
     57      }
     58    }
     59
     60    public override IEnumerable<double> EstimatedTrainingValues {
     61      get {
     62        return GetEstimatedValues(ProblemData.TrainingIndizes);
     63      }
     64    }
     65
     66    public override IEnumerable<double> EstimatedTestValues {
     67      get {
     68        return GetEstimatedValues(ProblemData.TestIndizes);
     69      }
     70    }
     71
     72    [StorableConstructor]
     73    private SupportVectorRegressionSolution(bool deserializing) : base(deserializing) { }
     74    private SupportVectorRegressionSolution(SupportVectorRegressionSolution original, Cloner cloner) : base(original, cloner) { }
     75    public SupportVectorRegressionSolution() : base() { }
     76    public SupportVectorRegressionSolution(DataAnalysisProblemData problemData, SupportVectorMachineModel model, IEnumerable<string> inputVariables, double lowerEstimationLimit, double upperEstimationLimit)
     77      : base(problemData, lowerEstimationLimit, upperEstimationLimit) {
     78      this.Model = model;
     79    }
     80
     81    public override IDeepCloneable Clone(Cloner cloner) {
     82      return new SupportVectorRegressionSolution(this, cloner);
    5583    }
    5684
     
    73101
    74102    protected override void RecalculateEstimatedValues() {
    75       SVM.Problem problem = SupportVectorMachineUtil.CreateSvmProblem(ProblemData, 0, ProblemData.Dataset.Rows);
     103      SVM.Problem problem = SupportVectorMachineUtil.CreateSvmProblem(ProblemData, Enumerable.Range(0, ProblemData.Dataset.Rows));
    76104      SVM.Problem scaledProblem = Scaling.Scale(Model.RangeTransform, problem);
    77105
     
    83111    }
    84112
    85     private List<double> estimatedValues;
    86     public override IEnumerable<double> EstimatedValues {
    87       get {
    88         if (estimatedValues == null) RecalculateEstimatedValues();
    89         return estimatedValues.AsEnumerable();
    90       }
    91     }
    92113
    93     public override IEnumerable<double> EstimatedTrainingValues {
    94       get {
    95         if (estimatedValues == null) RecalculateEstimatedValues();
    96         int start = ProblemData.TrainingSamplesStart.Value;
    97         int n = ProblemData.TrainingSamplesEnd.Value - start;
    98         return estimatedValues.Skip(start).Take(n).ToList();
    99       }
    100     }
    101 
    102     public override IEnumerable<double> EstimatedTestValues {
    103       get {
    104         if (estimatedValues == null) RecalculateEstimatedValues();
    105         int start = ProblemData.TestSamplesStart.Value;
    106         int n = ProblemData.TestSamplesEnd.Value - start;
    107         return estimatedValues.Skip(start).Take(n).ToList();
    108       }
     114    private IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows) {
     115      if (estimatedValues == null) RecalculateEstimatedValues();
     116      foreach (int row in rows)
     117        yield return estimatedValues[row];
    109118    }
    110119  }
Note: See TracChangeset for help on using the changeset viewer.