Changeset 7025 for branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionBenchmark.cs
- Timestamp:
- 11/21/11 16:23:48 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionBenchmark.cs
r6991 r7025 20 20 #endregion 21 21 22 using System.Collections;23 22 using System.Collections.Generic; 24 23 using System.Linq; … … 31 30 32 31 #region properties 33 public abstract List<string> InputVariable { get; } 34 public abstract string TargetVariable { get; } 35 public abstract IntRange TrainingPartition { get; } 36 public abstract IntRange TestPartition { get; } 32 protected string targetVariable; 33 protected List<string> inputVariables; 34 protected IntRange trainingPartition; 35 protected IntRange testPartition; 36 37 public List<string> InputVariable { 38 get { return inputVariables; } 39 } 40 41 public string TargetVariable { 42 get { return targetVariable; } 43 } 44 45 public IntRange TrainingPartition { 46 get { return trainingPartition; } 47 } 48 49 public IntRange TestPartition { 50 get { return testPartition; } 51 } 37 52 #endregion 38 53 … … 42 57 } 43 58 44 protected abstract List<double> CalculateFunction( Dictionary<string, IList<double>> data);59 protected abstract List<double> CalculateFunction(List<List<double>> data); 45 60 46 protected abstract Dictionary<string, IList<double>> GenerateInput(Dictionary<string, IList<double>> data);61 protected abstract List<List<double>> GenerateInput(List<List<double>> dataList); 47 62 48 63 public IDataAnalysisProblemData GenerateProblemData() { 49 Dictionary<string, IList<double>> data = new Dictionary<string, IList<double>>(); 50 data.Add(this.TargetVariable, new List<double>()); 51 foreach (var variable in this.InputVariable) { 52 data.Add(variable, new List<double>()); 53 } 64 List<string> varNames = new List<string>(); 65 varNames.Add(this.TargetVariable); 66 varNames.AddRange(InputVariable); 54 67 55 data = GenerateInput(data);68 List<List<double>> dataList = GenerateInput(new List<List<double>>()); 56 69 57 List<IList> values = new List<IList>(); 58 foreach (var valueList in data.Values) { 59 values.Add((IList)valueList); 60 } 70 dataList.Insert(0, CalculateFunction(dataList)); 61 71 62 Dataset dataset = new Dataset(data.Keys, values); 63 dataset.Name = this.Name; 72 Dataset dataset = new Dataset(varNames, dataList); 64 73 65 74 RegressionProblemData problemData = new RegressionProblemData(dataset, dataset.DoubleVariables.Skip(1), dataset.DoubleVariables.First()); 66 75 67 76 problemData.Name = "Data generated for benchmark problem \"" + this.Name + "\""; 68 77 problemData.Description = this.Description; 69 78 70 79 problemData.TestPartition.Start = this.TestPartition.Start; … … 77 86 } 78 87 79 //private Dictionary<string, IList<double>> CalculateValues(Dictionary<string, IList<double>> data, DatasetDefinition dataDef) { 80 // Random rand = new Random(); 81 // var combinationDataSet = AllCombinationsOf(dataDef.RangeVariables.Values.Select(range => range.Values).ToList()); 82 // int index = 0; 83 // var help = dataDef.RangeVariables.Keys; 84 // foreach (var dataSet in combinationDataSet) { 85 // data[help.ElementAt(index)] = dataSet; 86 // index++; 87 // } 88 // List<string> vars = new List<string>(dataDef.RandomVariables.Keys); 89 // for (int i = 0; i < dataDef.AmountOfPoints; i++) { 90 // foreach (var variable in vars) { 91 // data[variable].Add(dataDef.RandomVariables[variable].Next()); 92 // } 93 // // data[TargetVariable].Add(CalculateFunction(data, vars)); 94 // } 95 // int bla = 0; 96 // var test = data.Values.Select((ind) => (ind.ElementAt(bla))); 97 98 // return data; 99 //} 100 101 public static List<double> generateSteps(DoubleRange range, double stepWidth) { 88 public static List<double> GenerateSteps(DoubleRange range, double stepWidth) { 102 89 return Enumerable.Range(0, (int)((range.End - range.Start) / stepWidth) + 1) 103 90 .Select(i => (range.Start + i * stepWidth)) … … 105 92 } 106 93 107 public static List<double> generateUniformDistributedValues(int amount, DoubleRange range) {94 public static List<double> GenerateUniformDistributedValues(int amount, DoubleRange range) { 108 95 List<double> values = new List<double>(); 109 96 System.Random rand = new System.Random(); … … 114 101 } 115 102 116 public static List<double> generateNormalDistributedValues(int amount, double mu, double sigma) {103 public static List<double> GenerateNormalDistributedValues(int amount, double mu, double sigma) { 117 104 List<double> values = new List<double>(); 118 105 FastRandom rand = new FastRandom(); … … 133 120 combinations = AddExtraSet(combinations, set); 134 121 122 combinations = (from i in Enumerable.Range(0, sets.Count) 123 select (from list in combinations 124 select list.ElementAt(i)).ToList<double>()).ToList<List<double>>(); 125 135 126 return combinations; 136 127 }
Note: See TracChangeset
for help on using the changeset viewer.