- Timestamp:
- 08/31/11 11:52:11 (13 years ago)
- Location:
- branches/GeneralizedQAP
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP
- Property svn:mergeinfo changed
/trunk/sources (added) merged: 6648-6649,6652-6656,6661-6674,6676-6681,6684
- Property svn:mergeinfo changed
-
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis
- Property svn:mergeinfo changed
/trunk/sources/HeuristicLab.Problems.DataAnalysis (added) merged: 6653-6654,6661,6666,6672
- Property svn:mergeinfo changed
-
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleModel.cs
r6613 r6685 46 46 this.models = original.Models.Select(m => cloner.Clone(m)).ToList(); 47 47 } 48 49 public ClassificationEnsembleModel() : this(Enumerable.Empty<IClassificationModel>()) { } 48 50 public ClassificationEnsembleModel(IEnumerable<IClassificationModel> models) 49 51 : base() { -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleProblemData.cs
r6520 r6685 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 24 using System.IO;25 using System.Linq;26 23 using HeuristicLab.Common; 27 24 using HeuristicLab.Core; … … 35 32 public class ClassificationEnsembleProblemData : ClassificationProblemData { 36 33 37 public override IEnumerable<int> TrainingIndizes { 38 get { 39 return Enumerable.Range(TrainingPartition.Start, TrainingPartition.End - TrainingPartition.Start); 40 } 34 public override bool IsTrainingSample(int index) { 35 return index >= 0 && index < Dataset.Rows && 36 TrainingPartition.Start <= index && index < TrainingPartition.End; 41 37 } 42 public override IEnumerable<int> TestIndizes { 43 get { 44 return Enumerable.Range(TestPartition.Start, TestPartition.End - TestPartition.Start); 45 } 38 39 public override bool IsTestSample(int index) { 40 return index >= 0 && index < Dataset.Rows && 41 TestPartition.Start <= index && index < TestPartition.End; 42 } 43 44 private static readonly ClassificationEnsembleProblemData emptyProblemData; 45 public static ClassificationEnsembleProblemData EmptyProblemData { 46 get { return emptyProblemData; } 47 } 48 49 static ClassificationEnsembleProblemData() { 50 var problemData = new ClassificationEnsembleProblemData(); 51 problemData.Parameters.Clear(); 52 problemData.Name = "Empty Classification ProblemData"; 53 problemData.Description = "This ProblemData acts as place holder before the correct problem data is loaded."; 54 problemData.isEmpty = true; 55 56 problemData.Parameters.Add(new FixedValueParameter<Dataset>(DatasetParameterName, "", new Dataset())); 57 problemData.Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemList<StringValue>>(InputVariablesParameterName, "")); 58 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TrainingPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 59 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TestPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 60 problemData.Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>())); 61 problemData.Parameters.Add(new FixedValueParameter<StringMatrix>(ClassNamesParameterName, "", new StringMatrix(0, 0).AsReadOnly())); 62 problemData.Parameters.Add(new FixedValueParameter<DoubleMatrix>(ClassificationPenaltiesParameterName, "", (DoubleMatrix)new DoubleMatrix(0, 0).AsReadOnly())); 63 emptyProblemData = problemData; 46 64 } 47 65 48 66 [StorableConstructor] 49 67 protected ClassificationEnsembleProblemData(bool deserializing) : base(deserializing) { } 68 protected ClassificationEnsembleProblemData(ClassificationEnsembleProblemData original, Cloner cloner) : base(original, cloner) { } 69 public override IDeepCloneable Clone(Cloner cloner) { 70 if (this == emptyProblemData) return emptyProblemData; 71 return new ClassificationEnsembleProblemData(this, cloner); 72 } 50 73 51 protected ClassificationEnsembleProblemData(ClassificationEnsembleProblemData original, Cloner cloner) 52 : base(original, cloner) { 53 } 54 public override IDeepCloneable Clone(Cloner cloner) { return new ClassificationEnsembleProblemData(this, cloner); } 55 74 public ClassificationEnsembleProblemData() : base() { } 56 75 public ClassificationEnsembleProblemData(IClassificationProblemData classificationProblemData) 57 76 : base(classificationProblemData.Dataset, classificationProblemData.AllowedInputVariables, classificationProblemData.TargetVariable) { … … 61 80 this.TestPartition.End = classificationProblemData.TestPartition.End; 62 81 } 82 83 public ClassificationEnsembleProblemData(Dataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable) 84 : base(dataset, allowedInputVariables, targetVariable) { 85 } 63 86 } 64 87 } -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleSolution.cs
r6613 r6685 35 35 [StorableClass] 36 36 [Item("Classification Ensemble Solution", "A classification solution that contains an ensemble of multiple classification models")] 37 // [Creatable("Data Analysis")]37 [Creatable("Data Analysis - Ensembles")] 38 38 public sealed class ClassificationEnsembleSolution : ClassificationSolution, IClassificationEnsembleSolution { 39 39 public new IClassificationEnsembleModel Model { 40 40 get { return (IClassificationEnsembleModel)base.Model; } 41 } 42 public new ClassificationEnsembleProblemData ProblemData { 43 get { return (ClassificationEnsembleProblemData)base.ProblemData; } 44 set { base.ProblemData = value; } 41 45 } 42 46 … … 82 86 83 87 classificationSolutions = cloner.Clone(original.classificationSolutions); 88 RegisterClassificationSolutionsEventHandler(); 89 } 90 91 public ClassificationEnsembleSolution() 92 : base(new ClassificationEnsembleModel(), ClassificationEnsembleProblemData.EmptyProblemData) { 93 trainingPartitions = new Dictionary<IClassificationModel, IntRange>(); 94 testPartitions = new Dictionary<IClassificationModel, IntRange>(); 95 classificationSolutions = new ItemCollection<IClassificationSolution>(); 96 84 97 RegisterClassificationSolutionsEventHandler(); 85 98 } … … 208 221 #endregion 209 222 223 protected override void OnProblemDataChanged() { 224 IClassificationProblemData problemData = new ClassificationProblemData(ProblemData.Dataset, 225 ProblemData.AllowedInputVariables, 226 ProblemData.TargetVariable); 227 problemData.TrainingPartition.Start = ProblemData.TrainingPartition.Start; 228 problemData.TrainingPartition.End = ProblemData.TrainingPartition.End; 229 problemData.TestPartition.Start = ProblemData.TestPartition.Start; 230 problemData.TestPartition.End = ProblemData.TestPartition.End; 231 232 foreach (var solution in ClassificationSolutions) { 233 if (solution is ClassificationEnsembleSolution) 234 solution.ProblemData = ProblemData; 235 else 236 solution.ProblemData = problemData; 237 } 238 foreach (var trainingPartition in trainingPartitions.Values) { 239 trainingPartition.Start = ProblemData.TrainingPartition.Start; 240 trainingPartition.End = ProblemData.TrainingPartition.End; 241 } 242 foreach (var testPartition in testPartitions.Values) { 243 testPartition.Start = ProblemData.TestPartition.Start; 244 testPartition.End = ProblemData.TestPartition.End; 245 } 246 247 base.OnProblemDataChanged(); 248 } 249 210 250 public void AddClassificationSolutions(IEnumerable<IClassificationSolution> solutions) { 211 251 classificationSolutions.AddRange(solutions); -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblemData.cs
r6440 r6685 34 34 [Item("ClassificationProblemData", "Represents an item containing all data defining a classification problem.")] 35 35 public class ClassificationProblemData : DataAnalysisProblemData, IClassificationProblemData { 36 pr ivateconst string TargetVariableParameterName = "TargetVariable";37 pr ivateconst string ClassNamesParameterName = "ClassNames";38 pr ivateconst string ClassificationPenaltiesParameterName = "ClassificationPenalties";39 pr ivateconst int MaximumNumberOfClasses = 20;40 pr ivateconst int InspectedRowsToDetermineTargets = 500;36 protected const string TargetVariableParameterName = "TargetVariable"; 37 protected const string ClassNamesParameterName = "ClassNames"; 38 protected const string ClassificationPenaltiesParameterName = "ClassificationPenalties"; 39 protected const int MaximumNumberOfClasses = 20; 40 protected const int InspectedRowsToDetermineTargets = 500; 41 41 42 42 #region default data … … 171 171 {1176881,7,5,3,7,4,10,7,5,5,4 } 172 172 }; 173 private static Dataset defaultDataset; 174 private static IEnumerable<string> defaultAllowedInputVariables; 175 private static string defaultTargetVariable; 173 private static readonly Dataset defaultDataset; 174 private static readonly IEnumerable<string> defaultAllowedInputVariables; 175 private static readonly string defaultTargetVariable; 176 177 private static readonly ClassificationProblemData emptyProblemData; 178 public static ClassificationProblemData EmptyProblemData { 179 get { return EmptyProblemData; } 180 } 181 176 182 static ClassificationProblemData() { 177 183 defaultDataset = new Dataset(defaultVariableNames, defaultData); … … 181 187 defaultAllowedInputVariables = defaultVariableNames.Except(new List<string>() { "sample", "class" }); 182 188 defaultTargetVariable = "class"; 189 190 var problemData = new ClassificationProblemData(); 191 problemData.Parameters.Clear(); 192 problemData.Name = "Empty Classification ProblemData"; 193 problemData.Description = "This ProblemData acts as place holder before the correct problem data is loaded."; 194 problemData.isEmpty = true; 195 196 problemData.Parameters.Add(new FixedValueParameter<Dataset>(DatasetParameterName, "", new Dataset())); 197 problemData.Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemList<StringValue>>(InputVariablesParameterName, "")); 198 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TrainingPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 199 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TestPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 200 problemData.Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>())); 201 problemData.Parameters.Add(new FixedValueParameter<StringMatrix>(ClassNamesParameterName, "", new StringMatrix(0, 0).AsReadOnly())); 202 problemData.Parameters.Add(new FixedValueParameter<DoubleMatrix>(ClassificationPenaltiesParameterName, "", (DoubleMatrix)new DoubleMatrix(0, 0).AsReadOnly())); 203 emptyProblemData = problemData; 183 204 } 184 205 #endregion … … 249 270 RegisterParameterEvents(); 250 271 } 251 public override IDeepCloneable Clone(Cloner cloner) { return new ClassificationProblemData(this, cloner); } 272 public override IDeepCloneable Clone(Cloner cloner) { 273 if (this == emptyProblemData) return emptyProblemData; 274 return new ClassificationProblemData(this, cloner); 275 } 252 276 253 277 public ClassificationProblemData() : this(defaultDataset, defaultAllowedInputVariables, defaultTargetVariable) { } … … 267 291 private static IEnumerable<string> CheckVariablesForPossibleTargetVariables(Dataset dataset) { 268 292 int maxSamples = Math.Min(InspectedRowsToDetermineTargets, dataset.Rows); 269 var validTargetVariables = from v in dataset.VariableNames270 let DistinctValues = dataset.GetVariableValues(v)271 .Take(maxSamples)272 .Distinct()273 .Count()274 where DistinctValues < MaximumNumberOfClasses275 select v;293 var validTargetVariables = (from v in dataset.VariableNames 294 let distinctValues = dataset.GetEnumeratedVariableValues(v) 295 .Take(maxSamples) 296 .Distinct() 297 .Count() 298 where distinctValues < MaximumNumberOfClasses 299 select v).ToArray(); 276 300 277 301 if (!validTargetVariables.Any()) … … 283 307 284 308 private void ResetTargetVariableDependentMembers() { 285 Der gisterParameterEvents();309 DeregisterParameterEvents(); 286 310 287 311 classNames = null; … … 357 381 ClassificationPenaltiesParameter.Value.ItemChanged += new EventHandler<EventArgs<int, int>>(MatrixParameter_ItemChanged); 358 382 } 359 private void Der gisterParameterEvents() {383 private void DeregisterParameterEvents() { 360 384 TargetVariableParameter.ValueChanged -= new EventHandler(TargetVariableParameter_ValueChanged); 361 385 ClassNamesParameter.Value.Reset -= new EventHandler(Parameter_ValueChanged); -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs
r6589 r6685 40 40 public new IClassificationProblemData ProblemData { 41 41 get { return (IClassificationProblemData)base.ProblemData; } 42 protectedset { base.ProblemData = value; }42 set { base.ProblemData = value; } 43 43 } 44 44 -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblemData.cs
r6581 r6685 33 33 [StorableClass] 34 34 public abstract class DataAnalysisProblemData : ParameterizedNamedItem, IDataAnalysisProblemData { 35 pr ivateconst string DatasetParameterName = "Dataset";36 pr ivateconst string InputVariablesParameterName = "InputVariables";37 pr ivateconst string TrainingPartitionParameterName = "TrainingPartition";38 pr ivateconst string TestPartitionParameterName = "TestPartition";35 protected const string DatasetParameterName = "Dataset"; 36 protected const string InputVariablesParameterName = "InputVariables"; 37 protected const string TrainingPartitionParameterName = "TrainingPartition"; 38 protected const string TestPartitionParameterName = "TestPartition"; 39 39 40 40 #region parameter properites … … 53 53 #endregion 54 54 55 #region propeties 55 #region properties 56 protected bool isEmpty = false; 57 public bool IsEmpty { 58 get { return isEmpty; } 59 } 56 60 public Dataset Dataset { 57 61 get { return DatasetParameter.Value; } … … 74 78 get { 75 79 return Enumerable.Range(TrainingPartition.Start, TrainingPartition.End - TrainingPartition.Start) 76 .Where( i => i >= 0 && i < Dataset.Rows && (i < TestPartition.Start || TestPartition.End <= i));80 .Where(IsTrainingSample); 77 81 } 78 82 } … … 80 84 get { 81 85 return Enumerable.Range(TestPartition.Start, TestPartition.End - TestPartition.Start) 82 .Where( i => i >= 0 && i < Dataset.Rows);86 .Where(IsTestSample); 83 87 } 88 } 89 90 public virtual bool IsTrainingSample(int index) { 91 return index >= 0 && index < Dataset.Rows && 92 TrainingPartition.Start <= index && index < TrainingPartition.End && 93 (index < TestPartition.Start || TestPartition.End <= index); 94 } 95 96 public virtual bool IsTestSample(int index) { 97 return index >= 0 && index < Dataset.Rows && 98 TestPartition.Start <= index && index < TestPartition.End; 84 99 } 85 100 #endregion … … 87 102 protected DataAnalysisProblemData(DataAnalysisProblemData original, Cloner cloner) 88 103 : base(original, cloner) { 104 isEmpty = original.isEmpty; 89 105 RegisterEventHandlers(); 90 106 } -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisSolution.cs
r6606 r6685 56 56 public IDataAnalysisProblemData ProblemData { 57 57 get { return (IDataAnalysisProblemData)this[ProblemDataResultName].Value; } 58 protectedset {58 set { 59 59 if (this[ProblemDataResultName].Value != value) { 60 60 if (value != null) { -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleModel.cs
r6612 r6685 58 58 this.models = original.Models.Select(m => cloner.Clone(m)).ToList(); 59 59 } 60 61 public RegressionEnsembleModel() : this(Enumerable.Empty<IRegressionModel>()) { } 60 62 public RegressionEnsembleModel(IEnumerable<IRegressionModel> models) 61 63 : base() { -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleProblemData.cs
r6238 r6685 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 24 using System.IO;25 using System.Linq;26 23 using HeuristicLab.Common; 27 24 using HeuristicLab.Core; … … 35 32 public sealed class RegressionEnsembleProblemData : RegressionProblemData { 36 33 37 public override IEnumerable<int> TrainingIndizes { 38 get { 39 return Enumerable.Range(TrainingPartition.Start, TrainingPartition.End - TrainingPartition.Start); 40 } 34 public override bool IsTrainingSample(int index) { 35 return index >= 0 && index < Dataset.Rows && 36 TrainingPartition.Start <= index && index < TrainingPartition.End; 41 37 } 42 38 43 public override IEnumerable<int> TestIndizes { 44 get { 45 return Enumerable.Range(TestPartition.Start, TestPartition.End - TestPartition.Start); 46 } 39 public override bool IsTestSample(int index) { 40 return index >= 0 && index < Dataset.Rows && 41 TestPartition.Start <= index && index < TestPartition.End; 42 } 43 44 private static readonly RegressionEnsembleProblemData emptyProblemData; 45 public new static RegressionEnsembleProblemData EmptyProblemData { 46 get { return emptyProblemData; } 47 } 48 static RegressionEnsembleProblemData() { 49 var problemData = new RegressionEnsembleProblemData(); 50 problemData.Parameters.Clear(); 51 problemData.Name = "Empty Regression ProblemData"; 52 problemData.Description = "This ProblemData acts as place holder before the correct problem data is loaded."; 53 problemData.isEmpty = true; 54 55 problemData.Parameters.Add(new FixedValueParameter<Dataset>(DatasetParameterName, "", new Dataset())); 56 problemData.Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemList<StringValue>>(InputVariablesParameterName, "")); 57 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TrainingPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 58 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TestPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 59 problemData.Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>())); 60 emptyProblemData = problemData; 47 61 } 48 62 49 63 [StorableConstructor] 50 64 private RegressionEnsembleProblemData(bool deserializing) : base(deserializing) { } 65 private RegressionEnsembleProblemData(RegressionEnsembleProblemData original, Cloner cloner) : base(original, cloner) { } 66 public override IDeepCloneable Clone(Cloner cloner) { 67 if (this == emptyProblemData) return emptyProblemData; 68 return new RegressionEnsembleProblemData(this, cloner); 69 } 51 70 52 private RegressionEnsembleProblemData(RegressionEnsembleProblemData original, Cloner cloner) 53 : base(original, cloner) { 54 } 55 public override IDeepCloneable Clone(Cloner cloner) { return new RegressionEnsembleProblemData(this, cloner); } 56 71 public RegressionEnsembleProblemData() : base() { } 57 72 public RegressionEnsembleProblemData(IRegressionProblemData regressionProblemData) 58 73 : base(regressionProblemData.Dataset, regressionProblemData.AllowedInputVariables, regressionProblemData.TargetVariable) { … … 62 77 TestPartition.End = regressionProblemData.TestPartition.End; 63 78 } 79 public RegressionEnsembleProblemData(Dataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable) 80 : base(dataset, allowedInputVariables, targetVariable) { 81 } 64 82 } 65 83 } -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleSolution.cs
r6613 r6685 35 35 [StorableClass] 36 36 [Item("Regression Ensemble Solution", "A regression solution that contains an ensemble of multiple regression models")] 37 // [Creatable("Data Analysis")]37 [Creatable("Data Analysis - Ensembles")] 38 38 public sealed class RegressionEnsembleSolution : RegressionSolution, IRegressionEnsembleSolution { 39 39 public new IRegressionEnsembleModel Model { 40 40 get { return (IRegressionEnsembleModel)base.Model; } 41 } 42 43 public new RegressionEnsembleProblemData ProblemData { 44 get { return (RegressionEnsembleProblemData)base.ProblemData; } 45 set { base.ProblemData = value; } 41 46 } 42 47 … … 59 64 private void AfterDeserialization() { 60 65 foreach (var model in Model.Models) { 61 IRegressionProblemData problemData = (IRegressionProblemData) ProblemData.Clone();66 IRegressionProblemData problemData = (IRegressionProblemData) ProblemData.Clone(); 62 67 problemData.TrainingPartition.Start = trainingPartitions[model].Start; 63 68 problemData.TrainingPartition.End = trainingPartitions[model].End; … … 82 87 83 88 regressionSolutions = cloner.Clone(original.regressionSolutions); 89 RegisterRegressionSolutionsEventHandler(); 90 } 91 92 public RegressionEnsembleSolution() 93 : base(new RegressionEnsembleModel(), RegressionEnsembleProblemData.EmptyProblemData) { 94 trainingPartitions = new Dictionary<IRegressionModel, IntRange>(); 95 testPartitions = new Dictionary<IRegressionModel, IntRange>(); 96 regressionSolutions = new ItemCollection<IRegressionSolution>(); 97 84 98 RegisterRegressionSolutionsEventHandler(); 85 99 } … … 203 217 #endregion 204 218 219 protected override void OnProblemDataChanged() { 220 IRegressionProblemData problemData = new RegressionProblemData(ProblemData.Dataset, 221 ProblemData.AllowedInputVariables, 222 ProblemData.TargetVariable); 223 problemData.TrainingPartition.Start = ProblemData.TrainingPartition.Start; 224 problemData.TrainingPartition.End = ProblemData.TrainingPartition.End; 225 problemData.TestPartition.Start = ProblemData.TestPartition.Start; 226 problemData.TestPartition.End = ProblemData.TestPartition.End; 227 228 foreach (var solution in RegressionSolutions) { 229 if (solution is RegressionEnsembleSolution) 230 solution.ProblemData = ProblemData; 231 else 232 solution.ProblemData = problemData; 233 } 234 foreach (var trainingPartition in trainingPartitions.Values) { 235 trainingPartition.Start = ProblemData.TrainingPartition.Start; 236 trainingPartition.End = ProblemData.TrainingPartition.End; 237 } 238 foreach (var testPartition in testPartitions.Values) { 239 testPartition.Start = ProblemData.TestPartition.Start; 240 testPartition.End = ProblemData.TestPartition.End; 241 } 242 243 base.OnProblemDataChanged(); 244 } 245 205 246 public void AddRegressionSolutions(IEnumerable<IRegressionSolution> solutions) { 206 solutions.OfType<RegressionEnsembleSolution>().SelectMany(ensemble => ensemble.RegressionSolutions);207 247 regressionSolutions.AddRange(solutions); 208 248 } -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs
r6439 r6685 34 34 [Item("RegressionProblemData", "Represents an item containing all data defining a regression problem.")] 35 35 public class RegressionProblemData : DataAnalysisProblemData, IRegressionProblemData { 36 pr ivateconst string TargetVariableParameterName = "TargetVariable";36 protected const string TargetVariableParameterName = "TargetVariable"; 37 37 38 38 #region default data … … 64 64 {0.83763905, 0.468046718} 65 65 }; 66 private static Dataset defaultDataset; 67 private static IEnumerable<string> defaultAllowedInputVariables; 68 private static string defaultTargetVariable; 66 private static readonly Dataset defaultDataset; 67 private static readonly IEnumerable<string> defaultAllowedInputVariables; 68 private static readonly string defaultTargetVariable; 69 70 private static readonly RegressionProblemData emptyProblemData; 71 public static RegressionProblemData EmptyProblemData { 72 get { return emptyProblemData; } 73 } 69 74 70 75 static RegressionProblemData() { … … 74 79 defaultAllowedInputVariables = new List<string>() { "x" }; 75 80 defaultTargetVariable = "y"; 81 82 var problemData = new RegressionProblemData(); 83 problemData.Parameters.Clear(); 84 problemData.Name = "Empty Regression ProblemData"; 85 problemData.Description = "This ProblemData acts as place holder before the correct problem data is loaded."; 86 problemData.isEmpty = true; 87 88 problemData.Parameters.Add(new FixedValueParameter<Dataset>(DatasetParameterName, "", new Dataset())); 89 problemData.Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemList<StringValue>>(InputVariablesParameterName, "")); 90 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TrainingPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 91 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TestPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 92 problemData.Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>())); 93 emptyProblemData = problemData; 76 94 } 77 95 #endregion … … 91 109 } 92 110 93 94 111 protected RegressionProblemData(RegressionProblemData original, Cloner cloner) 95 112 : base(original, cloner) { 96 113 RegisterParameterEvents(); 97 114 } 98 public override IDeepCloneable Clone(Cloner cloner) { return new RegressionProblemData(this, cloner); } 115 public override IDeepCloneable Clone(Cloner cloner) { 116 if (this == emptyProblemData) return emptyProblemData; 117 return new RegressionProblemData(this, cloner); 118 } 99 119 100 120 public RegressionProblemData() -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionSolutionBase.cs
r6643 r6685 48 48 public new IRegressionProblemData ProblemData { 49 49 get { return (IRegressionProblemData)base.ProblemData; } 50 protectedset { base.ProblemData = value; }50 set { base.ProblemData = value; } 51 51 } 52 52 … … 127 127 OnlineCalculatorError errorState; 128 128 Add(new Result(TrainingMeanAbsoluteErrorResultName, "Mean of absolute errors of the model on the training partition", new DoubleValue())); 129 double trainingMAE = OnlineMean SquaredErrorCalculator.Calculate(EstimatedTrainingValues, ProblemData.Dataset.GetEnumeratedVariableValues(ProblemData.TargetVariable, ProblemData.TrainingIndizes), out errorState);129 double trainingMAE = OnlineMeanAbsoluteErrorCalculator.Calculate(EstimatedTrainingValues, ProblemData.Dataset.GetEnumeratedVariableValues(ProblemData.TargetVariable, ProblemData.TrainingIndizes), out errorState); 130 130 TrainingMeanAbsoluteError = errorState == OnlineCalculatorError.None ? trainingMAE : double.NaN; 131 131 } -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationSolution.cs
r5809 r6685 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 24 23 namespace HeuristicLab.Problems.DataAnalysis { 25 24 public interface IClassificationSolution : IDataAnalysisSolution { 26 25 new IClassificationModel Model { get; } 27 new IClassificationProblemData ProblemData { get; }26 new IClassificationProblemData ProblemData { get; set; } 28 27 29 28 IEnumerable<double> EstimatedClassValues { get; } -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Clustering/IClusteringSolution.cs
r5809 r6685 24 24 public interface IClusteringSolution : IDataAnalysisSolution { 25 25 new IClusteringModel Model { get; } 26 new IClusteringProblemData ProblemData { get; }26 new IClusteringProblemData ProblemData { get; set; } 27 27 28 28 IEnumerable<int> ClusterValues { get; } -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblemData.cs
r5883 r6685 27 27 namespace HeuristicLab.Problems.DataAnalysis { 28 28 public interface IDataAnalysisProblemData : INamedItem { 29 bool IsEmpty { get; } 30 29 31 Dataset Dataset { get; } 30 32 ICheckedItemList<StringValue> InputVariables { get; } … … 37 39 IEnumerable<int> TestIndizes { get; } 38 40 41 bool IsTrainingSample(int index); 42 bool IsTestSample(int index); 43 39 44 event EventHandler Changed; 40 45 } -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisSolution.cs
r5909 r6685 21 21 22 22 using System; 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 24 using HeuristicLab.Common;25 25 26 26 namespace HeuristicLab.Problems.DataAnalysis { 27 27 public interface IDataAnalysisSolution : INamedItem, IStorableContent { 28 28 IDataAnalysisModel Model { get; } 29 IDataAnalysisProblemData ProblemData { get; }29 IDataAnalysisProblemData ProblemData { get; set; } 30 30 31 31 event EventHandler ModelChanged; -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Regression/IRegressionEnsembleSolution.cs
r6612 r6685 25 25 public interface IRegressionEnsembleSolution : IRegressionSolution { 26 26 new IRegressionEnsembleModel Model { get; } 27 new RegressionEnsembleProblemData ProblemData { get; set; } 27 28 IItemCollection<IRegressionSolution> RegressionSolutions { get; } 28 29 IEnumerable<IEnumerable<double>> GetEstimatedValueVectors(Dataset dataset, IEnumerable<int> rows); -
branches/GeneralizedQAP/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Regression/IRegressionSolution.cs
r6643 r6685 24 24 public interface IRegressionSolution : IDataAnalysisSolution { 25 25 new IRegressionModel Model { get; } 26 new IRegressionProblemData ProblemData { get; }26 new IRegressionProblemData ProblemData { get; set; } 27 27 28 28 IEnumerable<double> EstimatedValues { get; }
Note: See TracChangeset
for help on using the changeset viewer.