SVM-Parameteroptimierung in Opencv

Ich möchte SVM-Parameter in Opencv optimieren. Aber jedes Mal, wenn ich es benutzetrain_auto Ich bekommeC=1 undgamma=1. Einige Leute benutzen LibSVM, aber ich konnte keinen Wrapper dafür schreiben. BeidetrainingData undlabels werden von einem vorhandenen Code genommen, der gute Resultate gibt, also versuche ich, die gleichen Parameter für diesen Code mit zu erhaltentrain_auto. Im OriginalcodeC=312.5 undgamma=0.50625. Ich habe gesehen, dass jemand benutzt hatCvStatModel Ist es für Python für C ++ notwendig? Wo mache ich einen Fehler? Danke im Voraus.

Der Code:

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;

Antworten auf die Frage(1)

Ihre Antwort auf die Frage