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
Что я делаю не так?