Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/10/12 11:02:37 (12 years ago)
Author:
gkronber
Message:

#1944 changed SVR and SVC algorithms in HeuristicLab to use most recent LibSVM version.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs

    r8139 r8609  
    3030using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3131using HeuristicLab.Problems.DataAnalysis;
     32using LibSVM;
    3233
    3334namespace HeuristicLab.Algorithms.DataAnalysis {
     
    143144
    144145      //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);
    148149      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;
    154159
    155160
    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;
    161167      var model = new SupportVectorMachineModel(svmModel, rangeTransform, targetVariable, allowedInputVariables);
    162168      var solution = new SupportVectorRegressionSolution(model, (IRegressionProblemData)problemData.Clone());
     
    165171      return solution;
    166172    }
     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    }
    167187    #endregion
    168188  }
Note: See TracChangeset for help on using the changeset viewer.