Changeset 5736 for branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification.Views/3.4
- Timestamp:
- 03/17/11 15:14:45 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification.Views/3.4/InteractiveSymbolicDiscriminantFunctionClassificationSolutionSimplifierView.cs
r5717 r5736 48 48 ISymbolicExpressionTreeNode root = new ProgramRootSymbol().CreateTreeNode(); 49 49 ISymbolicExpressionTreeNode start = new StartSymbol().CreateTreeNode(); 50 root.AddSub Tree(start);50 root.AddSubtree(start); 51 51 tempTree = new SymbolicExpressionTree(root); 52 52 } 53 53 54 54 protected override void UpdateModel(ISymbolicExpressionTree tree) { 55 var dataset = Content.ProblemData.Dataset; 56 var interpreter = Content.Model.Interpreter; 57 var rows = Content.ProblemData.TrainingIndizes; 58 string targetVariable = Content.ProblemData.TargetVariable; 59 60 var targetClassValues = dataset.GetEnumeratedVariableValues(targetVariable, rows); 61 var originalOutput = interpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows) 62 .ToArray(); 63 double[] classValues; 64 double[] thresholds; 65 NormalDistributionCutPointsThresholdCalculator.CalculateThresholds(Content.ProblemData, originalOutput, targetClassValues, out classValues, out thresholds); 66 Content.Model = new SymbolicDiscriminantFunctionClassificationModel(tree, Content.Model.Interpreter, classValues, thresholds); 55 Content.Model = new SymbolicDiscriminantFunctionClassificationModel(tree, Content.Model.Interpreter); 56 Content.SetClassDistibutionCutPointThresholds(); 67 57 } 68 58 … … 83 73 string targetVariable = Content.ProblemData.TargetVariable; 84 74 Dictionary<ISymbolicExpressionTreeNode, double> impactValues = new Dictionary<ISymbolicExpressionTreeNode, double>(); 85 List<ISymbolicExpressionTreeNode> nodes = tree.Root.GetSub Tree(0).GetSubTree(0).IterateNodesPostfix().ToList();75 List<ISymbolicExpressionTreeNode> nodes = tree.Root.GetSubtree(0).GetSubtree(0).IterateNodesPostfix().ToList(); 86 76 87 77 var targetClassValues = dataset.GetEnumeratedVariableValues(targetVariable, rows); 88 78 var originalOutput = interpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows) 79 .LimitToRange(Content.Model.LowerEstimationLimit, Content.Model.UpperEstimationLimit) 89 80 .ToArray(); 90 81 double[] classValues; 91 82 double[] thresholds; 92 83 NormalDistributionCutPointsThresholdCalculator.CalculateThresholds(Content.ProblemData, originalOutput, targetClassValues, out classValues, out thresholds); 93 var classifier = new SymbolicDiscriminantFunctionClassificationModel(tree, interpreter, classValues, thresholds); 84 var classifier = new SymbolicDiscriminantFunctionClassificationModel(tree, interpreter); 85 classifier.SetThresholdsAndClassValues(thresholds, classValues); 94 86 double originalAccuracy = OnlineAccuracyEvaluator.Calculate(targetClassValues, classifier.GetEstimatedClassValues(dataset, rows)); 95 87 … … 99 91 ISymbolicExpressionTreeNode replacementNode = constantNode; 100 92 SwitchNode(parent, node, replacementNode); 101 var newOutput = interpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows); 93 var newOutput = interpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows) 94 .LimitToRange(Content.Model.LowerEstimationLimit, Content.Model.UpperEstimationLimit) 95 .ToArray(); 102 96 NormalDistributionCutPointsThresholdCalculator.CalculateThresholds(Content.ProblemData, newOutput, targetClassValues, out classValues, out thresholds); 103 classifier = new SymbolicDiscriminantFunctionClassificationModel(tree, interpreter, classValues, thresholds); 97 classifier = new SymbolicDiscriminantFunctionClassificationModel(tree, interpreter); 98 classifier.SetThresholdsAndClassValues(thresholds, classValues); 104 99 double newAccuracy = OnlineAccuracyEvaluator.Calculate(targetClassValues, classifier.GetEstimatedClassValues(dataset, rows)); 105 100 … … 114 109 115 110 private double CalculateReplacementValue(ISymbolicExpressionTreeNode node) { 116 var start = tempTree.Root.GetSub Tree(0);117 while (start.Sub Trees.Count() > 0) start.RemoveSubTree(0);118 start.AddSub Tree((ISymbolicExpressionTreeNode)node.Clone());111 var start = tempTree.Root.GetSubtree(0); 112 while (start.SubtreesCount > 0) start.RemoveSubtree(0); 113 start.AddSubtree((ISymbolicExpressionTreeNode)node.Clone()); 119 114 var interpreter = Content.Model.Interpreter; 120 115 var rows = Content.ProblemData.TrainingIndizes; … … 124 119 125 120 private void SwitchNode(ISymbolicExpressionTreeNode root, ISymbolicExpressionTreeNode oldBranch, ISymbolicExpressionTreeNode newBranch) { 126 for (int i = 0; i < root.Sub Trees.Count(); i++) {127 if (root.GetSub Tree(i) == oldBranch) {128 root.RemoveSub Tree(i);129 root.InsertSub Tree(i, newBranch);121 for (int i = 0; i < root.SubtreesCount; i++) { 122 if (root.GetSubtree(i) == oldBranch) { 123 root.RemoveSubtree(i); 124 root.InsertSubtree(i, newBranch); 130 125 return; 131 126 }
Note: See TracChangeset
for help on using the changeset viewer.