Changeset 8609 for trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs
- Timestamp:
- 09/10/12 11:02:37 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs
r8139 r8609 30 30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 31 31 using HeuristicLab.Problems.DataAnalysis; 32 using LibSVM; 32 33 33 34 namespace HeuristicLab.Algorithms.DataAnalysis { … … 143 144 144 145 //extract SVM parameters from scope and set them 145 SVM.Parameter parameter = new SVM.Parameter();146 parameter. SvmType = (SVM.SvmType)Enum.Parse(typeof(SVM.SvmType), svmType, true);147 parameter. KernelType = (SVM.KernelType)Enum.Parse(typeof(SVM.KernelType), kernelType, true);146 svm_parameter parameter = new svm_parameter(); 147 parameter.svm_type = GetSvmType(svmType); 148 parameter.kernel_type = GetKernelType(kernelType); 148 149 parameter.C = cost; 149 parameter.Nu = nu; 150 parameter.Gamma = gamma; 151 parameter.P = epsilon; 152 parameter.CacheSize = 500; 153 parameter.Probability = false; 150 parameter.nu = nu; 151 parameter.gamma = gamma; 152 parameter.p = epsilon; 153 parameter.cache_size = 500; 154 parameter.probability = 0; 155 parameter.eps = 0.001; 156 parameter.degree = 3; 157 parameter.shrinking = 1; 158 parameter.coef0 = 0; 154 159 155 160 156 SVM.Problem problem = SupportVectorMachineUtil.CreateSvmProblem(dataset, targetVariable, allowedInputVariables, rows); 157 SVM.RangeTransform rangeTransform = SVM.RangeTransform.Compute(problem); 158 SVM.Problem scaledProblem = SVM.Scaling.Scale(rangeTransform, problem); 159 var svmModel = SVM.Training.Train(scaledProblem, parameter); 160 nSv = svmModel.SupportVectorCount; 161 162 svm_problem problem = SupportVectorMachineUtil.CreateSvmProblem(dataset, targetVariable, allowedInputVariables, rows); 163 RangeTransform rangeTransform = RangeTransform.Compute(problem); 164 svm_problem scaledProblem = rangeTransform.Scale(problem); 165 var svmModel = svm.svm_train(scaledProblem, parameter); 166 nSv = svmModel.SV.Length; 161 167 var model = new SupportVectorMachineModel(svmModel, rangeTransform, targetVariable, allowedInputVariables); 162 168 var solution = new SupportVectorRegressionSolution(model, (IRegressionProblemData)problemData.Clone()); … … 165 171 return solution; 166 172 } 173 174 private static int GetSvmType(string svmType) { 175 if (svmType == "NU_SVR") return svm_parameter.NU_SVR; 176 if (svmType == "EPSILON_SVR") return svm_parameter.EPSILON_SVR; 177 throw new ArgumentException("Unknown SVM type"); 178 } 179 180 private static int GetKernelType(string kernelType) { 181 if (kernelType == "LINEAR") return svm_parameter.LINEAR; 182 if (kernelType == "POLY") return svm_parameter.POLY; 183 if (kernelType == "SIGMOID") return svm_parameter.SIGMOID; 184 if (kernelType == "RBF") return svm_parameter.RBF; 185 throw new ArgumentException("Unknown kernel type"); 186 } 167 187 #endregion 168 188 }
Note: See TracChangeset
for help on using the changeset viewer.