- Timestamp:
- 06/02/10 19:10:35 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj
r3853 r3892 84 84 <None Include="HeuristicLabProblemsDataAnalysisRegressionPlugin.cs.frame" /> 85 85 <None Include="Properties\AssemblyInfo.frame" /> 86 <Compile Include="Analyzers\RegressionSolutionAnalyzer.cs"> 87 <SubType>Code</SubType> 88 </Compile> 86 89 <Compile Include="HeuristicLabProblemsDataAnalysisRegressionPlugin.cs" /> 87 90 <Compile Include="LinearRegression\LinearRegressionSolutionCreator.cs" /> -
trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/SupportVectorRegression/BestSupportVectorRegressionSolutionAnalyzer.cs
r3884 r3892 36 36 using HeuristicLab.Problems.DataAnalysis.Evaluators; 37 37 using HeuristicLab.Problems.DataAnalysis.SupportVectorMachine; 38 using HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Analyzers; 38 39 39 40 namespace HeuristicLab.Problems.DataAnalysis.Regression.SupportVectorRegression { 40 [Item("BestSupportVectorRegressionSolutionAnalyzer", "An operator for analyzing the best s upport vector solution ofregression problems.")]41 [Item("BestSupportVectorRegressionSolutionAnalyzer", "An operator for analyzing the best solution of support vector regression problems.")] 41 42 [StorableClass] 42 public sealed class BestSupportVectorRegressionSolutionAnalyzer : SingleSuccessorOperator, IAnalyzer {43 public sealed class BestSupportVectorRegressionSolutionAnalyzer : RegressionSolutionAnalyzer { 43 44 private const string SupportVectorRegressionModelParameterName = "SupportVectorRegressionModel"; 44 private const string ProblemDataParameterName = "ProblemData"; 45 private const string QualityParameterName = "Quality"; 46 private const string UpperEstimationLimitParameterName = "UpperEstimationLimit"; 47 private const string LowerEstimationLimitParameterName = "LowerEstimationLimit"; 45 private const string BestSolutionInputvariableCountResultName = "Variables used by best solution"; 48 46 private const string BestSolutionParameterName = "BestSolution"; 49 private const string BestSolutionQualityParameterName = "BestSolutionQuality";50 private const string ResultsParameterName = "Results";51 private const string BestSolutionResultName = "Best solution (on validiation set)";52 private const string BestSolutionInputvariableCountResultName = "Variables used by best solution";53 private const string BestSolutionTrainingRSquared = "Best solution R² (training)";54 private const string BestSolutionTestRSquared = "Best solution R² (test)";55 private const string BestSolutionTrainingMse = "Best solution mean squared error (training)";56 private const string BestSolutionTestMse = "Best solution mean squared error (test)";57 private const string BestSolutionTrainingRelativeError = "Best solution average relative error (training)";58 private const string BestSolutionTestRelativeError = "Best solution average relative error (test)";59 47 48 #region parameter properties 60 49 public ScopeTreeLookupParameter<SupportVectorMachineModel> SupportVectorRegressionModelParameter { 61 50 get { return (ScopeTreeLookupParameter<SupportVectorMachineModel>)Parameters[SupportVectorRegressionModelParameterName]; } 62 }63 public IValueLookupParameter<DataAnalysisProblemData> ProblemDataParameter {64 get { return (IValueLookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }65 }66 public ScopeTreeLookupParameter<DoubleValue> QualityParameter {67 get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters[QualityParameterName]; }68 }69 public IValueLookupParameter<DoubleValue> UpperEstimationLimitParameter {70 get { return (IValueLookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; }71 }72 public IValueLookupParameter<DoubleValue> LowerEstimationLimitParameter {73 get { return (IValueLookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; }74 51 } 75 52 public ILookupParameter<SupportVectorRegressionSolution> BestSolutionParameter { 76 53 get { return (ILookupParameter<SupportVectorRegressionSolution>)Parameters[BestSolutionParameterName]; } 77 54 } 78 public ILookupParameter<DoubleValue> BestSolutionQualityParameter { 79 get { return (ILookupParameter<DoubleValue>)Parameters[BestSolutionQualityParameterName]; } 55 #endregion 56 #region properties 57 public ItemArray<SupportVectorMachineModel> SupportVectorMachineModel { 58 get { return SupportVectorRegressionModelParameter.ActualValue; } 80 59 } 81 public ILookupParameter<ResultCollection> ResultsParameter { 82 get { return (ILookupParameter<ResultCollection>)Parameters[ResultsParameterName]; } 83 } 60 #endregion 84 61 85 62 public BestSupportVectorRegressionSolutionAnalyzer() 86 63 : base() { 87 64 Parameters.Add(new ScopeTreeLookupParameter<SupportVectorMachineModel>(SupportVectorRegressionModelParameterName, "The support vector regression models to analyze.")); 88 Parameters.Add(new ValueLookupParameter<DataAnalysisProblemData>(ProblemDataParameterName, "The problem data for which the support vector model is a solution.")); 89 Parameters.Add(new ValueLookupParameter<DoubleValue>(UpperEstimationLimitParameterName, "The upper estimation limit that was set for the evaluation of the support vector model.")); 90 Parameters.Add(new ValueLookupParameter<DoubleValue>(LowerEstimationLimitParameterName, "The lower estimation limit that was set for the evaluation of the support vector model.")); 91 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>(QualityParameterName, "The qualities of the support vector models which should be analyzed.")); 92 Parameters.Add(new LookupParameter<SupportVectorRegressionSolution>(BestSolutionParameterName, "The best support vector solution.")); 93 Parameters.Add(new LookupParameter<DoubleValue>(BestSolutionQualityParameterName, "The quality of the best support vector solution.")); 94 Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The result collection where the best support vector solution should be stored.")); 65 Parameters.Add(new LookupParameter<SupportVectorRegressionSolution>(BestSolutionParameterName, "The best support vector regression solution.")); 95 66 } 96 67 97 public override IOperation Apply() { 98 ItemArray<DoubleValue> qualities = QualityParameter.ActualValue; 99 ResultCollection results = ResultsParameter.ActualValue; 100 ItemArray<SupportVectorMachineModel> models = SupportVectorRegressionModelParameter.ActualValue; 101 DataAnalysisProblemData problemData = ProblemDataParameter.ActualValue; 102 DoubleValue upperEstimationLimit = UpperEstimationLimitParameter.ActualValue; 103 DoubleValue lowerEstimationLimit = LowerEstimationLimitParameter.ActualValue; 104 var inputVariables = ProblemDataParameter.ActualValue.InputVariables.Select(x => x.Value); 68 protected override DataAnalysisSolution UpdateBestSolution() { 69 double upperEstimationLimit = UpperEstimationLimit != null ? UpperEstimationLimit.Value : double.PositiveInfinity; 70 double lowerEstimationLimit = LowerEstimationLimit != null ? LowerEstimationLimit.Value : double.NegativeInfinity; 105 71 106 int i = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;72 int i = Quality.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index; 107 73 108 SupportVectorRegressionSolution solution = BestSolutionParameter.ActualValue; 109 if (solution == null) { 110 solution = new SupportVectorRegressionSolution(problemData, models[i], inputVariables, lowerEstimationLimit.Value, upperEstimationLimit.Value); 74 if (BestSolutionQualityParameter.ActualValue == null || BestSolutionQualityParameter.ActualValue.Value > Quality[i].Value) { 75 IEnumerable<string> inputVariables = from var in ProblemData.InputVariables 76 where ProblemData.InputVariables.ItemChecked(var) 77 select var.Value; 78 var solution = new SupportVectorRegressionSolution(ProblemData, SupportVectorMachineModel[i], inputVariables, lowerEstimationLimit, upperEstimationLimit); 79 111 80 BestSolutionParameter.ActualValue = solution; 112 BestSolutionQualityParameter.ActualValue = qualities[i]; 113 results.Add(new Result(BestSolutionResultName, solution)); 114 results.Add(new Result(BestSolutionInputvariableCountResultName, new IntValue(inputVariables.Count()))); 115 #region calculate R2,MSE,Rel Error 116 double[] trainingValues = problemData.Dataset.GetVariableValues( 117 problemData.TargetVariable.Value, 118 problemData.TrainingSamplesStart.Value, 119 problemData.TrainingSamplesEnd.Value); 120 double[] testValues = problemData.Dataset.GetVariableValues( 121 problemData.TargetVariable.Value, 122 problemData.TestSamplesStart.Value, 123 problemData.TestSamplesEnd.Value); 124 double trainingR2 = SimpleRSquaredEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 125 double testR2 = SimpleRSquaredEvaluator.Calculate(testValues, solution.EstimatedTestValues); 126 double trainingMse = SimpleMSEEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 127 double testMse = SimpleMSEEvaluator.Calculate(testValues, solution.EstimatedTestValues); 128 double trainingRelError = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 129 double testRelError = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(testValues, solution.EstimatedTestValues); 130 results.Add(new Result(BestSolutionTrainingRSquared, new DoubleValue(trainingR2))); 131 results.Add(new Result(BestSolutionTestRSquared, new DoubleValue(testR2))); 132 results.Add(new Result(BestSolutionTrainingMse, new DoubleValue(trainingMse))); 133 results.Add(new Result(BestSolutionTestMse, new DoubleValue(testMse))); 134 results.Add(new Result(BestSolutionTrainingRelativeError, new DoubleValue(trainingRelError))); 135 results.Add(new Result(BestSolutionTestRelativeError, new DoubleValue(testRelError))); 136 #endregion 137 } else { 138 if (BestSolutionQualityParameter.ActualValue.Value > qualities[i].Value) { 139 solution = new SupportVectorRegressionSolution(problemData, models[i], inputVariables, lowerEstimationLimit.Value, upperEstimationLimit.Value); 140 BestSolutionParameter.ActualValue = solution; 141 BestSolutionQualityParameter.ActualValue = qualities[i]; 142 results[BestSolutionResultName].Value = solution; 143 results[BestSolutionInputvariableCountResultName].Value = new IntValue(inputVariables.Count()); 144 #region update R2,MSE, Rel Error 145 double[] trainingValues = problemData.Dataset.GetVariableValues( 146 problemData.TargetVariable.Value, 147 problemData.TrainingSamplesStart.Value, 148 problemData.TrainingSamplesEnd.Value); 149 double[] testValues = problemData.Dataset.GetVariableValues( 150 problemData.TargetVariable.Value, 151 problemData.TestSamplesStart.Value, 152 problemData.TestSamplesEnd.Value); 153 double trainingR2 = SimpleRSquaredEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 154 double testR2 = SimpleRSquaredEvaluator.Calculate(testValues, solution.EstimatedTestValues); 155 double trainingMse = SimpleMSEEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 156 double testMse = SimpleMSEEvaluator.Calculate(testValues, solution.EstimatedTestValues); 157 double trainingRelError = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 158 double testRelError = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(testValues, solution.EstimatedTestValues); 159 results[BestSolutionTrainingRSquared].Value = new DoubleValue(trainingR2); 160 results[BestSolutionTestRSquared].Value = new DoubleValue(testR2); 161 results[BestSolutionTrainingMse].Value = new DoubleValue(trainingMse); 162 results[BestSolutionTestMse].Value = new DoubleValue(testMse); 163 results[BestSolutionTrainingRelativeError].Value = new DoubleValue(trainingRelError); 164 results[BestSolutionTestRelativeError].Value = new DoubleValue(testRelError); 165 #endregion 81 BestSolutionQualityParameter.ActualValue = Quality[i]; 82 83 if (Results.ContainsKey(BestSolutionInputvariableCountResultName)) { 84 Results[BestSolutionInputvariableCountResultName].Value = new IntValue(inputVariables.Count()); 85 } else { 86 Results.Add(new Result(BestSolutionInputvariableCountResultName, new IntValue(inputVariables.Count()))); 166 87 } 167 88 } 168 169 return base.Apply(); 89 return BestSolutionParameter.ActualValue; 170 90 } 171 91 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/BestSymbolicRegressionSolutionAnalyzer.cs
r3710 r3892 39 39 [Item("BestSymbolicRegressionSolutionAnalyzer", "An operator for analyzing the best solution of symbolic regression problems given in symbolic expression tree encoding.")] 40 40 [StorableClass] 41 public sealed class BestSymbolicRegressionSolutionAnalyzer : SingleSuccessorOperator, ISymbolicRegressionAnalyzer {41 public sealed class BestSymbolicRegressionSolutionAnalyzer : RegressionSolutionAnalyzer, ISymbolicRegressionAnalyzer { 42 42 private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree"; 43 43 private const string SymbolicExpressionTreeInterpreterParameterName = "SymbolicExpressionTreeInterpreter"; 44 private const string ProblemDataParameterName = "ProblemData"; 45 private const string QualityParameterName = "Quality"; 46 private const string UpperEstimationLimitParameterName = "UpperEstimationLimit"; 47 private const string LowerEstimationLimitParameterName = "LowerEstimationLimit"; 44 private const string BestSolutionInputvariableCountResultName = "Variables used by best solution"; 48 45 private const string BestSolutionParameterName = "BestSolution"; 49 private const string BestSolutionQualityParameterName = "BestSolutionQuality";50 private const string ResultsParameterName = "Results";51 private const string BestSolutionResultName = "Best solution (on validiation set)";52 private const string BestSolutionInputvariableCountResultName = "Variables used by best solution";53 private const string BestSolutionTrainingRSquared = "Best solution R² (training)";54 private const string BestSolutionTestRSquared = "Best solution R² (test)";55 private const string BestSolutionTrainingMse = "Best solution mean squared error (training)";56 private const string BestSolutionTestMse = "Best solution mean squared error (test)";57 private const string BestSolutionTrainingRelativeError = "Best solution average relative error (training)";58 private const string BestSolutionTestRelativeError = "Best solution average relative error (test)";59 46 47 #region parameter properties 60 48 public ScopeTreeLookupParameter<SymbolicExpressionTree> SymbolicExpressionTreeParameter { 61 49 get { return (ScopeTreeLookupParameter<SymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; } … … 64 52 get { return (IValueLookupParameter<ISymbolicExpressionTreeInterpreter>)Parameters[SymbolicExpressionTreeInterpreterParameterName]; } 65 53 } 66 public IValueLookupParameter<DataAnalysisProblemData> ProblemDataParameter {67 get { return (IValueLookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }68 }69 public ScopeTreeLookupParameter<DoubleValue> QualityParameter {70 get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters[QualityParameterName]; }71 }72 public IValueLookupParameter<DoubleValue> UpperEstimationLimitParameter {73 get { return (IValueLookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; }74 }75 public IValueLookupParameter<DoubleValue> LowerEstimationLimitParameter {76 get { return (IValueLookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; }77 }78 54 public ILookupParameter<SymbolicRegressionSolution> BestSolutionParameter { 79 55 get { return (ILookupParameter<SymbolicRegressionSolution>)Parameters[BestSolutionParameterName]; } 80 56 } 81 public ILookupParameter<DoubleValue> BestSolutionQualityParameter { 82 get { return (ILookupParameter<DoubleValue>)Parameters[BestSolutionQualityParameterName]; } 57 #endregion 58 #region properties 59 public ISymbolicExpressionTreeInterpreter SymbolicExpressionTreeInterpreter { 60 get { return SymbolicExpressionTreeInterpreterParameter.ActualValue; } 83 61 } 84 public I LookupParameter<ResultCollection> ResultsParameter{85 get { return (ILookupParameter<ResultCollection>)Parameters[ResultsParameterName]; }62 public ItemArray<SymbolicExpressionTree> SymbolicExpressionTree { 63 get { return SymbolicExpressionTreeParameter.ActualValue; } 86 64 } 65 #endregion 87 66 88 67 public BestSymbolicRegressionSolutionAnalyzer() … … 90 69 Parameters.Add(new ScopeTreeLookupParameter<SymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression trees to analyze.")); 91 70 Parameters.Add(new ValueLookupParameter<ISymbolicExpressionTreeInterpreter>(SymbolicExpressionTreeInterpreterParameterName, "The interpreter that should be used for the analysis of symbolic expression trees.")); 92 Parameters.Add(new ValueLookupParameter<DataAnalysisProblemData>(ProblemDataParameterName, "The problem data for which the symbolic expression tree is a solution."));93 Parameters.Add(new ValueLookupParameter<DoubleValue>(UpperEstimationLimitParameterName, "The upper estimation limit that was set for the evaluation of the symbolic expression trees."));94 Parameters.Add(new ValueLookupParameter<DoubleValue>(LowerEstimationLimitParameterName, "The lower estimation limit that was set for the evaluation of the symbolic expression trees."));95 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>(QualityParameterName, "The qualities of the symbolic regression trees which should be analyzed."));96 71 Parameters.Add(new LookupParameter<SymbolicRegressionSolution>(BestSolutionParameterName, "The best symbolic regression solution.")); 97 Parameters.Add(new LookupParameter<DoubleValue>(BestSolutionQualityParameterName, "The quality of the best symbolic regression solution."));98 Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The result collection where the best symbolic regression solution should be stored."));99 72 } 100 73 101 public override IOperation Apply() { 102 ItemArray<DoubleValue> qualities = QualityParameter.ActualValue; 103 ResultCollection results = ResultsParameter.ActualValue; 104 ISymbolicExpressionTreeInterpreter interpreter = SymbolicExpressionTreeInterpreterParameter.ActualValue; 105 ItemArray<SymbolicExpressionTree> expressions = SymbolicExpressionTreeParameter.ActualValue; 106 DataAnalysisProblemData problemData = ProblemDataParameter.ActualValue; 107 DoubleValue upperEstimationLimit = UpperEstimationLimitParameter.ActualValue; 108 DoubleValue lowerEstimationLimit = LowerEstimationLimitParameter.ActualValue; 74 protected override DataAnalysisSolution UpdateBestSolution() { 75 double upperEstimationLimit = UpperEstimationLimit != null ? UpperEstimationLimit.Value : double.PositiveInfinity; 76 double lowerEstimationLimit = LowerEstimationLimit != null ? LowerEstimationLimit.Value : double.NegativeInfinity; 109 77 110 int i = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;78 int i = Quality.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index; 111 79 112 SymbolicRegressionSolution solution = BestSolutionParameter.ActualValue; 113 if (solution == null) { 114 var model = new SymbolicRegressionModel((ISymbolicExpressionTreeInterpreter)interpreter.Clone(), expressions[i], GetInputVariables(expressions[i])); 115 solution = new SymbolicRegressionSolution(problemData, model, lowerEstimationLimit.Value, upperEstimationLimit.Value); 80 if (BestSolutionQualityParameter.ActualValue == null || BestSolutionQualityParameter.ActualValue.Value > Quality[i].Value) { 81 var model = new SymbolicRegressionModel((ISymbolicExpressionTreeInterpreter)SymbolicExpressionTreeInterpreter.Clone(), 82 SymbolicExpressionTree[i], 83 GetInputVariables(SymbolicExpressionTree[i])); 84 var solution = new SymbolicRegressionSolution(ProblemData, model, lowerEstimationLimit, upperEstimationLimit); 85 116 86 BestSolutionParameter.ActualValue = solution; 117 BestSolutionQualityParameter.ActualValue = qualities[i]; 118 results.Add(new Result(BestSolutionResultName, solution)); 119 results.Add(new Result(BestSolutionInputvariableCountResultName, new IntValue(model.InputVariables.Count()))); 120 #region calculate R2,MSE,Rel Error 121 double[] trainingValues = problemData.Dataset.GetVariableValues( 122 problemData.TargetVariable.Value, 123 problemData.TrainingSamplesStart.Value, 124 problemData.TrainingSamplesEnd.Value); 125 double[] testValues = problemData.Dataset.GetVariableValues( 126 problemData.TargetVariable.Value, 127 problemData.TestSamplesStart.Value, 128 problemData.TestSamplesEnd.Value); 129 double trainingR2 = SimpleRSquaredEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 130 double testR2 = SimpleRSquaredEvaluator.Calculate(testValues, solution.EstimatedTestValues); 131 double trainingMse = SimpleMSEEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 132 double testMse = SimpleMSEEvaluator.Calculate(testValues, solution.EstimatedTestValues); 133 double trainingRelError = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 134 double testRelError = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(testValues, solution.EstimatedTestValues); 135 results.Add(new Result(BestSolutionTrainingRSquared, new DoubleValue(trainingR2))); 136 results.Add(new Result(BestSolutionTestRSquared, new DoubleValue(testR2))); 137 results.Add(new Result(BestSolutionTrainingMse, new DoubleValue(trainingMse))); 138 results.Add(new Result(BestSolutionTestMse, new DoubleValue(testMse))); 139 results.Add(new Result(BestSolutionTrainingRelativeError, new DoubleValue(trainingRelError))); 140 results.Add(new Result(BestSolutionTestRelativeError, new DoubleValue(testRelError))); 141 #endregion 142 } else { 143 if (BestSolutionQualityParameter.ActualValue.Value > qualities[i].Value) { 144 var model = new SymbolicRegressionModel((ISymbolicExpressionTreeInterpreter)interpreter.Clone(), expressions[i], GetInputVariables(expressions[i])); 145 solution = new SymbolicRegressionSolution(problemData, model, lowerEstimationLimit.Value, upperEstimationLimit.Value); 146 BestSolutionParameter.ActualValue = solution; 147 BestSolutionQualityParameter.ActualValue = qualities[i]; 148 results[BestSolutionResultName].Value = solution; 149 results[BestSolutionInputvariableCountResultName].Value = new IntValue(model.InputVariables.Count()); 150 #region update R2,MSE, Rel Error 151 double[] trainingValues = problemData.Dataset.GetVariableValues( 152 problemData.TargetVariable.Value, 153 problemData.TrainingSamplesStart.Value, 154 problemData.TrainingSamplesEnd.Value); 155 double[] testValues = problemData.Dataset.GetVariableValues( 156 problemData.TargetVariable.Value, 157 problemData.TestSamplesStart.Value, 158 problemData.TestSamplesEnd.Value); 159 double trainingR2 = SimpleRSquaredEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 160 double testR2 = SimpleRSquaredEvaluator.Calculate(testValues, solution.EstimatedTestValues); 161 double trainingMse = SimpleMSEEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 162 double testMse = SimpleMSEEvaluator.Calculate(testValues, solution.EstimatedTestValues); 163 double trainingRelError = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(trainingValues, solution.EstimatedTrainingValues); 164 double testRelError = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(testValues, solution.EstimatedTestValues); 165 results[BestSolutionTrainingRSquared].Value = new DoubleValue(trainingR2); 166 results[BestSolutionTestRSquared].Value = new DoubleValue(testR2); 167 results[BestSolutionTrainingMse].Value = new DoubleValue(trainingMse); 168 results[BestSolutionTestMse].Value = new DoubleValue(testMse); 169 results[BestSolutionTrainingRelativeError].Value = new DoubleValue(trainingRelError); 170 results[BestSolutionTestRelativeError].Value = new DoubleValue(testRelError); 171 #endregion 87 BestSolutionQualityParameter.ActualValue = Quality[i]; 88 89 if (Results.ContainsKey(BestSolutionInputvariableCountResultName)) { 90 Results[BestSolutionInputvariableCountResultName].Value = new IntValue(model.InputVariables.Count()); 91 } else { 92 Results.Add(new Result(BestSolutionInputvariableCountResultName, new IntValue(model.InputVariables.Count()))); 172 93 } 173 94 } 174 175 return base.Apply(); 95 return BestSolutionParameter.ActualValue; 176 96 } 177 97 -
trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SimpleSymbolicRegressionEvaluator.cs
r3652 r3892 125 125 int start = SamplesStart.Value; 126 126 int end = SamplesEnd.Value; 127 double lowerEstimationLimit = LowerEstimationLimit .Value;128 double upperEstimationLimit = UpperEstimationLimit .Value;127 double lowerEstimationLimit = LowerEstimationLimit != null ? LowerEstimationLimit.Value : double.NegativeInfinity; 128 double upperEstimationLimit = UpperEstimationLimit != null ? UpperEstimationLimit.Value : double.PositiveInfinity; 129 129 int targetVariableIndex = dataset.GetVariableIndex(targetVariable); 130 130 var estimatedValues = from x in interpreter.GetSymbolicExpressionTreeValues(tree, dataset, Enumerable.Range(start, end - start))
Note: See TracChangeset
for help on using the changeset viewer.