Почему значения параметров не изменяются с помощью функции trainAuto () класса SVM в OpenCV 3.4? - PullRequest
0 голосов
/ 11 июля 2019

OpenCV говорит, что функция trainAuto () обучает SVM с оптимальными параметрами.Каждый раз, когда я тренируюсь с trainAuto (), полученные параметры совпадают.В соответствии с этим значения параметров должны измениться, если, например, я изменил значение kFold.

Я пытался изменить значения kFold, но все равно получаю те же значенияв параметрах.

Я использую следующий код:

SVM svm = SVM.create();
svm.setType(SVM.C_SVC);
svm.setKernel(SVM.SIGMOID);


ParamGrid cgrid = ParamGrid.create();
ParamGrid gammaGrid = ParamGrid.create();
ParamGrid pGrid = ParamGrid.create();
ParamGrid nuGrid = ParamGrid.create();
ParamGrid coeffGrid = ParamGrid.create();
ParamGrid degreeGrid = ParamGrid.create();         

int kFold = 10;     
svm.trainAuto(train, Ml.ROW_SAMPLE, labels, kFold, cgrid, gammaGrid, 
pGrid, nuGrid, coeffGrid, degreeGrid, false);

double C = svm.getC();
double gamma = svm.getGamma();
double P = svm.getP();
double Nu = svm.getNu();
double Coef0 = svm.getCoef0();
double Degree = svm.getDegree();

System.out.println("C: " +C);
System.out.println("Gamma: " +gamma); 
System.out.println("P: " +P);
System.out.println("Nu: " +Nu);
System.out.println("Coeff: " +Coef0);
System.out.println("Degree: " +Degree);

Я всегда получаю следующие результаты:

C: 1.0 Gamma: 1.0 P: 0.0 Nu: 0.0 Coeff: 0.0 Degree: 0.0

Что я делаю не так?

...