Changeset 7120 for branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis/3.4/SingleObjective/SymbolicTimeSeriesPrognosisSingleObjectivePearsonRSquaredEvaluator.cs
- Timestamp:
- 12/05/11 08:22:36 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis/3.4/SingleObjective/SymbolicTimeSeriesPrognosisSingleObjectivePearsonRSquaredEvaluator.cs
r7100 r7120 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 24 using System.Linq; 23 25 using HeuristicLab.Common; 24 26 using HeuristicLab.Core; … … 48 50 IEnumerable<int> rows = GenerateRowsToEvaluate(); 49 51 50 double quality = Calculate(SymbolicTimeSeriesPrognosisInterpreterParameter.ActualValue, solution, EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, ProblemDataParameter.ActualValue, rows); 52 double quality = Calculate(SymbolicDataAnalysisTreeInterpreterParameter.ActualValue, solution, 53 EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, 54 ProblemDataParameter.ActualValue, 55 rows, HorizonParameter.ActualValue.Value); 51 56 QualityParameter.ActualValue = new DoubleValue(quality); 52 57 … … 54 59 } 55 60 56 public static double Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, ITimeSeriesPrognosisProblemData problemData, IEnumerable<int> rows) { 57 IEnumerable<double> estimatedValues = interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, rows); 61 public static double Calculate(ISymbolicTimeSeriesPrognosisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, ITimeSeriesPrognosisProblemData problemData, IEnumerable<int> rows, int horizon) { 62 var allPredictedContinuations = 63 interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, problemData.TargetVariables.ToArray(), 64 rows, horizon).ToArray(); 65 58 66 var meanCalculator = new OnlineMeanAndVarianceCalculator(); 67 int i = 0; 59 68 foreach (var targetVariable in problemData.TargetVariables) { 60 IEnumerable<double> originalValues = problemData.Dataset.GetDoubleValues(targetVariable, rows); 69 var actualContinuations = from r in rows 70 select problemData.Dataset.GetDoubleValues(targetVariable, Enumerable.Range(r, horizon)); 71 var startValues = problemData.Dataset.GetDoubleValues(targetVariable, rows.Select(r => r - 1)); 61 72 OnlineCalculatorError errorState; 62 meanCalculator.Add(OnlinePearsonsRSquaredCalculator.Calculate(estimatedValues, originalValues, out errorState)); 63 if (errorState != OnlineCalculatorError.None) return 0.0; 73 meanCalculator.Add(OnlineTheilsUStatisticCalculator.Calculate( 74 startValues, 75 allPredictedContinuations.Select(v => v.ElementAt(i)), 76 actualContinuations, out errorState)); 77 if (errorState != OnlineCalculatorError.None) return double.NaN; 78 i++; 64 79 } 65 80 return meanCalculator.Mean; … … 67 82 68 83 public override double Evaluate(IExecutionContext context, ISymbolicExpressionTree tree, ITimeSeriesPrognosisProblemData problemData, IEnumerable<int> rows) { 69 Symbolic TimeSeriesPrognosisInterpreterParameter.ExecutionContext = context;84 SymbolicDataAnalysisTreeInterpreterParameter.ExecutionContext = context; 70 85 EstimationLimitsParameter.ExecutionContext = context; 86 HorizonParameter.ExecutionContext = context; 71 87 72 double r2 = Calculate(Symbolic TimeSeriesPrognosisInterpreterParameter.ActualValue, tree, EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, problemData, rows);88 double r2 = Calculate(SymbolicDataAnalysisTreeInterpreterParameter.ActualValue, tree, EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, problemData, rows, HorizonParameter.ActualValue.Value); 73 89 74 SymbolicTimeSeriesPrognosisInterpreterParameter.ExecutionContext = null; 90 HorizonParameter.ExecutionContext = null; 91 SymbolicDataAnalysisTreeInterpreterParameter.ExecutionContext = null; 75 92 EstimationLimitsParameter.ExecutionContext = null; 76 93
Note: See TracChangeset
for help on using the changeset viewer.