Changeset 15343 for branches/EfficientGlobalOptimization/HeuristicLab.Algorithms.EGO/EgoUtilities.cs
- Timestamp:
- 08/29/17 11:28:16 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/EfficientGlobalOptimization/HeuristicLab.Algorithms.EGO/EgoUtilities.cs
r15338 r15343 27 27 using HeuristicLab.Data; 28 28 using HeuristicLab.Encodings.RealVectorEncoding; 29 using HeuristicLab.Encodings.IntegerVectorEncoding; 29 30 using HeuristicLab.Optimization; 30 31 using HeuristicLab.Problems.DataAnalysis; … … 54 55 return model.GetEstimatedValues(dataset, new[] { 0 }).First(); 55 56 } 57 public static double GetEstimation(this IRegressionModel model, IntegerVector r) { 58 var dataset = GetDataSet(new[] { new Tuple<IntegerVector, double>(r, 0.0) }); 59 return model.GetEstimatedValues(dataset, new[] { 0 }).First(); 60 } 56 61 public static double GetVariance(this IConfidenceRegressionModel model, RealVector r) { 57 62 var dataset = GetDataSet(new[] { new Tuple<RealVector, double>(r, 0.0) }, false); 63 return model.GetEstimatedVariances(dataset, new[] { 0 }).First(); 64 } 65 public static double GetVariance(this IConfidenceRegressionModel model, IntegerVector r) { 66 var dataset = GetDataSet(new[] { new Tuple<IntegerVector, double>(r, 0.0) }); 58 67 return model.GetEstimatedVariances(dataset, new[] { 0 }).First(); 59 68 } … … 61 70 return dataset.GetDoubleValue("input" + j, i); 62 71 } 72 public static RealVector ToRealVector(this IntegerVector vector) { 73 return new RealVector(vector.Select(x => (double)x).ToArray()); 74 } 75 63 76 64 77 //Sub-ALgorithms … … 80 93 public static Dataset GetDataSet(IReadOnlyList<Tuple<RealVector, double>> samples, bool removeDuplicates) { 81 94 if (removeDuplicates) samples = RemoveDuplicates(samples); //TODO duplicate removal leads to incorrect uncertainty values in models 95 var dimensions = samples[0].Item1.Length + 1; 96 var data = new double[samples.Count, dimensions]; 97 var names = new string[dimensions - 1]; 98 for (var i = 0; i < names.Length; i++) names[i] = "input" + i; 99 for (var j = 0; j < samples.Count; j++) { 100 for (var i = 0; i < names.Length; i++) data[j, i] = samples[j].Item1[i]; 101 data[j, dimensions - 1] = samples[j].Item2; 102 } 103 return new Dataset(names.Concat(new[] { "output" }).ToArray(), data); 104 } 105 //overload for IntegerVectors does not support duplicate removal 106 public static Dataset GetDataSet(IReadOnlyList<Tuple<IntegerVector, double>> samples) { 82 107 var dimensions = samples[0].Item1.Length + 1; 83 108 var data = new double[samples.Count, dimensions];
Note: See TracChangeset
for help on using the changeset viewer.