Changeset 15861 for branches/2886_SymRegGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.SymRegGrammarEnumeration/Analysis
- Timestamp:
- 03/23/18 18:57:36 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2886_SymRegGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.SymRegGrammarEnumeration/Analysis/RSquaredEvaluator.cs
r15860 r15861 19 19 private readonly ISymbolicDataAnalysisExpressionTreeInterpreter expressionTreeLinearInterpreter = new SymbolicDataAnalysisExpressionTreeLinearInterpreter(); 20 20 21 public bool OptimizeConstants { get; set; } 22 21 23 public RSquaredEvaluator() { } 22 24 23 protected RSquaredEvaluator(RSquaredEvaluator original, Cloner cloner) { } 25 protected RSquaredEvaluator(RSquaredEvaluator original, Cloner cloner) { 26 this.OptimizeConstants = original.OptimizeConstants; 27 } 24 28 25 29 public override IDeepCloneable Clone(Cloner cloner) { … … 72 76 // TODO: Restarts 73 77 74 double r2 = SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(expressionTreeLinearInterpreter, 75 tree, 76 problemData, 77 problemData.TrainingIndices, 78 applyLinearScaling: false, 79 maxIterations: 50, 80 updateVariableWeights: true, 81 updateConstantsInTree: true); 82 83 foreach (var symbolicExpressionTreeNode in tree.IterateNodesPostfix()) { 84 ConstantTreeNode constTreeNode = symbolicExpressionTreeNode as ConstantTreeNode; 85 if (constTreeNode != null && constTreeNode.Value.IsAlmost(0.0)) { 86 constTreeNode.Value = 0.0; 87 } 88 } 78 double r2; 89 79 90 80 SymbolicRegressionModel model = new SymbolicRegressionModel( 91 problemData.TargetVariable,92 tree,93 expressionTreeLinearInterpreter);81 problemData.TargetVariable, 82 tree, 83 expressionTreeLinearInterpreter); 94 84 95 //var target = problemData.TargetVariableTrainingValues; 96 //var estVals = model.GetEstimatedValues(problemData.Dataset, problemData.TrainingIndices); 97 //OnlineCalculatorError error; 98 //double r2 = OnlinePearsonsRCalculator.Calculate(target, estVals, out error); 99 //if (error != OnlineCalculatorError.None) r2 = 0.0; 85 if (OptimizeConstants) { 86 r2 = SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(expressionTreeLinearInterpreter, 87 tree, 88 problemData, 89 problemData.TrainingIndices, 90 applyLinearScaling: false, 91 maxIterations: 50, 92 updateVariableWeights: true, 93 updateConstantsInTree: true); 94 95 foreach (var symbolicExpressionTreeNode in tree.IterateNodesPostfix()) { 96 ConstantTreeNode constTreeNode = symbolicExpressionTreeNode as ConstantTreeNode; 97 if (constTreeNode != null && constTreeNode.Value.IsAlmost(0.0)) { 98 constTreeNode.Value = 0.0; 99 } 100 } 101 102 103 } else { 104 var target = problemData.TargetVariableTrainingValues; 105 var estVals = model.GetEstimatedValues(problemData.Dataset, problemData.TrainingIndices); 106 OnlineCalculatorError error; 107 r2 = OnlinePearsonsRCalculator.Calculate(target, estVals, out error); 108 if (error != OnlineCalculatorError.None) r2 = 0.0; 109 } 100 110 101 111 var bestR2Result = (DoubleValue)algorithm.Results[BestTrainingQualityResultName].Value;
Note: See TracChangeset
for help on using the changeset viewer.