- Timestamp:
- 08/17/11 14:37:34 (13 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleModel.cs
r6612 r6666 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() { -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleProblemData.cs
r6238 r6666 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 24 using System.IO;25 23 using System.Linq; 26 24 using HeuristicLab.Common; … … 47 45 } 48 46 47 private static RegressionEnsembleProblemData emptyProblemData; 48 public new static RegressionEnsembleProblemData EmptyProblemData { 49 get { return emptyProblemData; } 50 } 51 static RegressionEnsembleProblemData() { 52 var problemData = new RegressionEnsembleProblemData(); 53 problemData.Parameters.Clear(); 54 problemData.Name = "Empty Regression ProblemData"; 55 problemData.Description = "This ProblemData acts as place holder before the correct problem data is loaded."; 56 problemData.isEmpty = true; 57 58 problemData.Parameters.Add(new FixedValueParameter<Dataset>(DatasetParameterName, "", new Dataset())); 59 problemData.Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemList<StringValue>>(InputVariablesParameterName, "")); 60 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TrainingPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 61 problemData.Parameters.Add(new FixedValueParameter<IntRange>(TestPartitionParameterName, "", (IntRange)new IntRange(0, 0).AsReadOnly())); 62 problemData.Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>())); 63 emptyProblemData = problemData; 64 } 65 49 66 [StorableConstructor] 50 67 private RegressionEnsembleProblemData(bool deserializing) : base(deserializing) { } 68 private RegressionEnsembleProblemData(RegressionEnsembleProblemData original, Cloner cloner) : base(original, cloner) { } 69 public override IDeepCloneable Clone(Cloner cloner) { 70 if (this == emptyProblemData) return emptyProblemData; 71 return new RegressionEnsembleProblemData(this, cloner); 72 } 51 73 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 74 public RegressionEnsembleProblemData() : base() { } 57 75 public RegressionEnsembleProblemData(IRegressionProblemData regressionProblemData) 58 76 : base(regressionProblemData.Dataset, regressionProblemData.AllowedInputVariables, regressionProblemData.TargetVariable) { … … 62 80 TestPartition.End = regressionProblemData.TestPartition.End; 63 81 } 82 public RegressionEnsembleProblemData(Dataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable) 83 : base(dataset, allowedInputVariables, targetVariable) { 84 } 64 85 } 65 86 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleSolution.cs
r6613 r6666 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 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs
r6439 r6666 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 … … 68 68 private static string defaultTargetVariable; 69 69 70 private static RegressionProblemData emptyProblemData; 71 public static RegressionProblemData EmptyProblemData { 72 get { return emptyProblemData; } 73 } 74 70 75 static RegressionProblemData() { 71 76 defaultDataset = new Dataset(new string[] { "y", "x" }, kozaF1); … … 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()
Note: See TracChangeset
for help on using the changeset viewer.