Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/27/21 15:26:06 (3 years ago)
Author:
gkronber
Message:

#3087 reverse merge of 17991

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.