Changeset 17996


Ignore:
Timestamp:
06/27/21 15:26:06 (12 months ago)
Author:
gkronber
Message:

#3087 reverse merge of 17991

Location:
branches/3087_Ceres_Integration
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/3087_Ceres_Integration/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/SymbolicRegressionSolutionErrorCharacteristicsCurveView.cs

    r17991 r17996  
    2626using HeuristicLab.Algorithms.DataAnalysis;
    2727using HeuristicLab.MainForm;
    28 using HeuristicLab.PluginInfrastructure;
    2928using HeuristicLab.Problems.DataAnalysis.Views;
    3029
     
    4443    private IRegressionSolution CreateLinearRegressionSolution() {
    4544      if (Content == null) throw new InvalidOperationException();
     45      double rmse, cvRmsError;
    4646      var problemData = (IRegressionProblemData)ProblemData.Clone();
    4747      if (!problemData.TrainingIndices.Any()) return null; // don't create an LR model if the problem does not have a training set (e.g. loaded into an existing model)
     
    8787      newProblemData.TestPartition.End = problemData.TestPartition.End;
    8888
    89       try {
    90         var solution = LinearRegression.CreateSolution(newProblemData, out _, out _, out _);
    91         solution.Name = "Baseline (linear subset)";
    92         return solution;
    93       } catch (NotSupportedException e) {
    94         ErrorHandling.ShowErrorDialog("Could not create a linear regression solution.", e);
    95       } catch (ArgumentException e) {
    96         ErrorHandling.ShowErrorDialog("Could not create a linear regression solution.", e);
    97       }
    98       return null;
     89      var solution = LinearRegression.CreateLinearRegressionSolution(newProblemData, out rmse, out cvRmsError);
     90      solution.Name = "Baseline (linear subset)";
     91      return solution;
    9992    }
    10093
     
    10699      if (Content.Model.SymbolicExpressionTree.IterateNodesPrefix().OfType<LaggedVariableTreeNode>().Any()) yield break;
    107100
    108       var linearRegressionSolution = CreateLinearRegressionSolution();
    109       if (linearRegressionSolution != null) yield return linearRegressionSolution;
     101      yield return CreateLinearRegressionSolution();
    110102    }
    111103  }
  • branches/3087_Ceres_Integration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionErrorCharacteristicsCurveView.cs

    r17991 r17996  
    2929using HeuristicLab.MainForm;
    3030using HeuristicLab.Optimization;
    31 using HeuristicLab.PluginInfrastructure;
    3231
    3332namespace HeuristicLab.Problems.DataAnalysis.Views {
     
    7574    }
    7675
    77     private readonly List<IRegressionSolution> solutions = new List<IRegressionSolution>();
     76    private readonly IList<IRegressionSolution> solutions = new List<IRegressionSolution>();
    7877    public IEnumerable<IRegressionSolution> Solutions {
    7978      get { return solutions.AsEnumerable(); }
     
    104103        solutions.Clear(); // remove all
    105104        solutions.Add(Content); // re-add the first solution
    106         solutions.AddRange(CreateBaselineSolutions());
     105        // and recalculate all other solutions
     106        foreach (var sol in CreateBaselineSolutions()) {
     107          solutions.Add(sol);
     108        }
    107109        UpdateChart();
    108110      }
     
    114116        solutions.Clear(); // remove all
    115117        solutions.Add(Content); // re-add the first solution
    116         solutions.AddRange(CreateBaselineSolutions());
     118        // and recalculate all other solutions
     119        foreach (var sol in CreateBaselineSolutions()) {
     120          solutions.Add(sol);
     121        }
    117122        UpdateChart();
    118123      }
     
    244249    protected virtual List<double> GetResiduals(IEnumerable<double> originalValues, IEnumerable<double> estimatedValues) {
    245250      switch (residualComboBox.SelectedItem.ToString()) {
    246         case "Absolute error":
    247           return originalValues.Zip(estimatedValues, (x, y) => Math.Abs(x - y))
     251        case "Absolute error": return originalValues.Zip(estimatedValues, (x, y) => Math.Abs(x - y))
    248252            .Where(r => !double.IsNaN(r) && !double.IsInfinity(r)).ToList();
    249         case "Squared error":
    250           return originalValues.Zip(estimatedValues, (x, y) => (x - y) * (x - y))
     253        case "Squared error": return originalValues.Zip(estimatedValues, (x, y) => (x - y) * (x - y))
    251254            .Where(r => !double.IsNaN(r) && !double.IsInfinity(r)).ToList();
    252255        case "Relative error":
     
    286289
    287290    protected virtual IEnumerable<IRegressionSolution> CreateBaselineSolutions() {
    288       var constantSolution = CreateConstantSolution();
    289       if (constantSolution != null) yield return CreateConstantSolution();
    290 
    291       var linearRegressionSolution = CreateLinearSolution();
    292       if (linearRegressionSolution != null) yield return CreateLinearSolution();
     291      yield return CreateConstantSolution();
     292      yield return CreateLinearSolution();
    293293    }
    294294
    295295    private IRegressionSolution CreateConstantSolution() {
    296       if (!ProblemData.TrainingIndices.Any()) return null;
    297 
    298296      double averageTrainingTarget = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).Average();
    299297      var model = new ConstantModel(averageTrainingTarget, ProblemData.TargetVariable);
     
    303301    }
    304302    private IRegressionSolution CreateLinearSolution() {
    305       try {
    306         var solution = LinearRegression.CreateSolution((IRegressionProblemData)ProblemData.Clone(), out _, out _, out _);
    307         solution.Name = "Baseline (linear)";
    308         return solution;
    309       } catch (NotSupportedException e) {
    310         ErrorHandling.ShowErrorDialog("Could not create a linear regression solution.", e);
    311       } catch (ArgumentException e) {
    312         ErrorHandling.ShowErrorDialog("Could not create a linear regression solution.", e);
    313       }
    314       return null;
     303      double rmsError, cvRmsError;
     304      var solution = LinearRegression.CreateLinearRegressionSolution((IRegressionProblemData)ProblemData.Clone(), out rmsError, out cvRmsError);
     305      solution.Name = "Baseline (linear)";
     306      return solution;
    315307    }
    316308
Note: See TracChangeset for help on using the changeset viewer.