OpenCV says that trainAuto() function trains an SVM with optimal parameters. Every time I train with trainAuto(), the parameters that are obtained are the same. According to this, the values of the parameters should change if, for example, I change the value of kFold.
I tried to change the values of kFold but I still get the same values in the parameters.
The code I am using is the following:
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); The results that I always get are the following:
C: 1.0 Gamma: 1.0 P: 0.0 Nu: 0.0 Coeff: 0.0 Degree: 0.0
What am I doing wrong?