Opencv中的SVM参数优化

gar*_*rak 7 c++ opencv svm

我想在Opencv中优化SVM参数.但是,每次我使用train_auto我得到C=1gamma=1.有些人使用LibSVM,但我无法为此编写包装器.这两个trainingDatalabels是从现有的代码,提供了良好的成绩,所以我试图让相同的参数与该代码取train_auto.在原始代码C=312.5gamma=0.50625.我看到有人用于CvStatModelpython,是否需要C++?我在哪里弄错了?提前致谢.

代码:

CvParamGrid CvParamGrid_C(pow(2.0,-5), pow(2.0,15), pow(2.0,2));
CvParamGrid CvParamGrid_gamma(pow(2.0,-15), pow(2.0,3), pow(2.0,2));
if (!CvParamGrid_C.check() || !CvParamGrid_gamma.check())
    cout<<"The grid is NOT VALID."<<endl;
CvSVMParams paramz;
paramz.kernel_type = CvSVM::RBF;
paramz.svm_type = CvSVM::C_SVC;
paramz.term_crit = cvTermCriteria(CV_TERMCRIT_ITER,100,0.000001);
svm.train_auto(trainingData, labels, Mat(), Mat(), paramz,10, CvParamGrid_C, CvParamGrid_gamma, CvSVM::get_default_grid(CvSVM::P), CvSVM::get_default_grid(CvSVM::NU), CvSVM::get_default_grid(CvSVM::COEF), CvSVM::get_default_grid(CvSVM::DEGREE), true);
svm.get_params();
cout<<"gamma:"<<paramz.gamma<<endl;
cout<<"C:"<<paramz.C<<endl;
Run Code Online (Sandbox Code Playgroud)

gar*_*rak 5

我修改了代码如下paramz = svm.get_params(),它工作正常.