Changeset 17991 for branches/3087_Ceres_Integration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionErrorCharacteristicsCurveView.cs
 Timestamp:
 06/16/21 21:35:37 (3 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

branches/3087_Ceres_Integration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionErrorCharacteristicsCurveView.cs
r17180 r17991 29 29 using HeuristicLab.MainForm; 30 30 using HeuristicLab.Optimization; 31 using HeuristicLab.PluginInfrastructure; 31 32 32 33 namespace HeuristicLab.Problems.DataAnalysis.Views { … … 74 75 } 75 76 76 private readonly IList<IRegressionSolution> solutions = new List<IRegressionSolution>();77 private readonly List<IRegressionSolution> solutions = new List<IRegressionSolution>(); 77 78 public IEnumerable<IRegressionSolution> Solutions { 78 79 get { return solutions.AsEnumerable(); } … … 103 104 solutions.Clear(); // remove all 104 105 solutions.Add(Content); // readd the first solution 105 // and recalculate all other solutions 106 foreach (var sol in CreateBaselineSolutions()) { 107 solutions.Add(sol); 108 } 106 solutions.AddRange(CreateBaselineSolutions()); 109 107 UpdateChart(); 110 108 } … … 116 114 solutions.Clear(); // remove all 117 115 solutions.Add(Content); // readd the first solution 118 // and recalculate all other solutions 119 foreach (var sol in CreateBaselineSolutions()) { 120 solutions.Add(sol); 121 } 116 solutions.AddRange(CreateBaselineSolutions()); 122 117 UpdateChart(); 123 118 } … … 249 244 protected virtual List<double> GetResiduals(IEnumerable<double> originalValues, IEnumerable<double> estimatedValues) { 250 245 switch (residualComboBox.SelectedItem.ToString()) { 251 case "Absolute error": return originalValues.Zip(estimatedValues, (x, y) => Math.Abs(x  y)) 246 case "Absolute error": 247 return originalValues.Zip(estimatedValues, (x, y) => Math.Abs(x  y)) 252 248 .Where(r => !double.IsNaN(r) && !double.IsInfinity(r)).ToList(); 253 case "Squared error": return originalValues.Zip(estimatedValues, (x, y) => (x  y) * (x  y)) 249 case "Squared error": 250 return originalValues.Zip(estimatedValues, (x, y) => (x  y) * (x  y)) 254 251 .Where(r => !double.IsNaN(r) && !double.IsInfinity(r)).ToList(); 255 252 case "Relative error": … … 289 286 290 287 protected virtual IEnumerable<IRegressionSolution> CreateBaselineSolutions() { 291 yield return CreateConstantSolution(); 292 yield return CreateLinearSolution(); 288 var constantSolution = CreateConstantSolution(); 289 if (constantSolution != null) yield return CreateConstantSolution(); 290 291 var linearRegressionSolution = CreateLinearSolution(); 292 if (linearRegressionSolution != null) yield return CreateLinearSolution(); 293 293 } 294 294 295 295 private IRegressionSolution CreateConstantSolution() { 296 if (!ProblemData.TrainingIndices.Any()) return null; 297 296 298 double averageTrainingTarget = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).Average(); 297 299 var model = new ConstantModel(averageTrainingTarget, ProblemData.TargetVariable); … … 301 303 } 302 304 private IRegressionSolution CreateLinearSolution() { 303 double rmsError, cvRmsError; 304 var solution = LinearRegression.CreateLinearRegressionSolution((IRegressionProblemData)ProblemData.Clone(), out rmsError, out cvRmsError); 305 solution.Name = "Baseline (linear)"; 306 return solution; 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; 307 315 } 308 316
Note: See TracChangeset
for help on using the changeset viewer.