Changeset 13098
- Timestamp:
- 11/02/15 21:54:58 (9 years ago)
- Location:
- branches/ClassificationModelComparison
- Files:
-
- 18 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/ClassificationModelComparison/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/OneRClassificationModelView.Designer.cs
r9135 r13098 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 2Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. -
branches/ClassificationModelComparison/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/OneRClassificationModelView.cs
r9135 r13098 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 2Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 26 26 27 27 namespace HeuristicLab.Algorithms.DataAnalysis.Views { 28 [View(" 1R Classification Model")]28 [View("OneR Classification Model")] 29 29 [Content(typeof(OneRClassificationModel), IsDefaultView = true)] 30 30 public partial class OneRClassificationModelView : AsynchronousContentView { -
branches/ClassificationModelComparison/HeuristicLab.Algorithms.DataAnalysis/3.4/BaselineClassifiers/OneRClassificationModel.cs
r13090 r13098 30 30 namespace HeuristicLab.Algorithms.DataAnalysis { 31 31 [StorableClass] 32 [Item(" 1R Classification Model", "A model that uses intervals for one variable to determine the class.")]32 [Item("OneR Classification Model", "A model that uses intervals for one variable to determine the class.")] 33 33 public class OneRClassificationModel : NamedItem, IClassificationModel { 34 34 [Storable] -
branches/ClassificationModelComparison/HeuristicLab.Algorithms.DataAnalysis/3.4/BaselineClassifiers/OneRClassificationSolution.cs
r13090 r13098 27 27 namespace HeuristicLab.Algorithms.DataAnalysis { 28 28 [StorableClass] 29 [Item(Name = " 1R Classification Solution", Description = "Represents a 1R classification solution (model + data).")]29 [Item(Name = "OneR Classification Solution", Description = "Represents a OneR classification solution which uses only a single feature with potentially multiple thresholds for class prediction.")] 30 30 public class OneRClassificationSolution : ClassificationSolution { 31 31 public new OneRClassificationModel Model { -
branches/ClassificationModelComparison/HeuristicLab.Algorithms.DataAnalysis/3.4/BaselineClassifiers/ZeroR.cs
r13092 r13098 64 64 .MaxItems(kvp => kvp.Value).Select(x => x.Key).First(); 65 65 66 var model = new Constant RegressionModel(dominantClass);67 var solution = new ConstantClassificationSolution(model, (IClassificationProblemData)problemData.Clone());66 var model = new ConstantModel(dominantClass); 67 var solution = model.CreateClassificationSolution(problemData); 68 68 return solution; 69 69 } -
branches/ClassificationModelComparison/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithmStatic.cs
r13065 r13098 96 96 weights = new List<double>(); 97 97 // add constant model 98 models.Add(new Constant RegressionModel(f0));98 models.Add(new ConstantModel(f0)); 99 99 weights.Add(1.0); 100 100 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis.Views/3.4/Classification/ClassificationSolutionComparisonView.Designer.cs
r9135 r13098 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 2Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis.Views/3.4/Classification/ClassificationSolutionComparisonView.cs
r13091 r13098 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 2Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 27 27 using HeuristicLab.MainForm; 28 28 using HeuristicLab.Problems.DataAnalysis.OnlineCalculators; 29 using HeuristicLab.Random;30 29 31 30 namespace HeuristicLab.Problems.DataAnalysis.Views.Classification { 32 [View(" Solution Comparions")]31 [View("Classification Solution Comparions")] 33 32 [Content(typeof(IClassificationSolution))] 34 33 public partial class ClassificationSolutionComparisonView : DataAnalysisSolutionEvaluationView { -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionErrorCharacteristicsCurveView.cs
r13082 r13098 292 292 private IRegressionSolution CreateConstantSolution() { 293 293 double averageTrainingTarget = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).Average(); 294 var model = new Constant RegressionModel(averageTrainingTarget);295 var solution = new ConstantRegressionSolution(model, (IRegressionProblemData)ProblemData.Clone());294 var model = new ConstantModel(averageTrainingTarget); 295 var solution = model.CreateRegressionSolution(ProblemData); 296 296 solution.Name = "Baseline (constant)"; 297 297 return solution; -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj
r13089 r13098 175 175 <Compile Include="Implementation\Clustering\ClusteringProblemData.cs" /> 176 176 <Compile Include="Implementation\Clustering\ClusteringSolution.cs" /> 177 <Compile Include="Implementation\Regression\ConstantModel.cs" /> 177 178 <Compile Include="Implementation\Regression\ConstantRegressionModel.cs" /> 178 179 <Compile Include="Implementation\Regression\ConstantRegressionSolution.cs" /> -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationPerformanceMeasures.cs
r13083 r13098 37 37 protected const string TrainingFalsePositiveRateResultName = "False positive rate (training)"; 38 38 protected const string TrainingFalseDiscoveryRateResultName = "False discovery rate (training)"; 39 protected const string TrainingF1ScoreResultName = "F1 score (training)"; 40 protected const string TrainingMatthewsCorrelationResultName = "Matthews Correlation (training)"; 39 41 protected const string TestTruePositiveRateResultName = "True positive rate (test)"; 40 42 protected const string TestTrueNegativeRateResultName = "True negative rate (test)"; … … 43 45 protected const string TestFalsePositiveRateResultName = "False positive rate (test)"; 44 46 protected const string TestFalseDiscoveryRateResultName = "False discovery rate (test)"; 47 protected const string TestF1ScoreResultName = "F1 score (test)"; 48 protected const string TestMatthewsCorrelationResultName = "Matthews Correlation (test)"; 45 49 #endregion 46 50 … … 89 93 set { ((DoubleValue)this[TrainingFalseDiscoveryRateResultName].Value).Value = value; } 90 94 } 95 public double TrainingF1Score { 96 get { return ((DoubleValue)this[TrainingF1ScoreResultName].Value).Value; } 97 set { ((DoubleValue)this[TrainingF1ScoreResultName].Value).Value = value; } 98 } 99 public double TrainingMatthewsCorrelation { 100 get { return ((DoubleValue)this[TrainingMatthewsCorrelationResultName].Value).Value; } 101 set { ((DoubleValue)this[TrainingMatthewsCorrelationResultName].Value).Value = value; } 102 } 91 103 public double TestTruePositiveRate { 92 104 get { return ((DoubleValue)this[TestTruePositiveRateResultName].Value).Value; } … … 113 125 set { ((DoubleValue)this[TestFalseDiscoveryRateResultName].Value).Value = value; } 114 126 } 127 public double TestF1Score { 128 get { return ((DoubleValue)this[TestF1ScoreResultName].Value).Value; } 129 set { ((DoubleValue)this[TestF1ScoreResultName].Value).Value = value; } 130 } 131 public double TestMatthewsCorrelation { 132 get { return ((DoubleValue)this[TestMatthewsCorrelationResultName].Value).Value; } 133 set { ((DoubleValue)this[TestMatthewsCorrelationResultName].Value).Value = value; } 134 } 115 135 #endregion 116 136 … … 122 142 Add(new Result(TrainingNegativePredictiveValueResultName, "Negative predictive value of the model on the training partition\n(TN/(TN+FN)).", new PercentValue())); 123 143 Add(new Result(TrainingFalsePositiveRateResultName, "The false positive rate is the complement of the true negative rate of the model on the training partition.", new PercentValue())); 124 Add(new Result(TrainingFalseDiscoveryRateResultName, "The false discovery rate is the complement of the positive predictive value of the model on the training partition.", new PercentValue())); 144 Add(new Result(TrainingFalseDiscoveryRateResultName, "The false discovery rate is the complement of the positive predictive value of the model on the test partition.", new PercentValue())); 145 Add(new Result(TrainingF1ScoreResultName, "The F1 score of the model on the training partition.", new DoubleValue())); 146 Add(new Result(TrainingMatthewsCorrelationResultName, "The Matthew's correlation value of the model on the training partition.", new DoubleValue())); 125 147 Add(new Result(TestTruePositiveRateResultName, "Sensitivity/True positive rate of the model on the test partition\n(TP/(TP+FN)).", new PercentValue())); 126 148 Add(new Result(TestTrueNegativeRateResultName, "Specificity/True negative rate of the model on the test partition\n(TN/(FP+TN)).", new PercentValue())); … … 129 151 Add(new Result(TestFalsePositiveRateResultName, "The false positive rate is the complement of the true negative rate of the model on the test partition.", new PercentValue())); 130 152 Add(new Result(TestFalseDiscoveryRateResultName, "The false discovery rate is the complement of the positive predictive value of the model on the test partition.", new PercentValue())); 153 Add(new Result(TestF1ScoreResultName, "The F1 score of the model on the test partition.", new DoubleValue())); 154 Add(new Result(TrainingMatthewsCorrelationResultName, "The Matthew's correlation value of the model on the test partition.", new DoubleValue())); 131 155 TrainingTruePositiveRate = double.NaN; 132 156 TrainingTrueNegativeRate = double.NaN; … … 135 159 TrainingFalsePositiveRate = double.NaN; 136 160 TrainingFalseDiscoveryRate = double.NaN; 161 TrainingF1Score = double.NaN; 162 TrainingMatthewsCorrelation = double.NaN; 137 163 TestTruePositiveRate = double.NaN; 138 164 TestTrueNegativeRate = double.NaN; … … 141 167 TestFalsePositiveRate = double.NaN; 142 168 TestFalseDiscoveryRate = double.NaN; 169 TestF1Score = double.NaN; 170 TestMatthewsCorrelation = double.NaN; 143 171 } 144 172 -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs
r13083 r13098 26 26 using HeuristicLab.Optimization; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using HeuristicLab.Problems.DataAnalysis.OnlineCalculators; 28 29 29 30 namespace HeuristicLab.Problems.DataAnalysis { … … 135 136 if (testPerformanceCalculator.ErrorState == OnlineCalculatorError.None) 136 137 ClassificationPerformanceMeasures.SetTestResults(testPerformanceCalculator); 138 139 var f1Training = FOneScoreCalculator.Calculate(originalTrainingClassValues, estimatedTrainingClassValues, out errorState); 140 if (errorState == OnlineCalculatorError.None) ClassificationPerformanceMeasures.TrainingF1Score = f1Training; 141 var f1Test = FOneScoreCalculator.Calculate(originalTestClassValues, estimatedTestClassValues, out errorState); 142 if (errorState == OnlineCalculatorError.None) ClassificationPerformanceMeasures.TestF1Score = f1Test; 143 144 145 var mccTraining = MatthewsCorrelationCoefficientCalculator.Calculate(originalTrainingClassValues, estimatedTrainingClassValues, out errorState); 146 if (errorState == OnlineCalculatorError.None) ClassificationPerformanceMeasures.TrainingMatthewsCorrelation = mccTraining; 147 var mccTest = MatthewsCorrelationCoefficientCalculator.Calculate(originalTestClassValues, estimatedTestClassValues, out errorState); 148 if (errorState == OnlineCalculatorError.None) ClassificationPerformanceMeasures.TestMatthewsCorrelation = mccTest; 137 149 } 138 150 -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ConstantClassificationSolution.cs
r13089 r13098 28 28 [Item(Name = "Constant Classification Solution", Description = "Represents a constant classification solution (model + data).")] 29 29 public class ConstantClassificationSolution : ClassificationSolution { 30 public new Constant RegressionModel Model {31 get { return (Constant RegressionModel)base.Model; }30 public new ConstantModel Model { 31 get { return (ConstantModel)base.Model; } 32 32 set { base.Model = value; } 33 33 } … … 36 36 protected ConstantClassificationSolution(bool deserializing) : base(deserializing) { } 37 37 protected ConstantClassificationSolution(ConstantClassificationSolution original, Cloner cloner) : base(original, cloner) { } 38 public ConstantClassificationSolution(Constant RegressionModel model, IClassificationProblemData problemData)38 public ConstantClassificationSolution(ConstantModel model, IClassificationProblemData problemData) 39 39 : base(model, problemData) { 40 40 RecalculateResults(); -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ConstantModel.cs
r13097 r13098 30 30 namespace HeuristicLab.Problems.DataAnalysis { 31 31 [StorableClass] 32 [Item("Constant RegressionModel", "A model that always returns the same constant value regardless of the presented input data.")]33 public class Constant RegressionModel : NamedItem, IRegressionModel, IStringConvertibleValue {32 [Item("Constant Model", "A model that always returns the same constant value regardless of the presented input data.")] 33 public class ConstantModel : NamedItem, IRegressionModel, IClassificationModel, ITimeSeriesPrognosisModel, IStringConvertibleValue { 34 34 [Storable] 35 35 private double constant; … … 40 40 41 41 [StorableConstructor] 42 protected Constant RegressionModel(bool deserializing) : base(deserializing) { }43 protected Constant RegressionModel(ConstantRegressionModel original, Cloner cloner)42 protected ConstantModel(bool deserializing) : base(deserializing) { } 43 protected ConstantModel(ConstantModel original, Cloner cloner) 44 44 : base(original, cloner) { 45 45 this.constant = original.constant; 46 46 } 47 public override IDeepCloneable Clone(Cloner cloner) { return new Constant RegressionModel(this, cloner); }47 public override IDeepCloneable Clone(Cloner cloner) { return new ConstantModel(this, cloner); } 48 48 49 public Constant RegressionModel(double constant)49 public ConstantModel(double constant) 50 50 : base() { 51 51 this.name = ItemName; … … 58 58 return rows.Select(row => Constant); 59 59 } 60 public IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) { 61 return GetEstimatedValues(dataset, rows); 62 } 63 public IEnumerable<IEnumerable<double>> GetPrognosedValues(IDataset dataset, IEnumerable<int> rows, IEnumerable<int> horizons) { 64 return rows.Select(_ => horizons.Select(__ => Constant)); 65 } 60 66 61 67 public IRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData) { 62 68 return new ConstantRegressionSolution(this, new RegressionProblemData(problemData)); 69 } 70 public IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData) { 71 return new ConstantClassificationSolution(this, new ClassificationProblemData(problemData)); 72 } 73 public ITimeSeriesPrognosisSolution CreateTimeSeriesPrognosisSolution(ITimeSeriesPrognosisProblemData problemData) { 74 return new TimeSeriesPrognosisSolution(this, new TimeSeriesPrognosisProblemData(problemData)); 63 75 } 64 76 … … 83 95 public event EventHandler ValueChanged; 84 96 #endregion 97 85 98 } 86 99 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ConstantRegressionModel.cs
r13097 r13098 31 31 [StorableClass] 32 32 [Item("Constant Regression Model", "A model that always returns the same constant value regardless of the presented input data.")] 33 [Obsolete] 33 34 public class ConstantRegressionModel : NamedItem, IRegressionModel, IStringConvertibleValue { 34 35 [Storable] … … 60 61 61 62 public IRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData) { 62 return new ConstantRegressionSolution( this, new RegressionProblemData(problemData));63 return new ConstantRegressionSolution(new ConstantModel(constant), new RegressionProblemData(problemData)); 63 64 } 64 65 -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ConstantRegressionSolution.cs
r13083 r13098 28 28 [Item(Name = "Constant Regression Solution", Description = "Represents a constant regression solution (model + data).")] 29 29 public class ConstantRegressionSolution : RegressionSolution { 30 public new Constant RegressionModel Model {31 get { return (Constant RegressionModel)base.Model; }30 public new ConstantModel Model { 31 get { return (ConstantModel)base.Model; } 32 32 set { base.Model = value; } 33 33 } … … 36 36 protected ConstantRegressionSolution(bool deserializing) : base(deserializing) { } 37 37 protected ConstantRegressionSolution(ConstantRegressionSolution original, Cloner cloner) : base(original, cloner) { } 38 public ConstantRegressionSolution(Constant RegressionModel model, IRegressionProblemData problemData)38 public ConstantRegressionSolution(ConstantModel model, IRegressionProblemData problemData) 39 39 : base(model, problemData) { 40 40 RecalculateResults(); -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/Models/ConstantTimeSeriesPrognosisModel.cs
r13083 r13098 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using System.Linq; … … 29 30 [StorableClass] 30 31 [Item("Constant TimeSeries Model", "A time series model that returns for all prediciton the same constant value.")] 32 [Obsolete] 31 33 public class ConstantTimeSeriesPrognosisModel : ConstantRegressionModel, ITimeSeriesPrognosisModel { 32 34 [StorableConstructor] -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisResults.cs
r13083 r13098 373 373 //mean model 374 374 double trainingMean = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices).Average(); 375 var meanModel = new Constant TimeSeriesPrognosisModel(trainingMean);375 var meanModel = new ConstantModel(trainingMean); 376 376 377 377 //AR1 model … … 448 448 //mean model 449 449 double trainingMean = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices).Average(); 450 var meanModel = new Constant TimeSeriesPrognosisModel(trainingMean);450 var meanModel = new ConstantModel(trainingMean); 451 451 452 452 //AR1 model -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisSolutionBase.cs
r13083 r13098 150 150 OnlineCalculatorError errorState; 151 151 double trainingMean = ProblemData.TrainingIndices.Any() ? ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).Average() : double.NaN; 152 var meanModel = new Constant TimeSeriesPrognosisModel(trainingMean);152 var meanModel = new ConstantModel(trainingMean); 153 153 154 154 double alpha, beta;
Note: See TracChangeset
for help on using the changeset viewer.