Changeset 7989 for branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views/3.4/InteractiveSymbolicTimeSeriesPrognosisSolutionSimplifierView.cs
- Timestamp:
- 06/12/12 10:31:56 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views/3.4/InteractiveSymbolicTimeSeriesPrognosisSolutionSimplifierView.cs
r7463 r7989 50 50 51 51 protected override void UpdateModel(ISymbolicExpressionTree tree) { 52 var model = new SymbolicTimeSeriesPrognosisModel(tree, Content.Model.Interpreter , Content.ProblemData.TargetVariables.ToArray());52 var model = new SymbolicTimeSeriesPrognosisModel(tree, Content.Model.Interpreter); 53 53 SymbolicTimeSeriesPrognosisModel.Scale(model, Content.ProblemData); 54 54 Content.Model = model; … … 66 66 protected override Dictionary<ISymbolicExpressionTreeNode, double> CalculateImpactValues(ISymbolicExpressionTree tree) { 67 67 var interpreter = Content.Model.Interpreter; 68 var rows = Content.ProblemData.TrainingIndizes; 68 69 var dataset = Content.ProblemData.Dataset; 69 var rows = Content.ProblemData.TrainingIndizes; 70 Dictionary<ISymbolicExpressionTreeNode, double> impactValues = 71 new Dictionary<ISymbolicExpressionTreeNode, double>(); 72 var originalOutput = interpreter.GetSymbolicExpressionTreeValues(tree, dataset, Content.ProblemData.TargetVariables.ToArray(), rows, 1) 73 .ToArray(); 74 int i = 0; 75 int nTargetVariables = Content.ProblemData.TargetVariables.Count(); 76 foreach (var targetVariable in Content.ProblemData.TargetVariables) { 77 List<ISymbolicExpressionTreeNode> nodes = tree.Root.GetSubtree(0).GetSubtree(i).IterateNodesPostfix().ToList(); 78 var targetValues = dataset.GetDoubleValues(targetVariable, rows); 79 OnlineCalculatorError errorState; 80 double originalR2 = OnlinePearsonsRSquaredCalculator.Calculate(targetValues, originalOutput.Skip(i).TakeEvery(nTargetVariables), out errorState); 81 if (errorState != OnlineCalculatorError.None) originalR2 = 0.0; 70 var targetVariable = Content.ProblemData.TargetVariable; 71 var targetValues = dataset.GetDoubleValues(targetVariable, rows); 72 var originalOutput = interpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows).ToArray(); 82 73 83 foreach (ISymbolicExpressionTreeNode node in nodes) { 84 var parent = node.Parent; 85 constantNode.Value = CalculateReplacementValue(node, tree); 86 ISymbolicExpressionTreeNode replacementNode = constantNode; 87 SwitchNode(parent, node, replacementNode); 88 var newOutput = interpreter.GetSymbolicExpressionTreeValues(tree, dataset, Content.ProblemData.TargetVariables.ToArray(), rows, 1); 89 double newR2 = OnlinePearsonsRSquaredCalculator.Calculate(targetValues, newOutput.Skip(i).TakeEvery(nTargetVariables), out errorState); 90 if (errorState != OnlineCalculatorError.None) newR2 = 0.0; 74 Dictionary<ISymbolicExpressionTreeNode, double> impactValues = new Dictionary<ISymbolicExpressionTreeNode, double>(); 75 List<ISymbolicExpressionTreeNode> nodes = tree.Root.GetSubtree(0).GetSubtree(0).IterateNodesPostfix().ToList(); 76 OnlineCalculatorError errorState; 77 double originalR2 = OnlinePearsonsRSquaredCalculator.Calculate(targetValues, originalOutput, out errorState); 78 if (errorState != OnlineCalculatorError.None) originalR2 = 0.0; 91 79 92 // impact = 0 if no change 93 // impact < 0 if new solution is better 94 // impact > 0 if new solution is worse 95 impactValues[node] = originalR2 - newR2; 96 SwitchNode(parent, replacementNode, node); 97 } 98 i++; 80 foreach (ISymbolicExpressionTreeNode node in nodes) { 81 var parent = node.Parent; 82 constantNode.Value = CalculateReplacementValue(node, tree); 83 ISymbolicExpressionTreeNode replacementNode = constantNode; 84 SwitchNode(parent, node, replacementNode); 85 var newOutput = interpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows); 86 double newR2 = OnlinePearsonsRSquaredCalculator.Calculate(targetValues, newOutput, out errorState); 87 if (errorState != OnlineCalculatorError.None) newR2 = 0.0; 88 89 // impact = 0 if no change 90 // impact < 0 if new solution is better 91 // impact > 0 if new solution is worse 92 impactValues[node] = originalR2 - newR2; 93 SwitchNode(parent, replacementNode, node); 99 94 } 100 95 return impactValues; … … 113 108 var interpreter = Content.Model.Interpreter; 114 109 var rows = Content.ProblemData.TrainingIndizes; 115 var allPrognosedValues = interpreter.GetSymbolicExpressionTreeValues(tempTree, Content.ProblemData.Dataset, Content.ProblemData.TargetVariables.ToArray(), rows, 1);110 var allPrognosedValues = interpreter.GetSymbolicExpressionTreeValues(tempTree, Content.ProblemData.Dataset, rows); 116 111 117 112 return allPrognosedValues.Median();
Note: See TracChangeset
for help on using the changeset viewer.