Changeset 8660 for branches/GP-MoveOperators/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorMachineModel.cs
- Timestamp:
- 09/14/12 18:58:15 (12 years ago)
- Location:
- branches/GP-MoveOperators
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GP-MoveOperators
- Property svn:ignore
-
old new 21 21 protoc.exe 22 22 _ReSharper.HeuristicLab 3.3 Tests 23 Google.ProtocolBuffers-2.4.1.473.dll
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/GP-MoveOperators/HeuristicLab.Algorithms.DataAnalysis/3.4
- Property svn:ignore
-
old new 5 5 *.vs10x 6 6 Plugin.cs 7 *.user
-
- Property svn:ignore
-
branches/GP-MoveOperators/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorMachineModel.cs
r7259 r8660 29 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 30 30 using HeuristicLab.Problems.DataAnalysis; 31 using SVM;31 using LibSVM; 32 32 33 33 namespace HeuristicLab.Algorithms.DataAnalysis { … … 39 39 public sealed class SupportVectorMachineModel : NamedItem, ISupportVectorMachineModel { 40 40 41 private SVM.Model model;41 private svm_model model; 42 42 /// <summary> 43 43 /// Gets or sets the SVM model. 44 44 /// </summary> 45 public SVM.Model Model {45 public svm_model Model { 46 46 get { return model; } 47 47 set { … … 57 57 /// Gets or sets the range transformation for the model. 58 58 /// </summary> 59 private SVM.RangeTransform rangeTransform;60 public SVM.RangeTransform RangeTransform {59 private RangeTransform rangeTransform; 60 public RangeTransform RangeTransform { 61 61 get { return rangeTransform; } 62 62 set { … … 71 71 public Dataset SupportVectors { 72 72 get { 73 var data = new double[Model. SupportVectorCount, allowedInputVariables.Count()];74 for (int i = 0; i < Model. SupportVectorCount; i++) {75 var sv = Model.S upportVectors[i];73 var data = new double[Model.sv_coef.Length, allowedInputVariables.Count()]; 74 for (int i = 0; i < Model.sv_coef.Length; i++) { 75 var sv = Model.SV[i]; 76 76 for (int j = 0; j < sv.Length; j++) { 77 data[i, j] = sv[j]. Value;77 data[i, j] = sv[j].value; 78 78 } 79 79 } … … 101 101 this.classValues = (double[])original.classValues.Clone(); 102 102 } 103 public SupportVectorMachineModel( SVM.Model model, SVM.RangeTransform rangeTransform, string targetVariable, IEnumerable<string> allowedInputVariables, IEnumerable<double> classValues)103 public SupportVectorMachineModel(svm_model model, RangeTransform rangeTransform, string targetVariable, IEnumerable<string> allowedInputVariables, IEnumerable<double> classValues) 104 104 : this(model, rangeTransform, targetVariable, allowedInputVariables) { 105 105 this.classValues = classValues.ToArray(); 106 106 } 107 public SupportVectorMachineModel( SVM.Model model, SVM.RangeTransform rangeTransform, string targetVariable, IEnumerable<string> allowedInputVariables)107 public SupportVectorMachineModel(svm_model model, RangeTransform rangeTransform, string targetVariable, IEnumerable<string> allowedInputVariables) 108 108 : base() { 109 109 this.name = ItemName; … … 124 124 } 125 125 public SupportVectorRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData) { 126 return new SupportVectorRegressionSolution(this, problemData);126 return new SupportVectorRegressionSolution(this, new RegressionProblemData(problemData)); 127 127 } 128 128 IRegressionSolution IRegressionModel.CreateRegressionSolution(IRegressionProblemData problemData) { … … 153 153 154 154 public SupportVectorClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData) { 155 return new SupportVectorClassificationSolution(this, problemData);155 return new SupportVectorClassificationSolution(this, new ClassificationProblemData(problemData)); 156 156 } 157 157 IClassificationSolution IClassificationModel.CreateClassificationSolution(IClassificationProblemData problemData) { … … 161 161 private IEnumerable<double> GetEstimatedValuesHelper(Dataset dataset, IEnumerable<int> rows) { 162 162 // calculate predictions for the currently requested rows 163 SVM.Problem problem = SupportVectorMachineUtil.CreateSvmProblem(dataset, targetVariable, allowedInputVariables, rows);164 SVM.Problem scaledProblem = Scaling.Scale(RangeTransform,problem);165 166 for (int i = 0; i < scaledProblem.Count; i++) {167 yield return SVM.Prediction.Predict(Model, scaledProblem.X[i]);163 svm_problem problem = SupportVectorMachineUtil.CreateSvmProblem(dataset, targetVariable, allowedInputVariables, rows); 164 svm_problem scaledProblem = rangeTransform.Scale(problem); 165 166 for (int i = 0; i < problem.l; i++) { 167 yield return svm.svm_predict(Model, scaledProblem.x[i]); 168 168 } 169 169 } … … 183 183 get { 184 184 using (MemoryStream stream = new MemoryStream()) { 185 SVM.Model.Write(stream, Model);185 svm.svm_save_model(new StreamWriter(stream), Model); 186 186 stream.Seek(0, System.IO.SeekOrigin.Begin); 187 187 StreamReader reader = new StreamReader(stream); … … 191 191 set { 192 192 using (MemoryStream stream = new MemoryStream(Encoding.ASCII.GetBytes(value))) { 193 model = SVM.Model.Read(stream);193 model = svm.svm_load_model(new StreamReader(stream)); 194 194 } 195 195 } … … 199 199 get { 200 200 using (MemoryStream stream = new MemoryStream()) { 201 SVM.RangeTransform.Write(stream, RangeTransform);201 RangeTransform.Write(stream, RangeTransform); 202 202 stream.Seek(0, System.IO.SeekOrigin.Begin); 203 203 StreamReader reader = new StreamReader(stream); … … 207 207 set { 208 208 using (MemoryStream stream = new MemoryStream(Encoding.ASCII.GetBytes(value))) { 209 RangeTransform = SVM.RangeTransform.Read(stream);209 RangeTransform = RangeTransform.Read(stream); 210 210 } 211 211 }
Note: See TracChangeset
for help on using the changeset viewer.