2015-02-04 3 views
1

Я пытаюсь автоподготовку моего набора данных с помощью функции auto_train libSVM. Читая эту страницу http://docs.opencv.org/modules/ml/doc/support_vector_machines.html я пытался с этим кодом:Как использовать auto_train в C++ с libSVM

CvSVMParams params; 
params.svm_type = CvSVM::C_SVC; 
params.kernel_type = CvSVM::RBF; 

Потому что я хотел РФБ ядра. А потом:

CvSVM SVM; 
SVM.train_auto(trainFINAL, labelsFinal, Mat(), Mat(), params, 10, ... 
    CvSVM::get_default_grid(CvSVM::C), CvSVM::get_default_grid(CvSVM::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), ... 
    false); 

После этого я попытался построить новые параметры таким образом:

CvSVMParams newParams = SVM.get_params(); 
cout << endl; 
cout << "KERNEL : " << newParams.kernel_type << endl; 
cout << "SVM TYPE : " << newParams.svm_type << endl; 
cout << "degree : " << newParams.degree << endl; 
cout << "gamma : " << newParams.gamma << endl; 
cout << "coef0 : " << newParams.coef0 << endl; 
cout << "Cvalue : " << newParams.C << endl; 
cout << "p  : " << newParams.p << endl; 

Но я не могу понять 2 вещи:

  • первый, почему в newParams.svm_type он возвращается ко мне 100 (я указал C-SVC, он должен быть 0)

  • Во-вторых, правильно ли построить параметры таким образом?

ответ

0

"первым, почему в newParams.svm_type он возвращается ко мне 100 (я указанный C-SVC, он должен быть 0)"

OpenCV перечисление немного отличается от LibSVM, см http://docs.opencv.org/ref/2.4/dd/d88/classCvSVM.html

C_SVC - это 100 и первый тип SVM в OpenCV (в отличие от 0 в LibSVM).

«Во-вторых, правильно ли построить параметры таким образом?»

Я не уверен, что вы подразумеваете под «графиком» параметров, но если вы хотите узнать, являются ли новые параметры параметров, то да, они являются.

Смежные вопросы