Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/14/11 14:00:19 (13 years ago)
Author:
mkommend
Message:

#1506: Restructured calculation of results in IDataAnalysisSolutions and fixed bug in SymbolicDiscriminantClassisificationEstimatedValuesView.

Location:
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolution.cs

    r6184 r6411  
    2020#endregion
    2121
    22 using System;
    2322using System.Collections.Generic;
    2423using System.Linq;
     
    6665      Add(new Result(TrainingAccuracyResultName, "Accuracy of the model on the training partition (percentage of correctly classified instances).", new PercentValue()));
    6766      Add(new Result(TestAccuracyResultName, "Accuracy of the model on the test partition (percentage of correctly classified instances).", new PercentValue()));
    68       RecalculateResults();
     67      CalculateResults();
    6968    }
    7069
     
    7372    }
    7473
    75     protected override void OnProblemDataChanged(EventArgs e) {
    76       base.OnProblemDataChanged(e);
    77       RecalculateResults();
     74    protected override void RecalculateResults() {
     75      CalculateResults();
    7876    }
    7977
    80     protected override void OnModelChanged(EventArgs e) {
    81       base.OnModelChanged(e);
    82       RecalculateResults();
    83     }
    84 
    85     protected void RecalculateResults() {
     78    private void CalculateResults() {
    8679      double[] estimatedTrainingClassValues = EstimatedTrainingClassValues.ToArray(); // cache values
    8780      IEnumerable<double> originalTrainingClassValues = ProblemData.Dataset.GetEnumeratedVariableValues(ProblemData.TargetVariable, ProblemData.TrainingIndizes);
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationSolution.cs

    r5942 r6411  
    2525using HeuristicLab.Common;
    2626using HeuristicLab.Core;
    27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2827using HeuristicLab.Data;
    2928using HeuristicLab.Optimization;
     29using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3030
    3131namespace HeuristicLab.Problems.DataAnalysis {
     
    8989      Add(new Result(TrainingRSquaredResultName, "Squared Pearson's correlation coefficient of the model output and the actual values on the training partition", new DoubleValue()));
    9090      Add(new Result(TestRSquaredResultName, "Squared Pearson's correlation coefficient of the model output and the actual values on the test partition", new DoubleValue()));
     91      SetAccuracyMaximizingThresholds();
     92
     93      //mkommend: important to recalculate accuracy because during the calculation before no thresholds were present     
     94      base.RecalculateResults();
     95      CalculateResults();
    9196      RegisterEventHandler();
    92       SetAccuracyMaximizingThresholds();
    93       RecalculateResults();
    9497    }
    9598
     
    99102    }
    100103
    101     protected new void RecalculateResults() {
     104    protected override void OnModelChanged(EventArgs e) {
     105      DeregisterEventHandler();
     106      SetAccuracyMaximizingThresholds();
     107      RegisterEventHandler();
     108      base.OnModelChanged(e);
     109    }
     110
     111    protected override void RecalculateResults() {
     112      base.RecalculateResults();
     113      CalculateResults();
     114    }
     115
     116    private void CalculateResults() {
    102117      double[] estimatedTrainingValues = EstimatedTrainingValues.ToArray(); // cache values
    103118      IEnumerable<double> originalTrainingValues = ProblemData.Dataset.GetEnumeratedVariableValues(ProblemData.TargetVariable, ProblemData.TrainingIndizes);
     
    119134    private void RegisterEventHandler() {
    120135      Model.ThresholdsChanged += new EventHandler(Model_ThresholdsChanged);
     136    }
     137    private void DeregisterEventHandler() {
     138      Model.ThresholdsChanged -= new EventHandler(Model_ThresholdsChanged);
    121139    }
    122140    private void Model_ThresholdsChanged(object sender, EventArgs e) {
     
    142160    }
    143161
    144     protected override void OnModelChanged(EventArgs e) {
    145       base.OnModelChanged(e);
    146       SetAccuracyMaximizingThresholds();
    147       RecalculateResults();
    148     }
    149 
    150     protected override void OnProblemDataChanged(EventArgs e) {
    151       base.OnProblemDataChanged(e);
    152       SetAccuracyMaximizingThresholds();
    153       RecalculateResults();
    154     }
    155162    protected virtual void OnModelThresholdsChanged(EventArgs e) {
    156       base.OnModelChanged(e);
    157163      RecalculateResults();
    158164    }
Note: See TracChangeset for help on using the changeset viewer.