Changeset 8723
- Timestamp:
- 10/03/12 11:38:57 (12 years ago)
- Location:
- trunk/sources
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/MultinomialLogitClassificationSolution.cs
r7259 r8723 45 45 public MultinomialLogitClassificationSolution(IClassificationProblemData problemData, MultinomialLogitModel logitModel) 46 46 : base(logitModel, problemData) { 47 RecalculateResults();48 47 } 49 48 … … 51 50 return new MultinomialLogitClassificationSolution(this, cloner); 52 51 } 53 54 protected override void RecalculateResults() {55 CalculateResults();56 }57 52 } 58 53 } -
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Nca/NcaClassificationSolution.cs
r8471 r8723 42 42 public NcaClassificationSolution(IClassificationProblemData problemData, INcaModel ncaModel) 43 43 : base(ncaModel, problemData) { 44 RecalculateResults();45 44 } 46 45 … … 48 47 return new NcaClassificationSolution(this, cloner); 49 48 } 50 51 protected override void RecalculateResults() {52 CalculateResults();53 }54 49 } 55 50 } -
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/NearestNeighbour/NearestNeighbourClassificationSolution.cs
r7259 r8723 45 45 public NearestNeighbourClassificationSolution(IClassificationProblemData problemData, INearestNeighbourModel nnModel) 46 46 : base(nnModel, problemData) { 47 RecalculateResults();48 47 } 49 48 … … 51 50 return new NearestNeighbourClassificationSolution(this, cloner); 52 51 } 53 54 protected override void RecalculateResults() {55 CalculateResults();56 }57 52 } 58 53 } -
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/NeuralNetwork/NeuralNetworkClassificationSolution.cs
r7259 r8723 45 45 public NeuralNetworkClassificationSolution(IClassificationProblemData problemData, INeuralNetworkModel nnModel) 46 46 : base(nnModel, problemData) { 47 RecalculateResults();48 47 } 49 48 … … 51 50 return new NeuralNetworkClassificationSolution(this, cloner); 52 51 } 53 protected override void RecalculateResults() { 54 CalculateResults(); 55 } 52 56 53 } 57 54 } -
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/NeuralNetwork/NeuralNetworkEnsembleClassificationSolution.cs
r7259 r8723 45 45 public NeuralNetworkEnsembleClassificationSolution(IClassificationProblemData problemData, INeuralNetworkEnsembleModel nnModel) 46 46 : base(nnModel, problemData) { 47 RecalculateResults();48 47 } 49 48 … … 51 50 return new NeuralNetworkEnsembleClassificationSolution(this, cloner); 52 51 } 53 54 protected override void RecalculateResults() {55 CalculateResults();56 }57 52 } 58 53 } -
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestClassificationSolution.cs
r7259 r8723 45 45 public RandomForestClassificationSolution(IClassificationProblemData problemData, IRandomForestModel randomForestModel) 46 46 : base(randomForestModel, problemData) { 47 RecalculateResults();48 47 } 49 48 … … 51 50 return new RandomForestClassificationSolution(this, cloner); 52 51 } 53 54 protected override void RecalculateResults() {55 CalculateResults();56 }57 52 } 58 53 } -
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorClassificationSolution.cs
r7259 r8723 45 45 public SupportVectorClassificationSolution(SupportVectorMachineModel model, IClassificationProblemData problemData) 46 46 : base(model, problemData) { 47 RecalculateResults();48 47 } 49 48 … … 51 50 return new SupportVectorClassificationSolution(this, cloner); 52 51 } 53 54 protected override void RecalculateResults() {55 CalculateResults();56 }57 52 } 58 53 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SymbolicClassificationSolution.cs
r7259 r8723 71 71 72 72 protected override void RecalculateResults() { 73 base.RecalculateResults(); 73 74 ModelLength = Model.SymbolicExpressionTree.Length; 74 75 ModelDepth = Model.SymbolicExpressionTree.Depth; 75 CalculateResults();76 76 } 77 77 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SymbolicDiscriminantFunctionClassificationSolution.cs
r8684 r8723 20 20 #endregion 21 21 22 using System.Linq; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 35 36 private const string ModelLengthResultName = "Model Length"; 36 37 private const string ModelDepthResultName = "Model Depth"; 38 39 private const string EstimationLimitsResultsResultName = "Estimation Limits Results"; 40 private const string EstimationLimitsResultName = "Estimation Limits"; 41 private const string TrainingUpperEstimationLimitHitsResultName = "Training Upper Estimation Limit Hits"; 42 private const string TestLowerEstimationLimitHitsResultName = "Test Lower Estimation Limit Hits"; 43 private const string TrainingLowerEstimationLimitHitsResultName = "Training Lower Estimation Limit Hits"; 44 private const string TestUpperEstimationLimitHitsResultName = "Test Upper Estimation Limit Hits"; 45 private const string TrainingNaNEvaluationsResultName = "Training NaN Evaluations"; 46 private const string TestNaNEvaluationsResultName = "Test NaN Evaluations"; 37 47 38 48 public new ISymbolicDiscriminantFunctionClassificationModel Model { … … 57 67 private set { ((IntValue)this[ModelDepthResultName].Value).Value = value; } 58 68 } 69 70 private ResultCollection EstimationLimitsResultCollection { 71 get { return (ResultCollection)this[EstimationLimitsResultsResultName].Value; } 72 } 73 public DoubleLimit EstimationLimits { 74 get { return (DoubleLimit)EstimationLimitsResultCollection[EstimationLimitsResultName].Value; } 75 } 76 77 public int TrainingUpperEstimationLimitHits { 78 get { return ((IntValue)EstimationLimitsResultCollection[TrainingUpperEstimationLimitHitsResultName].Value).Value; } 79 private set { ((IntValue)EstimationLimitsResultCollection[TrainingUpperEstimationLimitHitsResultName].Value).Value = value; } 80 } 81 public int TestUpperEstimationLimitHits { 82 get { return ((IntValue)EstimationLimitsResultCollection[TestUpperEstimationLimitHitsResultName].Value).Value; } 83 private set { ((IntValue)EstimationLimitsResultCollection[TestUpperEstimationLimitHitsResultName].Value).Value = value; } 84 } 85 public int TrainingLowerEstimationLimitHits { 86 get { return ((IntValue)EstimationLimitsResultCollection[TrainingLowerEstimationLimitHitsResultName].Value).Value; } 87 private set { ((IntValue)EstimationLimitsResultCollection[TrainingLowerEstimationLimitHitsResultName].Value).Value = value; } 88 } 89 public int TestLowerEstimationLimitHits { 90 get { return ((IntValue)EstimationLimitsResultCollection[TestLowerEstimationLimitHitsResultName].Value).Value; } 91 private set { ((IntValue)EstimationLimitsResultCollection[TestLowerEstimationLimitHitsResultName].Value).Value = value; } 92 } 93 public int TrainingNaNEvaluations { 94 get { return ((IntValue)EstimationLimitsResultCollection[TrainingNaNEvaluationsResultName].Value).Value; } 95 private set { ((IntValue)EstimationLimitsResultCollection[TrainingNaNEvaluationsResultName].Value).Value = value; } 96 } 97 public int TestNaNEvaluations { 98 get { return ((IntValue)EstimationLimitsResultCollection[TestNaNEvaluationsResultName].Value).Value; } 99 private set { ((IntValue)EstimationLimitsResultCollection[TestNaNEvaluationsResultName].Value).Value = value; } 100 } 101 59 102 [StorableConstructor] 60 103 private SymbolicDiscriminantFunctionClassificationSolution(bool deserializing) : base(deserializing) { } … … 66 109 Add(new Result(ModelLengthResultName, "Length of the symbolic classification model.", new IntValue())); 67 110 Add(new Result(ModelDepthResultName, "Depth of the symbolic classification model.", new IntValue())); 68 CalculateSymbolicDiscriminantFunctionClassificationResults(); 111 112 113 ResultCollection estimationLimitResults = new ResultCollection(); 114 estimationLimitResults.Add(new Result(EstimationLimitsResultName, "", new DoubleLimit())); 115 estimationLimitResults.Add(new Result(TrainingUpperEstimationLimitHitsResultName, "", new IntValue())); 116 estimationLimitResults.Add(new Result(TestUpperEstimationLimitHitsResultName, "", new IntValue())); 117 estimationLimitResults.Add(new Result(TrainingLowerEstimationLimitHitsResultName, "", new IntValue())); 118 estimationLimitResults.Add(new Result(TestLowerEstimationLimitHitsResultName, "", new IntValue())); 119 estimationLimitResults.Add(new Result(TrainingNaNEvaluationsResultName, "", new IntValue())); 120 estimationLimitResults.Add(new Result(TestNaNEvaluationsResultName, "", new IntValue())); 121 Add(new Result(EstimationLimitsResultsResultName, "Results concerning the estimation limits of symbolic regression solution", estimationLimitResults)); 122 123 CalculateResults(); 69 124 } 70 125 … … 73 128 } 74 129 75 private void CalculateSymbolicDiscriminantFunctionClassificationResults() { 76 CalculateResults(); 77 CalculateRegressionResults(); 130 [StorableHook(HookType.AfterDeserialization)] 131 private void AfterDeserialization() { 132 if (!ContainsKey(EstimationLimitsResultsResultName)) { 133 ResultCollection estimationLimitResults = new ResultCollection(); 134 estimationLimitResults.Add(new Result(EstimationLimitsResultName, "", new DoubleLimit())); 135 estimationLimitResults.Add(new Result(TrainingUpperEstimationLimitHitsResultName, "", new IntValue())); 136 estimationLimitResults.Add(new Result(TestUpperEstimationLimitHitsResultName, "", new IntValue())); 137 estimationLimitResults.Add(new Result(TrainingLowerEstimationLimitHitsResultName, "", new IntValue())); 138 estimationLimitResults.Add(new Result(TestLowerEstimationLimitHitsResultName, "", new IntValue())); 139 estimationLimitResults.Add(new Result(TrainingNaNEvaluationsResultName, "", new IntValue())); 140 estimationLimitResults.Add(new Result(TestNaNEvaluationsResultName, "", new IntValue())); 141 Add(new Result(EstimationLimitsResultsResultName, "Results concerning the estimation limits of symbolic regression solution", estimationLimitResults)); 142 CalculateResults(); 143 } 144 } 145 146 147 private void CalculateResults() { 78 148 ModelLength = Model.SymbolicExpressionTree.Length; 79 149 ModelDepth = Model.SymbolicExpressionTree.Depth; 150 151 EstimationLimits.Lower = Model.LowerEstimationLimit; 152 EstimationLimits.Upper = Model.UpperEstimationLimit; 153 154 TrainingUpperEstimationLimitHits = EstimatedTrainingValues.Count(x => x.IsAlmost(Model.UpperEstimationLimit)); 155 TestUpperEstimationLimitHits = EstimatedTestValues.Count(x => x.IsAlmost(Model.UpperEstimationLimit)); 156 TrainingLowerEstimationLimitHits = EstimatedTrainingValues.Count(x => x.IsAlmost(Model.LowerEstimationLimit)); 157 TestLowerEstimationLimitHits = EstimatedTestValues.Count(x => x.IsAlmost(Model.LowerEstimationLimit)); 158 TrainingNaNEvaluations = Model.Interpreter.GetSymbolicExpressionTreeValues(Model.SymbolicExpressionTree, ProblemData.Dataset, ProblemData.TrainingIndices).Count(double.IsNaN); 159 TestNaNEvaluations = Model.Interpreter.GetSymbolicExpressionTreeValues(Model.SymbolicExpressionTree, ProblemData.Dataset, ProblemData.TestIndices).Count(double.IsNaN); 80 160 } 81 161 82 162 protected override void RecalculateResults() { 83 CalculateSymbolicDiscriminantFunctionClassificationResults(); 163 base.RecalculateResults(); 164 CalculateResults(); 84 165 } 85 166 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionSolution.cs
r7259 r8723 20 20 #endregion 21 21 22 using System.Linq; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 35 36 private const string ModelLengthResultName = "Model Length"; 36 37 private const string ModelDepthResultName = "Model Depth"; 38 39 private const string EstimationLimitsResultsResultName = "Estimation Limits Results"; 40 private const string EstimationLimitsResultName = "Estimation Limits"; 41 private const string TrainingUpperEstimationLimitHitsResultName = "Training Upper Estimation Limit Hits"; 42 private const string TestLowerEstimationLimitHitsResultName = "Test Lower Estimation Limit Hits"; 43 private const string TrainingLowerEstimationLimitHitsResultName = "Training Lower Estimation Limit Hits"; 44 private const string TestUpperEstimationLimitHitsResultName = "Test Upper Estimation Limit Hits"; 45 private const string TrainingNaNEvaluationsResultName = "Training NaN Evaluations"; 46 private const string TestNaNEvaluationsResultName = "Test NaN Evaluations"; 37 47 38 48 public new ISymbolicRegressionModel Model { … … 53 63 } 54 64 65 private ResultCollection EstimationLimitsResultCollection { 66 get { return (ResultCollection)this[EstimationLimitsResultsResultName].Value; } 67 } 68 public DoubleLimit EstimationLimits { 69 get { return (DoubleLimit)EstimationLimitsResultCollection[EstimationLimitsResultName].Value; } 70 } 71 72 public int TrainingUpperEstimationLimitHits { 73 get { return ((IntValue)EstimationLimitsResultCollection[TrainingUpperEstimationLimitHitsResultName].Value).Value; } 74 private set { ((IntValue)EstimationLimitsResultCollection[TrainingUpperEstimationLimitHitsResultName].Value).Value = value; } 75 } 76 public int TestUpperEstimationLimitHits { 77 get { return ((IntValue)EstimationLimitsResultCollection[TestUpperEstimationLimitHitsResultName].Value).Value; } 78 private set { ((IntValue)EstimationLimitsResultCollection[TestUpperEstimationLimitHitsResultName].Value).Value = value; } 79 } 80 public int TrainingLowerEstimationLimitHits { 81 get { return ((IntValue)EstimationLimitsResultCollection[TrainingLowerEstimationLimitHitsResultName].Value).Value; } 82 private set { ((IntValue)EstimationLimitsResultCollection[TrainingLowerEstimationLimitHitsResultName].Value).Value = value; } 83 } 84 public int TestLowerEstimationLimitHits { 85 get { return ((IntValue)EstimationLimitsResultCollection[TestLowerEstimationLimitHitsResultName].Value).Value; } 86 private set { ((IntValue)EstimationLimitsResultCollection[TestLowerEstimationLimitHitsResultName].Value).Value = value; } 87 } 88 public int TrainingNaNEvaluations { 89 get { return ((IntValue)EstimationLimitsResultCollection[TrainingNaNEvaluationsResultName].Value).Value; } 90 private set { ((IntValue)EstimationLimitsResultCollection[TrainingNaNEvaluationsResultName].Value).Value = value; } 91 } 92 public int TestNaNEvaluations { 93 get { return ((IntValue)EstimationLimitsResultCollection[TestNaNEvaluationsResultName].Value).Value; } 94 private set { ((IntValue)EstimationLimitsResultCollection[TestNaNEvaluationsResultName].Value).Value = value; } 95 } 96 55 97 [StorableConstructor] 56 98 private SymbolicRegressionSolution(bool deserializing) : base(deserializing) { } … … 62 104 Add(new Result(ModelLengthResultName, "Length of the symbolic regression model.", new IntValue())); 63 105 Add(new Result(ModelDepthResultName, "Depth of the symbolic regression model.", new IntValue())); 106 107 ResultCollection estimationLimitResults = new ResultCollection(); 108 estimationLimitResults.Add(new Result(EstimationLimitsResultName, "", new DoubleLimit())); 109 estimationLimitResults.Add(new Result(TrainingUpperEstimationLimitHitsResultName, "", new IntValue())); 110 estimationLimitResults.Add(new Result(TestUpperEstimationLimitHitsResultName, "", new IntValue())); 111 estimationLimitResults.Add(new Result(TrainingLowerEstimationLimitHitsResultName, "", new IntValue())); 112 estimationLimitResults.Add(new Result(TestLowerEstimationLimitHitsResultName, "", new IntValue())); 113 estimationLimitResults.Add(new Result(TrainingNaNEvaluationsResultName, "", new IntValue())); 114 estimationLimitResults.Add(new Result(TestNaNEvaluationsResultName, "", new IntValue())); 115 Add(new Result(EstimationLimitsResultsResultName, "Results concerning the estimation limits of symbolic regression solution", estimationLimitResults)); 116 64 117 RecalculateResults(); 65 118 } … … 69 122 } 70 123 124 [StorableHook(HookType.AfterDeserialization)] 125 private void AfterDeserialization() { 126 if (!ContainsKey(EstimationLimitsResultsResultName)) { 127 ResultCollection estimationLimitResults = new ResultCollection(); 128 estimationLimitResults.Add(new Result(EstimationLimitsResultName, "", new DoubleLimit())); 129 estimationLimitResults.Add(new Result(TrainingUpperEstimationLimitHitsResultName, "", new IntValue())); 130 estimationLimitResults.Add(new Result(TestUpperEstimationLimitHitsResultName, "", new IntValue())); 131 estimationLimitResults.Add(new Result(TrainingLowerEstimationLimitHitsResultName, "", new IntValue())); 132 estimationLimitResults.Add(new Result(TestLowerEstimationLimitHitsResultName, "", new IntValue())); 133 estimationLimitResults.Add(new Result(TrainingNaNEvaluationsResultName, "", new IntValue())); 134 estimationLimitResults.Add(new Result(TestNaNEvaluationsResultName, "", new IntValue())); 135 Add(new Result(EstimationLimitsResultsResultName, "Results concerning the estimation limits of symbolic regression solution", estimationLimitResults)); 136 CalculateResults(); 137 } 138 } 139 71 140 protected override void RecalculateResults() { 72 141 base.RecalculateResults(); 142 CalculateResults(); 143 } 144 145 private void CalculateResults() { 73 146 ModelLength = Model.SymbolicExpressionTree.Length; 74 147 ModelDepth = Model.SymbolicExpressionTree.Depth; 148 149 EstimationLimits.Lower = Model.LowerEstimationLimit; 150 EstimationLimits.Upper = Model.UpperEstimationLimit; 151 152 TrainingUpperEstimationLimitHits = EstimatedTrainingValues.Count(x => x.IsAlmost(Model.UpperEstimationLimit)); 153 TestUpperEstimationLimitHits = EstimatedTestValues.Count(x => x.IsAlmost(Model.UpperEstimationLimit)); 154 TrainingLowerEstimationLimitHits = EstimatedTrainingValues.Count(x => x.IsAlmost(Model.LowerEstimationLimit)); 155 TestLowerEstimationLimitHits = EstimatedTestValues.Count(x => x.IsAlmost(Model.LowerEstimationLimit)); 156 TrainingNaNEvaluations = Model.Interpreter.GetSymbolicExpressionTreeValues(Model.SymbolicExpressionTree, ProblemData.Dataset, ProblemData.TrainingIndices).Count(double.IsNaN); 157 TestNaNEvaluations = Model.Interpreter.GetSymbolicExpressionTreeValues(Model.SymbolicExpressionTree, ProblemData.Dataset, ProblemData.TestIndices).Count(double.IsNaN); 75 158 } 76 159 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleSolution.cs
r8528 r8723 153 153 } 154 154 155 protected override void RecalculateResults() {156 CalculateResults();157 }158 155 159 156 #region Evaluation -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolution.cs
r8174 r8723 45 45 : base(model, problemData) { 46 46 evaluationCache = new Dictionary<int, double>(problemData.Dataset.Rows); 47 CalculateClassificationResults(); 47 48 } 48 49 -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs
r8139 r8723 85 85 } 86 86 87 protected void Calculate Results() {87 protected void CalculateClassificationResults() { 88 88 double[] estimatedTrainingClassValues = EstimatedTrainingClassValues.ToArray(); // cache values 89 89 double[] originalTrainingClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).ToArray(); … … 114 114 115 115 public abstract IEnumerable<double> GetEstimatedClassValues(IEnumerable<int> rows); 116 117 protected override void RecalculateResults() { 118 CalculateClassificationResults(); 119 } 116 120 } 117 121 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationSolution.cs
r8684 r8723 51 51 valueEvaluationCache = new Dictionary<int, double>(); 52 52 classValueEvaluationCache = new Dictionary<int, double>(); 53 CalculateDiscriminantFunctionClassificationResults(); 53 CalculateRegressionResults(); 54 CalculateClassificationResults(); 54 55 } 55 56 … … 117 118 base.OnProblemDataChanged(); 118 119 } 119 120 121 private void CalculateDiscriminantFunctionClassificationResults() {122 CalculateResults();123 CalculateRegressionResults();124 }125 126 protected override void RecalculateResults() {127 CalculateDiscriminantFunctionClassificationResults();128 }129 120 } 130 121 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationSolutionBase.cs
r8552 r8723 85 85 Add(new Result(TrainingRSquaredResultName, "Squared Pearson's correlation coefficient of the model output and the actual values on the training partition", new DoubleValue())); 86 86 Add(new Result(TestRSquaredResultName, "Squared Pearson's correlation coefficient of the model output and the actual values on the test partition", new DoubleValue())); 87 88 87 RegisterEventHandler(); 89 88 } … … 139 138 140 139 public abstract IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows); 140 141 protected override void RecalculateResults() { 142 base.RecalculateResults(); 143 CalculateRegressionResults(); 144 } 141 145 } 142 146 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleSolution.cs
r8174 r8723 155 155 } 156 156 157 protected override void RecalculateResults() {158 CalculateResults();159 }160 161 157 #region Evaluation 162 158 public override IEnumerable<double> EstimatedTrainingValues { -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionSolution.cs
r8139 r8723 45 45 : base(model, problemData) { 46 46 evaluationCache = new Dictionary<int, double>(problemData.Dataset.Rows); 47 CalculateRegressionResults(); 47 48 } 48 49 49 protected override void RecalculateResults() {50 CalculateResults();51 }52 50 53 51 public override IEnumerable<double> EstimatedValues { -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionSolutionBase.cs
r8139 r8723 164 164 } 165 165 166 protected void CalculateResults() { 166 protected override void RecalculateResults() { 167 CalculateRegressionResults(); 168 } 169 170 protected void CalculateRegressionResults() { 167 171 IEnumerable<double> estimatedTrainingValues = EstimatedTrainingValues; // cache values 168 172 IEnumerable<double> originalTrainingValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices);
Note: See TracChangeset
for help on using the changeset viewer.