internal static extern void cveSVMSetType( IntPtr obj, SVM.SvmType val);
/// <summary> /// Trains SVM using Bio inspired features. /// </summary> /// <param name="trainData"> Feature vectors for training. </param> /// <param name="trainClasses"> Class vector of instances for training. </param> /// <param name="saveModelName"> saved Model name using </param> /// <param name="svm_type"> Svm type. </param> /// <param name="C"> Cost. </param> /// <param name="coef0"> Coeff. </param> /// <param name="degree"> Degree. </param> /// <param name="eps"> Eps for termination criteria. </param> /// <param name="gamma"> Gamma. </param> /// <param name="kernel_type"> Kernel Type of svm. </param> /// <param name="nu"> Nu. </param> /// <param name="maxIter"> Maximun number of iterations. </param> /// <param name="termCritType"> Termiantion Criteria Type. </param> /// <returns></returns> public bool TrainSVM(Matrix <float> trainData, Matrix <int> trainClasses, string saveModelName, SVM.SvmType svm_type = SVM.SvmType.CSvc, int kFold = 10, double C = 1.0, double coef0 = 0.1, int degree = 3, double eps = 0.001, double gamma = 1.0, SVM.SvmKernelType kernel_type = SVM.SvmKernelType.Rbf, double nu = 0.5, int maxIter = 500, Emgu.CV.CvEnum.TermCritType termCritType = Emgu.CV.CvEnum.TermCritType.Eps) { var svmModel = new SVM(); var termCriteria = new Emgu.CV.Structure.MCvTermCriteria(); var trainSampleCount = trainData.Rows; svmModel.C = C; svmModel.Coef0 = coef0; svmModel.Degree = degree; svmModel.Gamma = gamma; svmModel.Nu = nu; svmModel.Type = svm_type; termCriteria.Epsilon = eps; termCriteria.MaxIter = maxIter; termCriteria.Type = termCritType; svmModel.TermCriteria = termCriteria; svmModel.P = 1; svmModel.SetKernel(kernel_type); bool trained; try { using (svmModel) { TrainData td = new TrainData(trainData, Emgu.CV.ML.MlEnum.DataLayoutType.RowSample, trainClasses); trained = svmModel.TrainAuto(td, kFold); svmModel.Save(saveModelName); } } catch (Exception esvm) { throw esvm; } return(trained); }