コード例 #1
0
 internal static extern void cveSVMSetType(
     IntPtr obj,
     SVM.SvmType val);
コード例 #2
0
        /// <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);
        }