- Timestamp:
- 07/04/19 16:11:29 (22 months ago)
- Location:
- stable
- Files:
-
- 3 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/branches/2892_LR-prediction-intervals (added) merged: 15743-15744,16388 /trunk merged: 16389,16415,16448-16449
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Algorithms.DataAnalysis
- Property svn:mergeinfo changed
/branches/2892_LR-prediction-intervals/HeuristicLab.Algorithms.DataAnalysis (added) merged: 15744,16388 /trunk/HeuristicLab.Algorithms.DataAnalysis merged: 16389,16415,16448-16449
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Algorithms.DataAnalysis/3.4
- Property svn:mergeinfo changed
/branches/2892_LR-prediction-intervals/HeuristicLab.Algorithms.DataAnalysis/3.4 (added) merged: 15744,16388 /trunk/HeuristicLab.Algorithms.DataAnalysis/3.4 merged: 16389,16415,16448-16449
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearRegressionModel.cs
r16389 r17074 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Drawing; 24 25 using System.Linq; 25 26 using HeuristicLab.Common; … … 35 36 [Item("Linear Regression Model", "Represents a linear regression model.")] 36 37 public sealed class LinearRegressionModel : RegressionModel, IConfidenceRegressionModel { 38 public static new Image StaticItemImage { 39 get { return HeuristicLab.Common.Resources.VSImageLibrary.Function; } 40 } 37 41 38 42 [Storable] … … 49 53 get; private set; 50 54 } 51 55 52 56 public override IEnumerable<string> VariablesUsedForPrediction { 53 get { return allowedInputVariables; }57 get { return doubleVariables.Union(factorVariables.Select(f => f.Key)); } 54 58 } 55 59 56 60 [Storable] 57 private string[] allowedInputVariables;61 private string[] doubleVariables; 58 62 [Storable] 59 63 private List<KeyValuePair<string, IEnumerable<string>>> factorVariables; 64 65 /// <summary> 66 /// Enumerable of variable names used by the model including one-hot-encoded of factor variables. 67 /// </summary> 68 public IEnumerable<string> ParameterNames { 69 get { 70 return factorVariables.SelectMany(kvp => kvp.Value.Select(factorVal => $"{kvp.Key}={factorVal}")) 71 .Concat(doubleVariables) 72 .Concat(new[] { "<const>" }); 73 } 74 } 60 75 61 76 [StorableConstructor] … … 69 84 this.NoiseSigma = original.NoiseSigma; 70 85 71 allowedInputVariables = (string[])original.allowedInputVariables.Clone();86 doubleVariables = (string[])original.doubleVariables.Clone(); 72 87 this.factorVariables = original.factorVariables.Select(kvp => new KeyValuePair<string, IEnumerable<string>>(kvp.Key, new List<string>(kvp.Value))).ToList(); 73 88 } … … 78 93 this.W = new double[w.Length]; 79 94 Array.Copy(w, W, w.Length); 80 this.C = new double[covariance.GetLength(0), covariance.GetLength(1)];95 this.C = new double[covariance.GetLength(0), covariance.GetLength(1)]; 81 96 Array.Copy(covariance, C, covariance.Length); 82 97 this.NoiseSigma = noiseSigma; 83 this.allowedInputVariables = doubleInputVariables.ToArray(); 98 this.doubleVariables = doubleInputVariables.ToArray(); 99 // clone 84 100 this.factorVariables = factorVariables.Select(kvp => new KeyValuePair<string, IEnumerable<string>>(kvp.Key, new List<string>(kvp.Value))).ToList(); 85 101 } … … 94 110 95 111 public override IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows) { 96 double[,] inputData = dataset.ToArray( allowedInputVariables, rows);112 double[,] inputData = dataset.ToArray(doubleVariables, rows); 97 113 double[,] factorData = dataset.ToArray(factorVariables, rows); 98 114 … … 113 129 114 130 public IEnumerable<double> GetEstimatedVariances(IDataset dataset, IEnumerable<int> rows) { 115 double[,] inputData = dataset.ToArray( allowedInputVariables, rows);131 double[,] inputData = dataset.ToArray(doubleVariables, rows); 116 132 double[,] factorData = dataset.ToArray(factorVariables, rows); 117 133 … … 122 138 123 139 double[] d = new double[C.GetLength(0)]; 124 140 125 141 for (int row = 0; row < n; row++) { 126 142 for (int column = 0; column < columns; column++) { 127 d[column] = inputData[row, column];143 d[column] = inputData[row, column]; 128 144 } 129 145 d[columns] = 1; 130 146 131 147 double var = 0.0; 132 for (int i=0;i<d.Length;i++) {133 for (int j = 0;j<d.Length;j++) {148 for (int i = 0; i < d.Length; i++) { 149 for (int j = 0; j < d.Length; j++) { 134 150 var += d[i] * C[i, j] * d[j]; 135 151 } 136 152 } 137 yield return var + NoiseSigma *NoiseSigma;153 yield return var + NoiseSigma * NoiseSigma; 138 154 } 139 155 } 140 141 156 142 157 public override IRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData) {
Note: See TracChangeset
for help on using the changeset viewer.