- Timestamp:
- 10/29/15 18:33:51 (9 years ago)
- Location:
- branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis
- Files:
-
- 94 edited
- 8 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis
- Property svn:mergeinfo changed
-
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Dataset.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 33 33 [Item("Dataset", "Represents a dataset containing data that should be analyzed.")] 34 34 [StorableClass] 35 public sealed class Dataset : NamedItem, IStringConvertibleMatrix{35 public class Dataset : NamedItem, IDataset { 36 36 [StorableConstructor] 37 pr ivateDataset(bool deserializing) : base(deserializing) { }38 pr ivateDataset(Dataset original, Cloner cloner)37 protected Dataset(bool deserializing) : base(deserializing) { } 38 protected Dataset(Dataset original, Cloner cloner) 39 39 : base(original, cloner) { 40 40 variableValues = new Dictionary<string, IList>(original.variableValues); … … 118 118 } 119 119 120 protected Dataset(Dataset dataset) : this(dataset.variableNames, dataset.variableValues.Values) { } 121 120 122 #region Backwards compatible code, remove with 3.5 121 123 private double[,] storableData; … … 143 145 144 146 [Storable(Name = "VariableValues")] 145 pr ivateDictionary<string, IList> variableValues;146 147 pr ivateList<string> variableNames;147 protected Dictionary<string, IList> variableValues; 148 149 protected List<string> variableNames; 148 150 [Storable] 149 151 public IEnumerable<string> VariableNames { 150 152 get { return variableNames; } 151 pr ivateset {153 protected set { 152 154 if (variableNames != null) throw new InvalidOperationException(); 153 155 variableNames = new List<string>(value); 154 156 } 155 157 } 156 157 158 public IEnumerable<string> DoubleVariables { 158 159 get { return variableValues.Where(p => p.Value is List<double>).Select(p => p.Key); } 159 160 } 160 161 161 public IEnumerable<double> GetDoubleValues(string variableName) { 162 return GetValues<double>(variableName); 163 } 164 public IEnumerable<string> GetStringValues(string variableName) { 165 return GetValues<string>(variableName); 166 } 167 public IEnumerable<DateTime> GetDateTimeValues(string variableName) { 168 return GetValues<DateTime>(variableName); 169 } 170 171 public ReadOnlyCollection<double> GetReadOnlyDoubleValues(string variableName) { 172 var values = GetValues<double>(variableName); 173 return values.AsReadOnly(); 174 } 175 public double GetDoubleValue(string variableName, int row) { 176 var values = GetValues<double>(variableName); 177 return values[row]; 178 } 179 public IEnumerable<double> GetDoubleValues(string variableName, IEnumerable<int> rows) { 180 return GetValues<double>(variableName, rows); 181 } 182 private IEnumerable<T> GetValues<T>(string variableName, IEnumerable<int> rows) { 183 var values = GetValues<T>(variableName); 184 return rows.Select(x => values[x]); 185 } 186 private List<T> GetValues<T>(string variableName) { 162 187 IList list; 163 188 if (!variableValues.TryGetValue(variableName, out list)) 164 189 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 165 List<double> values = list as List<double>; 166 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a double variable."); 167 168 //mkommend yield return used to enable lazy evaluation 169 foreach (double value in values) 170 yield return value; 171 } 172 public ReadOnlyCollection<double> GetReadOnlyDoubleValues(string variableName) { 173 IList list; 174 if (!variableValues.TryGetValue(variableName, out list)) 175 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 176 List<double> values = list as List<double>; 177 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a double variable."); 178 return values.AsReadOnly(); 179 } 180 public double GetDoubleValue(string variableName, int row) { 181 IList list; 182 if (!variableValues.TryGetValue(variableName, out list)) 183 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 184 List<double> values = list as List<double>; 185 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a double variable."); 186 return values[row]; 187 } 188 public IEnumerable<double> GetDoubleValues(string variableName, IEnumerable<int> rows) { 189 IList list; 190 if (!variableValues.TryGetValue(variableName, out list)) 191 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 192 List<double> values = list as List<double>; 193 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a double variable."); 194 195 return rows.Select(index => values[index]); 190 List<T> values = list as List<T>; 191 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a " + typeof(T) + " variable."); 192 return values; 193 } 194 public bool VariableHasType<T>(string variableName) { 195 return variableValues[variableName] is IList<T>; 196 196 } 197 197 198 198 #region IStringConvertibleMatrix Members 199 199 [Storable] 200 pr ivateint rows;200 protected int rows; 201 201 public int Rows { 202 202 get { return rows; } … … 207 207 set { throw new NotSupportedException(); } 208 208 } 209 210 209 public bool SortableView { 211 210 get { return false; } … … 215 214 get { return true; } 216 215 } 217 218 216 IEnumerable<string> IStringConvertibleMatrix.ColumnNames { 219 217 get { return this.VariableNames; } … … 224 222 set { throw new NotSupportedException(); } 225 223 } 226 227 224 public string GetValue(int rowIndex, int columnIndex) { 228 225 return variableValues[variableNames[columnIndex]][rowIndex].ToString(); 229 226 } 230 public boolSetValue(string value, int rowIndex, int columnIndex) {227 bool IStringConvertibleMatrix.SetValue(string value, int rowIndex, int columnIndex) { 231 228 throw new NotSupportedException(); 232 229 } 233 public boolValidate(string value, out string errorMessage) {230 bool IStringConvertibleMatrix.Validate(string value, out string errorMessage) { 234 231 throw new NotSupportedException(); 235 232 } 236 233 237 public event EventHandler ColumnsChanged { add { } remove { } }238 public event EventHandler RowsChanged { add { } remove { } }239 public event EventHandler ColumnNamesChanged { add { } remove { } }240 public event EventHandler RowNamesChanged { add { } remove { } }241 public event EventHandler SortableViewChanged { add { } remove { } }242 public event EventHandler<EventArgs<int, int>> ItemChanged { add { } remove { } }243 public event EventHandler Reset { add { } remove { } }234 public virtual event EventHandler ColumnsChanged { add { } remove { } } 235 public virtual event EventHandler RowsChanged { add { } remove { } } 236 public virtual event EventHandler ColumnNamesChanged { add { } remove { } } 237 public virtual event EventHandler RowNamesChanged { add { } remove { } } 238 public virtual event EventHandler SortableViewChanged { add { } remove { } } 239 public virtual event EventHandler<EventArgs<int, int>> ItemChanged { add { } remove { } } 240 public virtual event EventHandler Reset { add { } remove { } } 244 241 #endregion 245 242 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/DatasetExtensions.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/DoubleLimit.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj
r13081 r13083 164 164 </Compile> 165 165 <Compile Include="Implementation\Classification\ClassificationEnsembleSolution.cs" /> 166 <Compile Include="Implementation\Classification\ClassificationPerformanceMeasures.cs" /> 166 167 <Compile Include="Implementation\Classification\ClassificationProblemData.cs" /> 167 168 <Compile Include="Implementation\Classification\ClassificationProblem.cs" /> … … 189 190 <Compile Include="Implementation\TimeSeriesPrognosis\TimeSeriesPrognosisSolution.cs" /> 190 191 <Compile Include="Implementation\TimeSeriesPrognosis\TimeSeriesPrognosisSolutionBase.cs" /> 192 <Compile Include="Implementation\Transformations\CopyColumnTransformation.cs" /> 193 <Compile Include="Implementation\Transformations\ExponentialTransformation.cs" /> 194 <Compile Include="Implementation\Transformations\LinearTransformation.cs" /> 195 <Compile Include="Implementation\Transformations\LogarithmicTransformation.cs" /> 196 <Compile Include="Implementation\Transformations\PowerTransformation.cs" /> 197 <Compile Include="Implementation\Transformations\ReciprocalTransformation.cs" /> 198 <Compile Include="Implementation\Transformations\ShiftStandardDistributionTransformation.cs" /> 199 <Compile Include="Implementation\Transformations\ShiftToRangeTransformation.cs" /> 200 <Compile Include="Implementation\Transformations\Transformation.cs" /> 191 201 <Compile Include="Interfaces\Classification\IClassificationEnsembleModel.cs"> 192 202 <SubType>Code</SubType> … … 197 207 <Compile Include="Interfaces\Classification\IDiscriminantFunctionThresholdCalculator.cs" /> 198 208 <Compile Include="Interfaces\IDataAnalysisSolutionExporter.cs" /> 209 <Compile Include="Interfaces\IDataset.cs" /> 199 210 <Compile Include="Interfaces\IDependencyCalculator.cs" /> 211 <Compile Include="Interfaces\ITransformation.cs" /> 212 <Compile Include="Interfaces\ITransformationMapper.cs" /> 200 213 <Compile Include="Interfaces\Regression\IRegressionEnsembleModel.cs"> 201 214 <SubType>Code</SubType> … … 208 221 <Compile Include="Interfaces\TimeSeriesPrognosis\ITimeSeriesPrognosisProblemData.cs" /> 209 222 <Compile Include="Interfaces\TimeSeriesPrognosis\ITimeSeriesPrognosisSolution.cs" /> 223 <Compile Include="ModifiableDataset.cs" /> 210 224 <Compile Include="OnlineCalculators\AutoCorrelationCalculator.cs" /> 225 <Compile Include="OnlineCalculators\ClassificationPerformanceMeasuresCalculator.cs" /> 211 226 <Compile Include="OnlineCalculators\ConfusionMatrixCalculator.cs" /> 212 227 <Compile Include="OnlineCalculators\DependencyCalculator\HoeffdingsDependenceCalculator.cs" /> … … 254 269 <Compile Include="OnlineCalculators\OnlineMeanSquaredErrorCalculator.cs" /> 255 270 <Compile Include="OnlineCalculators\OnlineNormalizedMeanSquaredErrorCalculator.cs" /> 271 <Compile Include="OnlineCalculators\OnlinePearsonsRCalculator.cs" /> 256 272 <Compile Include="OnlineCalculators\OnlinePearsonsRSquaredCalculator.cs" /> 257 273 <Compile Include="Implementation\Regression\RegressionSolution.cs" /> -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 67 67 } 68 68 69 public IEnumerable<IEnumerable<double>> GetEstimatedClassValueVectors( Dataset dataset, IEnumerable<int> rows) {69 public IEnumerable<IEnumerable<double>> GetEstimatedClassValueVectors(IDataset dataset, IEnumerable<int> rows) { 70 70 var estimatedValuesEnumerators = (from model in models 71 71 select model.GetEstimatedClassValues(dataset, rows).GetEnumerator()) … … 82 82 #region IClassificationModel Members 83 83 84 public IEnumerable<double> GetEstimatedClassValues( Dataset dataset, IEnumerable<int> rows) {84 public IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) { 85 85 foreach (var estimatedValuesVector in GetEstimatedClassValueVectors(dataset, rows)) { 86 86 // return the class which is most often occuring -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 79 79 this.TestPartition.Start = classificationProblemData.TestPartition.Start; 80 80 this.TestPartition.End = classificationProblemData.TestPartition.End; 81 this.PositiveClass = classificationProblemData.PositiveClass; 81 82 } 82 83 -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 35 35 [StorableClass] 36 36 [Item("Classification Ensemble Solution", "A classification solution that contains an ensemble of multiple classification models")] 37 [Creatable( "Data Analysis - Ensembles")]37 [Creatable(CreatableAttribute.Categories.DataAnalysisEnsembles, Priority = 110)] 38 38 public sealed class ClassificationEnsembleSolution : ClassificationSolutionBase, IClassificationEnsembleSolution { 39 39 private readonly Dictionary<int, double> trainingEvaluationCache = new Dictionary<int, double>(); … … 49 49 } 50 50 51 [Storable] 51 52 private readonly ItemCollection<IClassificationSolution> classificationSolutions; 52 53 public IItemCollection<IClassificationSolution> ClassificationSolutions { … … 66 67 [StorableHook(HookType.AfterDeserialization)] 67 68 private void AfterDeserialization() { 68 foreach (var model in Model.Models) { 69 IClassificationProblemData problemData = (IClassificationProblemData)ProblemData.Clone(); 70 problemData.TrainingPartition.Start = trainingPartitions[model].Start; 71 problemData.TrainingPartition.End = trainingPartitions[model].End; 72 problemData.TestPartition.Start = testPartitions[model].Start; 73 problemData.TestPartition.End = testPartitions[model].End; 74 75 classificationSolutions.Add(model.CreateClassificationSolution(problemData)); 69 if (!classificationSolutions.Any()) { 70 foreach (var model in Model.Models) { 71 IClassificationProblemData problemData = (IClassificationProblemData)ProblemData.Clone(); 72 problemData.TrainingPartition.Start = trainingPartitions[model].Start; 73 problemData.TrainingPartition.End = trainingPartitions[model].End; 74 problemData.TestPartition.Start = testPartitions[model].Start; 75 problemData.TestPartition.End = testPartitions[model].End; 76 77 classificationSolutions.Add(model.CreateClassificationSolution(problemData)); 78 } 76 79 } 77 80 RegisterClassificationSolutionsEventHandler(); … … 231 234 } 232 235 233 public IEnumerable<IEnumerable<double>> GetEstimatedClassValueVectors( Dataset dataset, IEnumerable<int> rows) {236 public IEnumerable<IEnumerable<double>> GetEstimatedClassValueVectors(IDataset dataset, IEnumerable<int> rows) { 234 237 if (!Model.Models.Any()) yield break; 235 238 var estimatedValuesEnumerators = (from model in Model.Models -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 [StorableClass] 28 28 [Item("Classification Problem", "A general classification problem.")] 29 [Creatable("Problems")]30 29 public class ClassificationProblem : DataAnalysisProblem<IClassificationProblemData>, IClassificationProblem, IStorableContent { 31 30 public string Filename { get; set; } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 36 36 protected const string ClassNamesParameterName = "ClassNames"; 37 37 protected const string ClassificationPenaltiesParameterName = "ClassificationPenalties"; 38 protected const string PositiveClassParameterName = "PositiveClass"; 38 39 protected const int MaximumNumberOfClasses = 100; 39 40 protected const int InspectedRowsToDetermineTargets = 2000; … … 213 214 get { return (IFixedValueParameter<StringMatrix>)Parameters[ClassNamesParameterName]; } 214 215 } 216 public IConstrainedValueParameter<StringValue> PositiveClassParameter { 217 get { return (IConstrainedValueParameter<StringValue>)Parameters[PositiveClassParameterName]; } 218 } 215 219 public IFixedValueParameter<DoubleMatrix> ClassificationPenaltiesParameter { 216 220 get { return (IFixedValueParameter<DoubleMatrix>)Parameters[ClassificationPenaltiesParameterName]; } … … 262 266 get { return ClassNamesCache; } 263 267 } 268 269 public string PositiveClass { 270 get { return PositiveClassParameter.Value.Value; } 271 set { 272 var matchingValue = PositiveClassParameter.ValidValues.SingleOrDefault(x => x.Value == value); 273 if (matchingValue == null) throw new ArgumentException(string.Format("{0} cannot be set as positive class.", value)); 274 PositiveClassParameter.Value = matchingValue; 275 } 276 } 264 277 #endregion 265 278 … … 270 283 private void AfterDeserialization() { 271 284 RegisterParameterEvents(); 285 // BackwardsCompatibility3.4 286 #region Backwards compatible code, remove with 3.5 287 if (!Parameters.ContainsKey(PositiveClassParameterName)) { 288 var validValues = new ItemSet<StringValue>(ClassNames.Select(s => new StringValue(s).AsReadOnly())); 289 Parameters.Add(new ConstrainedValueParameter<StringValue>(PositiveClassParameterName, 290 "The positive class which is used for quality measure calculation (e.g., specifity, sensitivity,...)", validValues, validValues.First())); 291 } 292 #endregion 293 272 294 } 273 295 … … 290 312 TestPartition.End = classificationProblemData.TestPartition.End; 291 313 314 PositiveClass = classificationProblemData.PositiveClass; 315 292 316 for (int i = 0; i < classificationProblemData.ClassNames.Count(); i++) 293 317 ClassNamesParameter.Value[i, 0] = classificationProblemData.ClassNames.ElementAt(i); … … 300 324 } 301 325 302 public ClassificationProblemData( Dataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable)303 : base(dataset, allowedInputVariables ) {326 public ClassificationProblemData(IDataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable, IEnumerable<ITransformation> transformations = null) 327 : base(dataset, allowedInputVariables, transformations ?? Enumerable.Empty<ITransformation>()) { 304 328 var validTargetVariableValues = CheckVariablesForPossibleTargetVariables(dataset).Select(x => new StringValue(x).AsReadOnly()).ToList(); 305 329 var target = validTargetVariableValues.Where(x => x.Value == targetVariable).DefaultIfEmpty(validTargetVariableValues.First()).First(); … … 307 331 Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>(validTargetVariableValues), target)); 308 332 Parameters.Add(new FixedValueParameter<StringMatrix>(ClassNamesParameterName, "")); 333 Parameters.Add(new ConstrainedValueParameter<StringValue>(PositiveClassParameterName, "The positive class which is used for quality measure calculation (e.g., specifity, sensitivity,...)")); 309 334 Parameters.Add(new FixedValueParameter<DoubleMatrix>(ClassificationPenaltiesParameterName, "")); 310 335 … … 313 338 } 314 339 315 public static IEnumerable<string> CheckVariablesForPossibleTargetVariables( Dataset dataset) {340 public static IEnumerable<string> CheckVariablesForPossibleTargetVariables(IDataset dataset) { 316 341 int maxSamples = Math.Min(InspectedRowsToDetermineTargets, dataset.Rows); 317 342 var validTargetVariables = (from v in dataset.DoubleVariables … … 339 364 ClassNamesParameter.Value.ColumnNames = new List<string>() { "ClassNames" }; 340 365 ClassNamesParameter.Value.RowNames = ClassValues.Select(s => "ClassValue: " + s); 366 367 PositiveClassParameter.ValidValues.Clear(); 368 foreach (var className in ClassNames) { 369 PositiveClassParameter.ValidValues.Add(new StringValue(className).AsReadOnly()); 370 } 341 371 342 372 ((IStringConvertibleMatrix)ClassificationPenaltiesParameter.Value).Rows = Classes; … … 411 441 } 412 442 private void Parameter_ValueChanged(object sender, EventArgs e) { 443 var oldPositiveClass = PositiveClass; 444 var oldClassNames = classNamesCache; 445 var index = oldClassNames.IndexOf(oldPositiveClass); 446 413 447 classNamesCache = null; 414 448 ClassificationPenaltiesParameter.Value.RowNames = ClassNames.Select(name => "Actual " + name); 415 449 ClassificationPenaltiesParameter.Value.ColumnNames = ClassNames.Select(name => "Estimated " + name); 450 451 PositiveClassParameter.ValidValues.Clear(); 452 foreach (var className in ClassNames) { 453 PositiveClassParameter.ValidValues.Add(new StringValue(className).AsReadOnly()); 454 } 455 PositiveClassParameter.Value = PositiveClassParameter.ValidValues.ElementAt(index); 456 416 457 OnChanged(); 417 458 } … … 435 476 if (!newClassValues.SequenceEqual(ClassValues)) { 436 477 errorMessage = errorMessage + string.Format("The class values differ in the provided classification problem data."); 437 return false; 478 returnValue = false; 479 } 480 481 var newPositivieClassName = classificationProblemData.PositiveClass; 482 if (newPositivieClassName != PositiveClass) { 483 errorMessage = errorMessage + string.Format("The positive class differs in the provided classification problem data."); 484 returnValue = false; 438 485 } 439 486 … … 452 499 ClassNamesParameter.Value[i, 0] = classificationProblemData.ClassNames.ElementAt(i); 453 500 501 PositiveClass = classificationProblemData.PositiveClass; 502 454 503 for (int i = 0; i < Classes; i++) { 455 504 for (int j = 0; j < Classes; j++) { -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 30 30 /// </summary> 31 31 [StorableClass] 32 public abstractclass ClassificationSolution : ClassificationSolutionBase {32 public class ClassificationSolution : ClassificationSolutionBase { 33 33 protected readonly Dictionary<int, double> evaluationCache; 34 34 … … 46 46 evaluationCache = new Dictionary<int, double>(problemData.Dataset.Rows); 47 47 CalculateClassificationResults(); 48 } 49 50 public override IDeepCloneable Clone(Cloner cloner) { 51 return new ClassificationSolution(this, cloner); 48 52 } 49 53 -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 34 34 private const string TrainingNormalizedGiniCoefficientResultName = "Normalized Gini Coefficient (training)"; 35 35 private const string TestNormalizedGiniCoefficientResultName = "Normalized Gini Coefficient (test)"; 36 private const string ClassificationPerformanceMeasuresResultName = "Classification Performance Measures"; 36 37 37 38 public new IClassificationModel Model { … … 62 63 protected set { ((DoubleValue)this[TestNormalizedGiniCoefficientResultName].Value).Value = value; } 63 64 } 65 public ClassificationPerformanceMeasuresResultCollection ClassificationPerformanceMeasures { 66 get { return ((ClassificationPerformanceMeasuresResultCollection)this[ClassificationPerformanceMeasuresResultName].Value); } 67 protected set { (this[ClassificationPerformanceMeasuresResultName].Value) = value; } 68 } 64 69 #endregion 65 70 … … 75 80 Add(new Result(TrainingNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the model on the training partition.", new DoubleValue())); 76 81 Add(new Result(TestNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the model on the test partition.", new DoubleValue())); 82 Add(new Result(ClassificationPerformanceMeasuresResultName, @"Classification performance measures.\n 83 In a multiclass classification all misclassifications of the negative class will be treated as true negatives except on positive class estimations.", 84 new ClassificationPerformanceMeasuresResultCollection())); 77 85 } 78 86 … … 83 91 if (!this.ContainsKey(TestNormalizedGiniCoefficientResultName)) 84 92 Add(new Result(TestNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the model on the test partition.", new DoubleValue())); 93 if (!this.ContainsKey(ClassificationPerformanceMeasuresResultName)) { 94 Add(new Result(ClassificationPerformanceMeasuresResultName, @"Classification performance measures.\n 95 In a multiclass classification all misclassifications of the negative class will be treated as true negatives except on positive class estimations.", 96 new ClassificationPerformanceMeasuresResultCollection())); 97 CalculateClassificationResults(); 98 } 85 99 } 86 100 … … 88 102 double[] estimatedTrainingClassValues = EstimatedTrainingClassValues.ToArray(); // cache values 89 103 double[] originalTrainingClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).ToArray(); 104 90 105 double[] estimatedTestClassValues = EstimatedTestClassValues.ToArray(); // cache values 91 106 double[] originalTestClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices).ToArray(); 107 108 var positiveClassName = ProblemData.PositiveClass; 109 double positiveClassValue = ProblemData.GetClassValue(positiveClassName); 110 ClassificationPerformanceMeasuresCalculator trainingPerformanceCalculator = new ClassificationPerformanceMeasuresCalculator(positiveClassName, positiveClassValue); 111 ClassificationPerformanceMeasuresCalculator testPerformanceCalculator = new ClassificationPerformanceMeasuresCalculator(positiveClassName, positiveClassValue); 92 112 93 113 OnlineCalculatorError errorState; … … 107 127 TrainingNormalizedGiniCoefficient = trainingNormalizedGini; 108 128 TestNormalizedGiniCoefficient = testNormalizedGini; 129 130 trainingPerformanceCalculator.Calculate(originalTrainingClassValues, estimatedTrainingClassValues); 131 if (trainingPerformanceCalculator.ErrorState == OnlineCalculatorError.None) 132 ClassificationPerformanceMeasures.SetTrainingResults(trainingPerformanceCalculator); 133 134 testPerformanceCalculator.Calculate(originalTestClassValues, estimatedTestClassValues); 135 if (testPerformanceCalculator.ErrorState == OnlineCalculatorError.None) 136 ClassificationPerformanceMeasures.SetTestResults(testPerformanceCalculator); 109 137 } 110 138 -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 111 111 112 112 113 public IEnumerable<double> GetEstimatedValues( Dataset dataset, IEnumerable<int> rows) {113 public IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows) { 114 114 return model.GetEstimatedValues(dataset, rows); 115 115 } 116 116 117 public IEnumerable<double> GetEstimatedClassValues( Dataset dataset, IEnumerable<int> rows) {117 public IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) { 118 118 if (!Thresholds.Any() && !ClassValues.Any()) throw new ArgumentException("No thresholds and class values were set for the current classification model."); 119 119 foreach (var x in GetEstimatedValues(dataset, rows)) { -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/Classification/DiscriminantFunctionClassificationSolutionBase.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 105 105 TestMeanSquaredError = errorState == OnlineCalculatorError.None ? testMSE : double.NaN; 106 106 107 double trainingR 2 = OnlinePearsonsRSquaredCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState);108 TrainingRSquared = errorState == OnlineCalculatorError.None ? trainingR 2: double.NaN;109 double testR 2 = OnlinePearsonsRSquaredCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState);110 TestRSquared = errorState == OnlineCalculatorError.None ? testR 2: double.NaN;107 double trainingR = OnlinePearsonsRCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); 108 TrainingRSquared = errorState == OnlineCalculatorError.None ? trainingR*trainingR : double.NaN; 109 double testR = OnlinePearsonsRCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 110 TestRSquared = errorState == OnlineCalculatorError.None ? testR*testR : double.NaN; 111 111 112 112 double trainingNormalizedGini = NormalizedGiniCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ThresholdCalculators/AccuracyMaximizationThresholdCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/Classification/ThresholdCalculators/NormalDistributionCutPointsThresholdCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/Classification/ThresholdCalculators/ThresholdCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/Clustering/ClusteringProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 [StorableClass] 28 28 [Item("Clustering Problem", "A general clustering problem.")] 29 [Creatable("Problems")]30 29 public class ClusteringProblem : DataAnalysisProblem<IClusteringProblemData>, IClusteringProblem { 31 30 [StorableConstructor] -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Clustering/ClusteringProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 21 21 22 22 using System.Collections.Generic; 23 using System.Linq; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; … … 86 87 } 87 88 88 public ClusteringProblemData(Dataset dataset, IEnumerable<string> allowedInputVariables )89 : base(dataset, allowedInputVariables ) {89 public ClusteringProblemData(Dataset dataset, IEnumerable<string> allowedInputVariables, IEnumerable<ITransformation> transformations = null) 90 : base(dataset, allowedInputVariables, transformations ?? Enumerable.Empty<ITransformation>()) { 90 91 } 91 92 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Clustering/ClusteringSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/DataAnalysisProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/DataAnalysisProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 38 38 protected const string TrainingPartitionParameterName = "TrainingPartition"; 39 39 protected const string TestPartitionParameterName = "TestPartition"; 40 protected const string TransformationsParameterName = "Transformations"; 40 41 41 42 #region parameter properites … … 51 52 public IFixedValueParameter<IntRange> TestPartitionParameter { 52 53 get { return (IFixedValueParameter<IntRange>)Parameters[TestPartitionParameterName]; } 54 } 55 public IFixedValueParameter<ReadOnlyItemList<ITransformation>> TransformationsParameter { 56 get { return (IFixedValueParameter<ReadOnlyItemList<ITransformation>>)Parameters[TransformationsParameterName]; } 53 57 } 54 58 #endregion … … 59 63 get { return isEmpty; } 60 64 } 61 public Dataset Dataset {65 public IDataset Dataset { 62 66 get { return DatasetParameter.Value; } 63 67 } … … 89 93 } 90 94 95 public IEnumerable<ITransformation> Transformations { 96 get { return TransformationsParameter.Value; } 97 } 98 91 99 public virtual bool IsTrainingSample(int index) { 92 100 return index >= 0 && index < Dataset.Rows && … … 111 119 [StorableHook(HookType.AfterDeserialization)] 112 120 private void AfterDeserialization() { 121 if (!Parameters.ContainsKey(TransformationsParameterName)) { 122 Parameters.Add(new FixedValueParameter<ReadOnlyItemList<ITransformation>>(TransformationsParameterName, "", new ItemList<ITransformation>().AsReadOnly())); 123 TransformationsParameter.Hidden = true; 124 } 113 125 RegisterEventHandlers(); 114 126 } 115 127 116 protected DataAnalysisProblemData( Dataset dataset, IEnumerable<string> allowedInputVariables) {128 protected DataAnalysisProblemData(IDataset dataset, IEnumerable<string> allowedInputVariables, IEnumerable<ITransformation> transformations = null) { 117 129 if (dataset == null) throw new ArgumentNullException("The dataset must not be null."); 118 130 if (allowedInputVariables == null) throw new ArgumentNullException("The allowedInputVariables must not be null."); … … 130 142 int testPartitionEnd = dataset.Rows; 131 143 132 Parameters.Add(new FixedValueParameter<Dataset>(DatasetParameterName, "", dataset)); 144 var transformationsList = new ItemList<ITransformation>(transformations ?? Enumerable.Empty<ITransformation>()); 145 146 Parameters.Add(new FixedValueParameter<Dataset>(DatasetParameterName, "", (Dataset)dataset)); 133 147 Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemList<StringValue>>(InputVariablesParameterName, "", inputVariables.AsReadOnly())); 134 148 Parameters.Add(new FixedValueParameter<IntRange>(TrainingPartitionParameterName, "", new IntRange(trainingPartitionStart, trainingPartitionEnd))); 135 149 Parameters.Add(new FixedValueParameter<IntRange>(TestPartitionParameterName, "", new IntRange(testPartitionStart, testPartitionEnd))); 150 Parameters.Add(new FixedValueParameter<ReadOnlyItemList<ITransformation>>(TransformationsParameterName, "", transformationsList.AsReadOnly())); 151 152 TransformationsParameter.Hidden = true; 136 153 137 154 ((ValueParameter<Dataset>)DatasetParameter).ReactOnValueToStringChangedAndValueItemImageChanged = false; … … 144 161 TrainingPartition.ValueChanged += new EventHandler(Parameter_ValueChanged); 145 162 TestPartition.ValueChanged += new EventHandler(Parameter_ValueChanged); 163 TransformationsParameter.ValueChanged += new EventHandler(Parameter_ValueChanged); 146 164 } 147 165 -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 21 21 22 22 using System; 23 using System.Collections.Generic; 23 24 using System.Drawing; 24 25 using HeuristicLab.Common; … … 106 107 } 107 108 109 //mkommend avoid unnecessary event registration for result name changes 110 protected override void RegisterItemEvents(IEnumerable<IResult> items) { } 111 protected override void DeregisterItemEvents(IEnumerable<IResult> items) { } 112 108 113 #region INamedItem Members 109 114 [Storable] -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ConstantRegressionModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using System.Linq; 24 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 27 using HeuristicLab.Data; 26 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 27 29 … … 29 31 [StorableClass] 30 32 [Item("Constant Regression Model", "A model that always returns the same constant value regardless of the presented input data.")] 31 public class ConstantRegressionModel : NamedItem, IRegressionModel {33 public class ConstantRegressionModel : NamedItem, IRegressionModel, IStringConvertibleValue { 32 34 [Storable] 33 pr otecteddouble constant;35 private double constant; 34 36 public double Constant { 35 37 get { return constant; } 38 // setter not implemented because manipulation of the constant is not allowed 36 39 } 37 40 … … 49 52 this.description = ItemDescription; 50 53 this.constant = constant; 54 this.ReadOnly = true; // changing a constant regression model is not supported 51 55 } 52 56 53 public IEnumerable<double> GetEstimatedValues( Dataset dataset, IEnumerable<int> rows) {57 public IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows) { 54 58 return rows.Select(row => Constant); 55 59 } … … 58 62 return new ConstantRegressionSolution(this, new RegressionProblemData(problemData)); 59 63 } 64 65 public override string ToString() { 66 return string.Format("Constant: {0}", GetValue()); 67 } 68 69 #region IStringConvertibleValue 70 public bool ReadOnly { get; private set; } 71 public bool Validate(string value, out string errorMessage) { 72 throw new NotSupportedException(); // changing a constant regression model is not supported 73 } 74 75 public string GetValue() { 76 return string.Format("{0:E4}", constant); 77 } 78 79 public bool SetValue(string value) { 80 throw new NotSupportedException(); // changing a constant regression model is not supported 81 } 82 83 public event EventHandler ValueChanged; 84 #endregion 60 85 } 61 86 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ConstantRegressionSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/Regression/RegressionEnsembleModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 80 80 } 81 81 82 public IEnumerable<IEnumerable<double>> GetEstimatedValueVectors( Dataset dataset, IEnumerable<int> rows) {82 public IEnumerable<IEnumerable<double>> GetEstimatedValueVectors(IDataset dataset, IEnumerable<int> rows) { 83 83 var estimatedValuesEnumerators = (from model in models 84 84 select model.GetEstimatedValues(dataset, rows).GetEnumerator()) … … 95 95 #region IRegressionModel Members 96 96 97 public IEnumerable<double> GetEstimatedValues( Dataset dataset, IEnumerable<int> rows) {97 public IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows) { 98 98 foreach (var estimatedValuesVector in GetEstimatedValueVectors(dataset, rows)) { 99 99 yield return estimatedValuesVector.Average(); -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/Regression/RegressionEnsembleSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 35 35 [StorableClass] 36 36 [Item("Regression Ensemble Solution", "A regression solution that contains an ensemble of multiple regression models")] 37 [Creatable( "Data Analysis - Ensembles")]37 [Creatable(CreatableAttribute.Categories.DataAnalysisEnsembles, Priority = 100)] 38 38 public sealed class RegressionEnsembleSolution : RegressionSolutionBase, IRegressionEnsembleSolution { 39 39 private readonly Dictionary<int, double> trainingEvaluationCache = new Dictionary<int, double>(); … … 50 50 } 51 51 52 [Storable] 52 53 private readonly ItemCollection<IRegressionSolution> regressionSolutions; 53 54 public IItemCollection<IRegressionSolution> RegressionSolutions { … … 67 68 [StorableHook(HookType.AfterDeserialization)] 68 69 private void AfterDeserialization() { 69 foreach (var model in Model.Models) { 70 IRegressionProblemData problemData = (IRegressionProblemData)ProblemData.Clone(); 71 problemData.TrainingPartition.Start = trainingPartitions[model].Start; 72 problemData.TrainingPartition.End = trainingPartitions[model].End; 73 problemData.TestPartition.Start = testPartitions[model].Start; 74 problemData.TestPartition.End = testPartitions[model].End; 75 76 regressionSolutions.Add(model.CreateRegressionSolution(problemData)); 70 if (!regressionSolutions.Any()) { 71 foreach (var model in Model.Models) { 72 IRegressionProblemData problemData = (IRegressionProblemData)ProblemData.Clone(); 73 problemData.TrainingPartition.Start = trainingPartitions[model].Start; 74 problemData.TrainingPartition.End = trainingPartitions[model].End; 75 problemData.TestPartition.Start = testPartitions[model].Start; 76 problemData.TestPartition.End = testPartitions[model].End; 77 78 regressionSolutions.Add(model.CreateRegressionSolution(problemData)); 79 } 77 80 } 78 81 RegisterRegressionSolutionsEventHandler(); … … 232 235 } 233 236 234 public IEnumerable<IEnumerable<double>> GetEstimatedValueVectors( Dataset dataset, IEnumerable<int> rows) {237 public IEnumerable<IEnumerable<double>> GetEstimatedValueVectors(IDataset dataset, IEnumerable<int> rows) { 235 238 if (!Model.Models.Any()) yield break; 236 239 var estimatedValuesEnumerators = (from model in Model.Models -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 [StorableClass] 28 28 [Item("Regression Problem", "A general regression problem.")] 29 [Creatable("Problems")]30 29 public class RegressionProblem : DataAnalysisProblem<IRegressionProblemData>, IRegressionProblem, IStorableContent { 31 30 public string Filename { get; set; } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 137 137 } 138 138 139 public RegressionProblemData( Dataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable)140 : base(dataset, allowedInputVariables ) {139 public RegressionProblemData(IDataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable, IEnumerable<ITransformation> transformations = null) 140 : base(dataset, allowedInputVariables, transformations ?? Enumerable.Empty<ITransformation>()) { 141 141 var variables = InputVariables.Select(x => x.AsReadOnly()).ToList(); 142 142 Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>(variables), variables.Where(x => x.Value == targetVariable).First())); -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 30 30 /// </summary> 31 31 [StorableClass] 32 public abstractclass RegressionSolution : RegressionSolutionBase {32 public class RegressionSolution : RegressionSolutionBase { 33 33 protected readonly Dictionary<int, double> evaluationCache; 34 34 … … 42 42 evaluationCache = new Dictionary<int, double>(original.evaluationCache); 43 43 } 44 p rotectedRegressionSolution(IRegressionModel model, IRegressionProblemData problemData)44 public RegressionSolution(IRegressionModel model, IRegressionProblemData problemData) 45 45 : base(model, problemData) { 46 46 evaluationCache = new Dictionary<int, double>(problemData.Dataset.Rows); … … 48 48 } 49 49 50 public override IDeepCloneable Clone(Cloner cloner) { 51 return new RegressionSolution(this, cloner); 52 } 50 53 51 54 public override IEnumerable<double> EstimatedValues { … … 60 63 61 64 public override IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows) { 62 var rowsToEvaluate = rows. Except(evaluationCache.Keys);65 var rowsToEvaluate = rows.Where(row => !evaluationCache.ContainsKey(row)); 63 66 var rowsEnumerator = rowsToEvaluate.GetEnumerator(); 64 67 var valuesEnumerator = Model.GetEstimatedValues(ProblemData.Dataset, rowsToEvaluate).GetEnumerator(); -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionSolutionBase.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using HeuristicLab.Common; … … 39 40 protected const string TrainingNormalizedMeanSquaredErrorResultName = "Normalized mean squared error (training)"; 40 41 protected const string TestNormalizedMeanSquaredErrorResultName = "Normalized mean squared error (test)"; 41 protected const string TrainingMeanErrorResultName = "Mean error (training)"; 42 protected const string TestMeanErrorResultName = "Mean error (test)"; 42 protected const string TrainingRootMeanSquaredErrorResultName = "Root mean squared error (training)"; 43 protected const string TestRootMeanSquaredErrorResultName = "Root mean squared error (test)"; 44 45 // BackwardsCompatibility3.3 46 #region Backwards compatible code, remove with 3.5 47 private const string TrainingMeanErrorResultName = "Mean error (training)"; 48 private const string TestMeanErrorResultName = "Mean error (test)"; 49 #endregion 50 43 51 44 52 protected const string TrainingMeanSquaredErrorResultDescription = "Mean of squared errors of the model on the training partition"; … … 52 60 protected const string TrainingNormalizedMeanSquaredErrorResultDescription = "Normalized mean of squared errors of the model on the training partition"; 53 61 protected const string TestNormalizedMeanSquaredErrorResultDescription = "Normalized mean of squared errors of the model on the test partition"; 54 protected const string Training MeanErrorResultDescription = "Mean oferrors of the model on the training partition";55 protected const string Test MeanErrorResultDescription = "Mean oferrors of the model on the test partition";62 protected const string TrainingRootMeanSquaredErrorResultDescription = "Root mean of squared errors of the model on the training partition"; 63 protected const string TestRootMeanSquaredErrorResultDescription = "Root mean of squared errors of the model on the test partition"; 56 64 57 65 public new IRegressionModel Model { … … 111 119 private set { ((DoubleValue)this[TestNormalizedMeanSquaredErrorResultName].Value).Value = value; } 112 120 } 113 public double TrainingMeanError { 114 get { return ((DoubleValue)this[TrainingMeanErrorResultName].Value).Value; } 115 private set { ((DoubleValue)this[TrainingMeanErrorResultName].Value).Value = value; } 116 } 117 public double TestMeanError { 118 get { return ((DoubleValue)this[TestMeanErrorResultName].Value).Value; } 119 private set { ((DoubleValue)this[TestMeanErrorResultName].Value).Value = value; } 120 } 121 public double TrainingRootMeanSquaredError { 122 get { return ((DoubleValue)this[TrainingRootMeanSquaredErrorResultName].Value).Value; } 123 private set { ((DoubleValue)this[TrainingRootMeanSquaredErrorResultName].Value).Value = value; } 124 } 125 public double TestRootMeanSquaredError { 126 get { return ((DoubleValue)this[TestRootMeanSquaredErrorResultName].Value).Value; } 127 private set { ((DoubleValue)this[TestRootMeanSquaredErrorResultName].Value).Value = value; } 128 } 129 130 // BackwardsCompatibility3.3 131 #region Backwards compatible code, remove with 3.5 132 private double TrainingMeanError { 133 get { 134 if (!ContainsKey(TrainingMeanErrorResultName)) return double.NaN; 135 return ((DoubleValue)this[TrainingMeanErrorResultName].Value).Value; 136 } 137 set { 138 if (ContainsKey(TrainingMeanErrorResultName)) 139 ((DoubleValue)this[TrainingMeanErrorResultName].Value).Value = value; 140 } 141 } 142 private double TestMeanError { 143 get { 144 if (!ContainsKey(TestMeanErrorResultName)) return double.NaN; 145 return ((DoubleValue)this[TestMeanErrorResultName].Value).Value; 146 } 147 set { 148 if (ContainsKey(TestMeanErrorResultName)) 149 ((DoubleValue)this[TestMeanErrorResultName].Value).Value = value; 150 } 151 } 152 #endregion 121 153 #endregion 122 154 … … 138 170 Add(new Result(TrainingNormalizedMeanSquaredErrorResultName, TrainingNormalizedMeanSquaredErrorResultDescription, new DoubleValue())); 139 171 Add(new Result(TestNormalizedMeanSquaredErrorResultName, TestNormalizedMeanSquaredErrorResultDescription, new DoubleValue())); 140 Add(new Result(Training MeanErrorResultName, TrainingMeanErrorResultDescription, new DoubleValue()));141 Add(new Result(Test MeanErrorResultName, TestMeanErrorResultDescription, new DoubleValue()));172 Add(new Result(TrainingRootMeanSquaredErrorResultName, TrainingRootMeanSquaredErrorResultDescription, new DoubleValue())); 173 Add(new Result(TestRootMeanSquaredErrorResultName, TestRootMeanSquaredErrorResultDescription, new DoubleValue())); 142 174 } 143 175 … … 145 177 private void AfterDeserialization() { 146 178 // BackwardsCompatibility3.4 147 148 179 #region Backwards compatible code, remove with 3.5 149 150 180 if (!ContainsKey(TrainingMeanAbsoluteErrorResultName)) { 151 181 OnlineCalculatorError errorState; … … 162 192 } 163 193 164 if (!ContainsKey(TrainingMeanErrorResultName)) { 165 OnlineCalculatorError errorState; 166 Add(new Result(TrainingMeanErrorResultName, "Mean of errors of the model on the training partition", new DoubleValue())); 167 double trainingME = OnlineMeanErrorCalculator.Calculate(EstimatedTrainingValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices), out errorState); 168 TrainingMeanError = errorState == OnlineCalculatorError.None ? trainingME : double.NaN; 169 } 170 if (!ContainsKey(TestMeanErrorResultName)) { 171 OnlineCalculatorError errorState; 172 Add(new Result(TestMeanErrorResultName, "Mean of errors of the model on the test partition", new DoubleValue())); 173 double testME = OnlineMeanErrorCalculator.Calculate(EstimatedTestValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices), out errorState); 174 TestMeanError = errorState == OnlineCalculatorError.None ? testME : double.NaN; 194 if (!ContainsKey(TrainingRootMeanSquaredErrorResultName)) { 195 OnlineCalculatorError errorState; 196 Add(new Result(TrainingRootMeanSquaredErrorResultName, TrainingRootMeanSquaredErrorResultDescription, new DoubleValue())); 197 double trainingMSE = OnlineMeanSquaredErrorCalculator.Calculate(EstimatedTrainingValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices), out errorState); 198 TrainingRootMeanSquaredError = errorState == OnlineCalculatorError.None ? Math.Sqrt(trainingMSE) : double.NaN; 199 } 200 201 if (!ContainsKey(TestRootMeanSquaredErrorResultName)) { 202 OnlineCalculatorError errorState; 203 Add(new Result(TestRootMeanSquaredErrorResultName, TestRootMeanSquaredErrorResultDescription, new DoubleValue())); 204 double testMSE = OnlineMeanSquaredErrorCalculator.Calculate(EstimatedTestValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices), out errorState); 205 TestRootMeanSquaredError = errorState == OnlineCalculatorError.None ? Math.Sqrt(testMSE) : double.NaN; 175 206 } 176 207 #endregion … … 198 229 TestMeanAbsoluteError = errorState == OnlineCalculatorError.None ? testMAE : double.NaN; 199 230 200 double trainingR 2 = OnlinePearsonsRSquaredCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState);201 TrainingRSquared = errorState == OnlineCalculatorError.None ? trainingR 2: double.NaN;202 double testR 2 = OnlinePearsonsRSquaredCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState);203 TestRSquared = errorState == OnlineCalculatorError.None ? testR 2: double.NaN;231 double trainingR = OnlinePearsonsRCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); 232 TrainingRSquared = errorState == OnlineCalculatorError.None ? trainingR*trainingR : double.NaN; 233 double testR = OnlinePearsonsRCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 234 TestRSquared = errorState == OnlineCalculatorError.None ? testR*testR : double.NaN; 204 235 205 236 double trainingRelError = OnlineMeanAbsolutePercentageErrorCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); … … 213 244 TestNormalizedMeanSquaredError = errorState == OnlineCalculatorError.None ? testNMSE : double.NaN; 214 245 215 double trainingME = OnlineMeanErrorCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); 216 TrainingMeanError = errorState == OnlineCalculatorError.None ? trainingME : double.NaN; 217 double testME = OnlineMeanErrorCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 218 TestMeanError = errorState == OnlineCalculatorError.None ? testME : double.NaN; 246 TrainingRootMeanSquaredError = Math.Sqrt(TrainingMeanSquaredError); 247 TestRootMeanSquaredError = Math.Sqrt(TestMeanSquaredError); 248 249 // BackwardsCompatibility3.3 250 #region Backwards compatible code, remove with 3.5 251 if (ContainsKey(TrainingMeanErrorResultName)) { 252 double trainingME = OnlineMeanErrorCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); 253 TrainingMeanError = errorState == OnlineCalculatorError.None ? trainingME : double.NaN; 254 } 255 if (ContainsKey(TestMeanErrorResultName)) { 256 double testME = OnlineMeanErrorCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 257 TestMeanError = errorState == OnlineCalculatorError.None ? testME : double.NaN; 258 } 259 #endregion 219 260 } 220 261 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/Models/ConstantTimeSeriesPrognosisModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 39 39 public ConstantTimeSeriesPrognosisModel(double constant) : base(constant) { } 40 40 41 public IEnumerable<IEnumerable<double>> GetPrognosedValues( Dataset dataset, IEnumerable<int> rows, IEnumerable<int> horizons) {41 public IEnumerable<IEnumerable<double>> GetPrognosedValues(IDataset dataset, IEnumerable<int> rows, IEnumerable<int> horizons) { 42 42 return horizons.Select(horizon => Enumerable.Repeat(Constant, horizon)); 43 43 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/Models/TimeSeriesPrognosisAutoRegressiveModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 58 58 } 59 59 60 public IEnumerable<IEnumerable<double>> GetPrognosedValues( Dataset dataset, IEnumerable<int> rows, IEnumerable<int> horizons) {60 public IEnumerable<IEnumerable<double>> GetPrognosedValues(IDataset dataset, IEnumerable<int> rows, IEnumerable<int> horizons) { 61 61 var rowsEnumerator = rows.GetEnumerator(); 62 62 var horizonsEnumerator = horizons.GetEnumerator(); … … 91 91 } 92 92 93 public IEnumerable<double> GetEstimatedValues( Dataset dataset, IEnumerable<int> rows) {93 public IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows) { 94 94 var targetVariables = dataset.GetReadOnlyDoubleValues(TargetVariable); 95 95 foreach (int row in rows) { -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 [StorableClass] 28 28 [Item("Time-series Prognosis Problem", "A general time-series prognosis problem.")] 29 [Creatable("Problems")]30 29 public class TimeSeriesPrognosisProblem : DataAnalysisProblem<ITimeSeriesPrognosisProblemData>, ITimeSeriesPrognosisProblem { 31 30 [StorableConstructor] -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 1582 1582 TrainingPartition.Start = 50; 1583 1583 } 1584 public TimeSeriesPrognosisProblemData( Dataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable)1585 : base(dataset, allowedInputVariables, targetVariable ) {1584 public TimeSeriesPrognosisProblemData(IDataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable, IEnumerable<ITransformation> transformations = null) 1585 : base(dataset, allowedInputVariables, targetVariable, transformations ?? Enumerable.Empty<ITransformation>()) { 1586 1586 Parameters.Add(new FixedValueParameter<IntValue>(TrainingHorizonParameterName, "Specifies the horizon (how far the prognosis reaches in the future) for each training sample.", new IntValue(1))); 1587 1587 Parameters.Add(new FixedValueParameter<IntValue>(TestHorizonParameterName, "Specifies the horizon (how far the prognosis reaches in the future) for each test sample.", new IntValue(1))); … … 1621 1621 } 1622 1622 1623 protected override bool IsProblemDataCompatible(IDataAnalysisProblemData problemData, out string errorMessage) { 1624 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 1625 ITimeSeriesPrognosisProblemData timeseriesProblemData = problemData as ITimeSeriesPrognosisProblemData; 1626 if (timeseriesProblemData == null) 1627 throw new ArgumentException("The problem data is not a time-series problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 1628 1629 var returnValue = base.IsProblemDataCompatible(problemData, out errorMessage); 1630 //check targetVariable 1631 if (problemData.InputVariables.All(var => var.Value != TargetVariable)) { 1632 errorMessage = string.Format("The target variable {0} is not present in the new problem data.", TargetVariable) 1633 + Environment.NewLine + errorMessage; 1634 return false; 1635 } 1636 return returnValue; 1637 } 1638 1623 1639 public override void AdjustProblemDataProperties(IDataAnalysisProblemData problemData) { 1624 1640 TimeSeriesPrognosisProblemData timeSeriesProblemData = problemData as TimeSeriesPrognosisProblemData; … … 1626 1642 throw new ArgumentException("The problem data is not a timeseries problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 1627 1643 1644 var trainingDataStart = TrainingIndices.First(); 1645 1628 1646 base.AdjustProblemDataProperties(problemData); 1647 1648 TestPartition.Start = trainingDataStart; 1629 1649 1630 1650 TrainingHorizon = timeSeriesProblemData.TrainingHorizon; -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisResults.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 369 369 OnlineCalculatorError errorState; 370 370 var problemData = Solution.ProblemData; 371 if (!problemData.TrainingIndices.Any()) return; 371 372 var model = Solution.Model; 372 373 //mean model … … 393 394 double trainingMAE = OnlineMeanAbsoluteErrorCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); 394 395 PrognosisTrainingMeanAbsoluteError = errorState == OnlineCalculatorError.None ? trainingMAE : double.NaN; 395 double trainingR 2 = OnlinePearsonsRSquaredCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState);396 PrognosisTrainingRSquared = errorState == OnlineCalculatorError.None ? trainingR 2: double.NaN;396 double trainingR = OnlinePearsonsRCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); 397 PrognosisTrainingRSquared = errorState == OnlineCalculatorError.None ? trainingR*trainingR : double.NaN; 397 398 double trainingRelError = OnlineMeanAbsolutePercentageErrorCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); 398 399 PrognosisTrainingRelativeError = errorState == OnlineCalculatorError.None ? trainingRelError : double.NaN; … … 415 416 OnlineCalculatorError errorState; 416 417 var problemData = Solution.ProblemData; 418 if (!problemData.TestIndices.Any()) return; 417 419 var model = Solution.Model; 418 //mean model419 double trainingMean = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices).Average();420 var meanModel = new ConstantTimeSeriesPrognosisModel(trainingMean);421 422 //AR1 model423 double alpha, beta;424 IEnumerable<double> trainingStartValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices.Select(r => r - 1).Where(r => r > 0)).ToList();425 OnlineLinearScalingParameterCalculator.Calculate(problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices.Where(x => x > 0)), trainingStartValues, out alpha, out beta, out errorState);426 var AR1model = new TimeSeriesPrognosisAutoRegressiveModel(problemData.TargetVariable, new double[] { beta }, alpha);427 428 420 var testHorizions = problemData.TestIndices.Select(r => Math.Min(testHorizon, problemData.TestPartition.End - r)).ToList(); 429 421 IEnumerable<IEnumerable<double>> testTargetValues = problemData.TestIndices.Zip(testHorizions, Enumerable.Range).Select(r => problemData.Dataset.GetDoubleValues(problemData.TargetVariable, r)).ToList(); 430 422 IEnumerable<IEnumerable<double>> testEstimatedValues = model.GetPrognosedValues(problemData.Dataset, problemData.TestIndices, testHorizions).ToList(); 431 423 IEnumerable<double> testStartValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TestIndices.Select(r => r - 1).Where(r => r > 0)).ToList(); 432 IEnumerable<IEnumerable<double>> testMeanModelPredictions = meanModel.GetPrognosedValues(problemData.Dataset, problemData.TestIndices, testHorizions).ToList();433 IEnumerable<IEnumerable<double>> testAR1ModelPredictions = AR1model.GetPrognosedValues(problemData.Dataset, problemData.TestIndices, testHorizions).ToList();434 424 435 425 IEnumerable<double> originalTestValues = testTargetValues.SelectMany(x => x).ToList(); … … 440 430 double testMAE = OnlineMeanAbsoluteErrorCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 441 431 PrognosisTestMeanAbsoluteError = errorState == OnlineCalculatorError.None ? testMAE : double.NaN; 442 double testR 2 = OnlinePearsonsRSquaredCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState);443 PrognosisTestRSquared = errorState == OnlineCalculatorError.None ? testR 2: double.NaN;432 double testR = OnlinePearsonsRCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 433 PrognosisTestRSquared = errorState == OnlineCalculatorError.None ? testR*testR : double.NaN; 444 434 double testRelError = OnlineMeanAbsolutePercentageErrorCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 445 435 PrognosisTestRelativeError = errorState == OnlineCalculatorError.None ? testRelError : double.NaN; … … 453 443 PrognosisTestWeightedDirectionalSymmetry = OnlineWeightedDirectionalSymmetryCalculator.Calculate(testStartValues, testTargetValues, testEstimatedValues, out errorState); 454 444 PrognosisTestWeightedDirectionalSymmetry = errorState == OnlineCalculatorError.None ? PrognosisTestWeightedDirectionalSymmetry : 0.0; 455 PrognosisTestTheilsUStatisticAR1 = OnlineTheilsUStatisticCalculator.Calculate(testStartValues, testTargetValues, testAR1ModelPredictions, testEstimatedValues, out errorState); 456 PrognosisTestTheilsUStatisticAR1 = errorState == OnlineCalculatorError.None ? PrognosisTestTheilsUStatisticAR1 : double.PositiveInfinity; 457 PrognosisTestTheilsUStatisticMean = OnlineTheilsUStatisticCalculator.Calculate(testStartValues, testTargetValues, testMeanModelPredictions, testEstimatedValues, out errorState); 458 PrognosisTestTheilsUStatisticMean = errorState == OnlineCalculatorError.None ? PrognosisTestTheilsUStatisticMean : double.PositiveInfinity; 445 446 447 if (problemData.TrainingIndices.Any()) { 448 //mean model 449 double trainingMean = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices).Average(); 450 var meanModel = new ConstantTimeSeriesPrognosisModel(trainingMean); 451 452 //AR1 model 453 double alpha, beta; 454 IEnumerable<double> trainingStartValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices.Select(r => r - 1).Where(r => r > 0)).ToList(); 455 OnlineLinearScalingParameterCalculator.Calculate(problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices.Where(x => x > 0)), trainingStartValues, out alpha, out beta, out errorState); 456 var AR1model = new TimeSeriesPrognosisAutoRegressiveModel(problemData.TargetVariable, new double[] { beta }, alpha); 457 458 IEnumerable<IEnumerable<double>> testMeanModelPredictions = meanModel.GetPrognosedValues(problemData.Dataset, problemData.TestIndices, testHorizions).ToList(); 459 IEnumerable<IEnumerable<double>> testAR1ModelPredictions = AR1model.GetPrognosedValues(problemData.Dataset, problemData.TestIndices, testHorizions).ToList(); 460 461 PrognosisTestTheilsUStatisticAR1 = OnlineTheilsUStatisticCalculator.Calculate(testStartValues, testTargetValues, testAR1ModelPredictions, testEstimatedValues, out errorState); 462 PrognosisTestTheilsUStatisticAR1 = errorState == OnlineCalculatorError.None ? PrognosisTestTheilsUStatisticAR1 : double.PositiveInfinity; 463 PrognosisTestTheilsUStatisticMean = OnlineTheilsUStatisticCalculator.Calculate(testStartValues, testTargetValues, testMeanModelPredictions, testEstimatedValues, out errorState); 464 PrognosisTestTheilsUStatisticMean = errorState == OnlineCalculatorError.None ? PrognosisTestTheilsUStatisticMean : double.PositiveInfinity; 465 } 459 466 } 460 467 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisSolutionBase.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 149 149 protected void CalculateTimeSeriesResults() { 150 150 OnlineCalculatorError errorState; 151 double trainingMean = ProblemData. Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).Average();151 double trainingMean = ProblemData.TrainingIndices.Any() ? ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).Average() : double.NaN; 152 152 var meanModel = new ConstantTimeSeriesPrognosisModel(trainingMean); 153 153 … … 159 159 160 160 #region Calculate training quality measures 161 IEnumerable<double> trainingTargetValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).ToList(); 162 IEnumerable<double> trainingEstimatedValues = EstimatedTrainingValues.ToList(); 163 IEnumerable<double> trainingMeanModelPredictions = meanModel.GetEstimatedValues(ProblemData.Dataset, ProblemData.TrainingIndices).ToList(); 164 IEnumerable<double> trainingAR1ModelPredictions = AR1model.GetEstimatedValues(ProblemData.Dataset, ProblemData.TrainingIndices).ToList(); 165 166 TrainingDirectionalSymmetry = OnlineDirectionalSymmetryCalculator.Calculate(trainingTargetValues.First(), trainingTargetValues, trainingEstimatedValues, out errorState); 167 TrainingDirectionalSymmetry = errorState == OnlineCalculatorError.None ? TrainingDirectionalSymmetry : 0.0; 168 TrainingWeightedDirectionalSymmetry = OnlineWeightedDirectionalSymmetryCalculator.Calculate(trainingTargetValues.First(), trainingTargetValues, trainingEstimatedValues, out errorState); 169 TrainingWeightedDirectionalSymmetry = errorState == OnlineCalculatorError.None ? TrainingWeightedDirectionalSymmetry : 0.0; 170 TrainingTheilsUStatisticAR1 = OnlineTheilsUStatisticCalculator.Calculate(trainingTargetValues.First(), trainingTargetValues, trainingAR1ModelPredictions, trainingEstimatedValues, out errorState); 171 TrainingTheilsUStatisticAR1 = errorState == OnlineCalculatorError.None ? TrainingTheilsUStatisticAR1 : double.PositiveInfinity; 172 TrainingTheilsUStatisticMean = OnlineTheilsUStatisticCalculator.Calculate(trainingTargetValues.First(), trainingTargetValues, trainingMeanModelPredictions, trainingEstimatedValues, out errorState); 173 TrainingTheilsUStatisticMean = errorState == OnlineCalculatorError.None ? TrainingTheilsUStatisticMean : double.PositiveInfinity; 161 if (ProblemData.TrainingIndices.Any()) { 162 IEnumerable<double> trainingTargetValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).ToList(); 163 IEnumerable<double> trainingEstimatedValues = EstimatedTrainingValues.ToList(); 164 IEnumerable<double> trainingMeanModelPredictions = meanModel.GetEstimatedValues(ProblemData.Dataset, ProblemData.TrainingIndices).ToList(); 165 IEnumerable<double> trainingAR1ModelPredictions = AR1model.GetEstimatedValues(ProblemData.Dataset, ProblemData.TrainingIndices).ToList(); 166 167 TrainingDirectionalSymmetry = OnlineDirectionalSymmetryCalculator.Calculate(trainingTargetValues.First(), trainingTargetValues, trainingEstimatedValues, out errorState); 168 TrainingDirectionalSymmetry = errorState == OnlineCalculatorError.None ? TrainingDirectionalSymmetry : 0.0; 169 TrainingWeightedDirectionalSymmetry = OnlineWeightedDirectionalSymmetryCalculator.Calculate(trainingTargetValues.First(), trainingTargetValues, trainingEstimatedValues, out errorState); 170 TrainingWeightedDirectionalSymmetry = errorState == OnlineCalculatorError.None ? TrainingWeightedDirectionalSymmetry : 0.0; 171 TrainingTheilsUStatisticAR1 = OnlineTheilsUStatisticCalculator.Calculate(trainingTargetValues.First(), trainingTargetValues, trainingAR1ModelPredictions, trainingEstimatedValues, out errorState); 172 TrainingTheilsUStatisticAR1 = errorState == OnlineCalculatorError.None ? TrainingTheilsUStatisticAR1 : double.PositiveInfinity; 173 TrainingTheilsUStatisticMean = OnlineTheilsUStatisticCalculator.Calculate(trainingTargetValues.First(), trainingTargetValues, trainingMeanModelPredictions, trainingEstimatedValues, out errorState); 174 TrainingTheilsUStatisticMean = errorState == OnlineCalculatorError.None ? TrainingTheilsUStatisticMean : double.PositiveInfinity; 175 } 174 176 #endregion 175 177 176 178 #region Calculate test quality measures 177 IEnumerable<double> testTargetValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices).ToList(); 178 IEnumerable<double> testEstimatedValues = EstimatedTestValues.ToList(); 179 IEnumerable<double> testMeanModelPredictions = meanModel.GetEstimatedValues(ProblemData.Dataset, ProblemData.TestIndices).ToList(); 180 IEnumerable<double> testAR1ModelPredictions = AR1model.GetEstimatedValues(ProblemData.Dataset, ProblemData.TestIndices).ToList(); 181 182 TestDirectionalSymmetry = OnlineDirectionalSymmetryCalculator.Calculate(testTargetValues.First(), testTargetValues, testEstimatedValues, out errorState); 183 TestDirectionalSymmetry = errorState == OnlineCalculatorError.None ? TestDirectionalSymmetry : 0.0; 184 TestWeightedDirectionalSymmetry = OnlineWeightedDirectionalSymmetryCalculator.Calculate(testTargetValues.First(), testTargetValues, testEstimatedValues, out errorState); 185 TestWeightedDirectionalSymmetry = errorState == OnlineCalculatorError.None ? TestWeightedDirectionalSymmetry : 0.0; 186 TestTheilsUStatisticAR1 = OnlineTheilsUStatisticCalculator.Calculate(testTargetValues.First(), testTargetValues, testAR1ModelPredictions, testEstimatedValues, out errorState); 187 TestTheilsUStatisticAR1 = errorState == OnlineCalculatorError.None ? TestTheilsUStatisticAR1 : double.PositiveInfinity; 188 TestTheilsUStatisticMean = OnlineTheilsUStatisticCalculator.Calculate(testTargetValues.First(), testTargetValues, testMeanModelPredictions, testEstimatedValues, out errorState); 189 TestTheilsUStatisticMean = errorState == OnlineCalculatorError.None ? TestTheilsUStatisticMean : double.PositiveInfinity; 179 if (ProblemData.TestIndices.Any()) { 180 IEnumerable<double> testTargetValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices).ToList(); 181 IEnumerable<double> testEstimatedValues = EstimatedTestValues.ToList(); 182 IEnumerable<double> testMeanModelPredictions = meanModel.GetEstimatedValues(ProblemData.Dataset, ProblemData.TestIndices).ToList(); 183 IEnumerable<double> testAR1ModelPredictions = AR1model.GetEstimatedValues(ProblemData.Dataset, ProblemData.TestIndices).ToList(); 184 185 TestDirectionalSymmetry = OnlineDirectionalSymmetryCalculator.Calculate(testTargetValues.First(), testTargetValues, testEstimatedValues, out errorState); 186 TestDirectionalSymmetry = errorState == OnlineCalculatorError.None ? TestDirectionalSymmetry : 0.0; 187 TestWeightedDirectionalSymmetry = OnlineWeightedDirectionalSymmetryCalculator.Calculate(testTargetValues.First(), testTargetValues, testEstimatedValues, out errorState); 188 TestWeightedDirectionalSymmetry = errorState == OnlineCalculatorError.None ? TestWeightedDirectionalSymmetry : 0.0; 189 TestTheilsUStatisticAR1 = OnlineTheilsUStatisticCalculator.Calculate(testTargetValues.First(), testTargetValues, testAR1ModelPredictions, testEstimatedValues, out errorState); 190 TestTheilsUStatisticAR1 = errorState == OnlineCalculatorError.None ? TestTheilsUStatisticAR1 : double.PositiveInfinity; 191 TestTheilsUStatisticMean = OnlineTheilsUStatisticCalculator.Calculate(testTargetValues.First(), testTargetValues, testMeanModelPredictions, testEstimatedValues, out errorState); 192 TestTheilsUStatisticMean = errorState == OnlineCalculatorError.None ? TestTheilsUStatisticMean : double.PositiveInfinity; 193 } 190 194 #endregion 191 195 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationEnsembleModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 void Remove(IClassificationModel model); 27 27 IEnumerable<IClassificationModel> Models { get; } 28 IEnumerable<IEnumerable<double>> GetEstimatedClassValueVectors( Dataset dataset, IEnumerable<int> rows);28 IEnumerable<IEnumerable<double>> GetEstimatedClassValueVectors(IDataset dataset, IEnumerable<int> rows); 29 29 } 30 30 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationEnsembleSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 new IClassificationEnsembleModel Model { get; } 27 27 IItemCollection<IClassificationSolution> ClassificationSolutions { get; } 28 IEnumerable<IEnumerable<double>> GetEstimatedClassValueVectors( Dataset dataset, IEnumerable<int> rows);28 IEnumerable<IEnumerable<double>> GetEstimatedClassValueVectors(IDataset dataset, IEnumerable<int> rows); 29 29 } 30 30 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 23 23 namespace HeuristicLab.Problems.DataAnalysis { 24 24 public interface IClassificationModel : IDataAnalysisModel { 25 IEnumerable<double> GetEstimatedClassValues( Dataset dataset, IEnumerable<int> rows);25 IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows); 26 26 IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData); 27 27 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Classification/IClassificationProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 IEnumerable<string> ClassNames { get; } 28 string PositiveClass { get; set; } 28 29 IEnumerable<double> ClassValues { get; } 29 30 int Classes { get; } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Classification/IDiscriminantFunctionClassificationModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 30 30 // class values and thresholds can only be assigned simultanously 31 31 void SetThresholdsAndClassValues(IEnumerable<double> thresholds, IEnumerable<double> classValues); 32 IEnumerable<double> GetEstimatedValues( Dataset dataset, IEnumerable<int> rows);32 IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows); 33 33 34 34 event EventHandler ThresholdsChanged; -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IDiscriminantFunctionClassificationSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Classification/IDiscriminantFunctionThresholdCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Clustering/IClusteringModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 23 23 namespace HeuristicLab.Problems.DataAnalysis { 24 24 public interface IClusteringModel : IDataAnalysisModel { 25 IEnumerable<int> GetClusterValues( Dataset dataset, IEnumerable<int> rows);25 IEnumerable<int> GetClusterValues(IDataset dataset, IEnumerable<int> rows); 26 26 } 27 27 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Clustering/IClusteringProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Clustering/IClusteringProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Clustering/IClusteringSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/IDataAnalysisModel.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/IDataAnalysisProblem.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/IDataAnalysisProblemData.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 29 29 bool IsEmpty { get; } 30 30 31 Dataset Dataset { get; }31 IDataset Dataset { get; } 32 32 ICheckedItemList<StringValue> InputVariables { get; } 33 33 IEnumerable<string> AllowedInputVariables { get; } … … 39 39 IEnumerable<int> TestIndices { get; } 40 40 41 IEnumerable<ITransformation> Transformations { get; } 42 41 43 bool IsTrainingSample(int index); 42 44 bool IsTestSample(int index); -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisSolution.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/IDataAnalysisSolutionExporter.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/IDependencyCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/IOnlineCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Regression/IRegressionEnsembleModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 void Remove(IRegressionModel model); 27 27 IEnumerable<IRegressionModel> Models { get; } 28 IEnumerable<IEnumerable<double>> GetEstimatedValueVectors( Dataset dataset, IEnumerable<int> rows);28 IEnumerable<IEnumerable<double>> GetEstimatedValueVectors(IDataset dataset, IEnumerable<int> rows); 29 29 } 30 30 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Regression/IRegressionEnsembleSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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 new RegressionEnsembleProblemData ProblemData { get; set; } 28 28 IItemCollection<IRegressionSolution> RegressionSolutions { get; } 29 IEnumerable<IEnumerable<double>> GetEstimatedValueVectors( Dataset dataset, IEnumerable<int> rows);29 IEnumerable<IEnumerable<double>> GetEstimatedValueVectors(IDataset dataset, IEnumerable<int> rows); 30 30 } 31 31 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Regression/IRegressionModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 23 23 namespace HeuristicLab.Problems.DataAnalysis { 24 24 public interface IRegressionModel : IDataAnalysisModel { 25 IEnumerable<double> GetEstimatedValues( Dataset dataset, IEnumerable<int> rows);25 IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows); 26 26 IRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData); 27 27 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Regression/IRegressionProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Regression/IRegressionProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/Regression/IRegressionSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 41 41 double TrainingNormalizedMeanSquaredError { get; } 42 42 double TestNormalizedMeanSquaredError { get; } 43 double TrainingRootMeanSquaredError { get; } 44 double TestRootMeanSquaredError { get; } 43 45 } 44 46 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/TimeSeriesPrognosis/IOnlineTimeSeriesCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/TimeSeriesPrognosis/ITimeSeriesPrognosisModel.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 23 23 namespace HeuristicLab.Problems.DataAnalysis { 24 24 public interface ITimeSeriesPrognosisModel : IRegressionModel { 25 IEnumerable<IEnumerable<double>> GetPrognosedValues( Dataset dataset, IEnumerable<int> rows, IEnumerable<int> horizons);25 IEnumerable<IEnumerable<double>> GetPrognosedValues(IDataset dataset, IEnumerable<int> rows, IEnumerable<int> horizons); 26 26 ITimeSeriesPrognosisSolution CreateTimeSeriesPrognosisSolution(ITimeSeriesPrognosisProblemData problemData); 27 27 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/TimeSeriesPrognosis/ITimeSeriesPrognosisProblem.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/TimeSeriesPrognosis/ITimeSeriesPrognosisProblemData.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Interfaces/TimeSeriesPrognosis/ITimeSeriesPrognosisSolution.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/AutoCorrelationCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/DependencyCalculator/HoeffdingsDependenceCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/DependencyCalculator/PearsonsRDependenceCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 33 33 34 34 public double Calculate(IEnumerable<double> originalValues, IEnumerable<double> estimatedValues, out OnlineCalculatorError errorState) { 35 return Math.Sqrt(OnlinePearsonsRSquaredCalculator.Calculate(originalValues, estimatedValues, out errorState));35 return OnlinePearsonsRCalculator.Calculate(originalValues, estimatedValues, out errorState); 36 36 } 37 37 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/DependencyCalculator/PearsonsRSquaredDependenceCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 32 32 33 33 public double Calculate(IEnumerable<double> originalValues, IEnumerable<double> estimatedValues, out OnlineCalculatorError errorState) { 34 return OnlinePearsonsRSquaredCalculator.Calculate(originalValues, estimatedValues, out errorState); 34 var r = OnlinePearsonsRCalculator.Calculate(originalValues, estimatedValues, out errorState); 35 return r * r; 35 36 } 36 37 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/DependencyCalculator/SpearmansRankCorrelationCoefficientCalculator.cs
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/NormalizedGiniCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 25 25 26 26 namespace HeuristicLab.Problems.DataAnalysis { 27 [Obsolete("Use OnlinePearsonsRCalculator directly")] 27 28 public class OnlinePearsonsRSquaredCalculator : IOnlineCalculator { 28 private OnlineCovarianceCalculator covCalculator = new OnlineCovarianceCalculator(); 29 private OnlineMeanAndVarianceCalculator sxCalculator = new OnlineMeanAndVarianceCalculator(); 30 private OnlineMeanAndVarianceCalculator syCalculator = new OnlineMeanAndVarianceCalculator(); 29 private readonly OnlinePearsonsRCalculator rCalculator = new OnlinePearsonsRCalculator(); 31 30 32 31 public double RSquared { 33 32 get { 34 double xVar = sxCalculator.PopulationVariance; 35 double yVar = syCalculator.PopulationVariance; 36 if (xVar.IsAlmost(0.0) || yVar.IsAlmost(0.0)) { 37 return 0.0; 38 } else { 39 double r = covCalculator.Covariance / (Math.Sqrt(xVar) * Math.Sqrt(yVar)); 40 return r * r; 41 } 33 if (rCalculator.ErrorState != OnlineCalculatorError.None) return 0.0; 34 else return rCalculator.R * rCalculator.R; 42 35 } 43 36 } … … 47 40 #region IOnlineCalculator Members 48 41 public OnlineCalculatorError ErrorState { 49 get { return covCalculator.ErrorState | sxCalculator.PopulationVarianceErrorState | syCalculator.PopulationVarianceErrorState; }42 get { return rCalculator.ErrorState; } 50 43 } 51 44 public double Value { … … 53 46 } 54 47 public void Reset() { 55 covCalculator.Reset(); 56 sxCalculator.Reset(); 57 syCalculator.Reset(); 48 rCalculator.Reset(); 58 49 } 59 50 60 51 public void Add(double x, double y) { 61 // no need to check validity of values explicitly here as it is checked in all three evaluators 62 covCalculator.Add(x, y); 63 sxCalculator.Add(x); 64 syCalculator.Add(y); 52 rCalculator.Add(x, y); 65 53 } 66 54 … … 68 56 69 57 public static double Calculate(IEnumerable<double> first, IEnumerable<double> second, out OnlineCalculatorError errorState) { 70 IEnumerator<double> firstEnumerator = first.GetEnumerator(); 71 IEnumerator<double> secondEnumerator = second.GetEnumerator(); 72 OnlinePearsonsRSquaredCalculator rSquaredCalculator = new OnlinePearsonsRSquaredCalculator(); 73 74 // always move forward both enumerators (do not use short-circuit evaluation!) 75 while (firstEnumerator.MoveNext() & secondEnumerator.MoveNext()) { 76 double original = firstEnumerator.Current; 77 double estimated = secondEnumerator.Current; 78 rSquaredCalculator.Add(original, estimated); 79 if (rSquaredCalculator.ErrorState != OnlineCalculatorError.None) break; 80 } 81 82 // check if both enumerators are at the end to make sure both enumerations have the same length 83 if (rSquaredCalculator.ErrorState == OnlineCalculatorError.None && 84 (secondEnumerator.MoveNext() || firstEnumerator.MoveNext())) { 85 throw new ArgumentException("Number of elements in first and second enumeration doesn't match."); 86 } else { 87 errorState = rSquaredCalculator.ErrorState; 88 return rSquaredCalculator.RSquared; 89 } 58 var r = OnlinePearsonsRCalculator.Calculate(first, second, out errorState); 59 return r * r; 90 60 } 91 61 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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/3.4/Plugin.cs.frame
r10553 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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.Problems.DataAnalysis { 28 [Plugin("HeuristicLab.Problems.DataAnalysis","Provides base classes for data analysis tasks.", "3.4. 5.$WCREV$")]28 [Plugin("HeuristicLab.Problems.DataAnalysis","Provides base classes for data analysis tasks.", "3.4.8.$WCREV$")] 29 29 [PluginFile("HeuristicLab.Problems.DataAnalysis-3.4.dll", PluginFileType.Assembly)] 30 30 [PluginDependency("HeuristicLab.ALGLIB","3.7.0")] … … 37 37 [PluginDependency("HeuristicLab.Parameters", "3.3")] 38 38 [PluginDependency("HeuristicLab.Persistence", "3.3")] 39 [PluginDependency("HeuristicLab.Problems.Instances", "3.3")] 39 [PluginDependency("HeuristicLab.Problems.Instances", "3.3")] 40 40 public class HeuristicLabProblemsDataAnalysisPlugin : PluginBase { 41 41 } -
branches/ClassificationModelComparison/HeuristicLab.Problems.DataAnalysis/3.4/Properties/AssemblyInfo.cs.frame
r10556 r13083 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic 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. … … 31 31 [assembly: AssemblyCompany("")] 32 32 [assembly: AssemblyProduct("HeuristicLab")] 33 [assembly: AssemblyCopyright("(c) 2002-201 3HEAL")]33 [assembly: AssemblyCopyright("(c) 2002-2015 HEAL")] 34 34 [assembly: AssemblyTrademark("")] 35 35 [assembly: AssemblyCulture("")] … … 53 53 // by using the '*' as shown below: 54 54 [assembly: AssemblyVersion("3.4.0.0")] 55 [assembly: AssemblyFileVersion("3.4. 5.$WCREV$")]55 [assembly: AssemblyFileVersion("3.4.8.$WCREV$")]
Note: See TracChangeset
for help on using the changeset viewer.