18 #ifndef __otbSVMCrossValidationCostFunction_txx
19 #define __otbSVMCrossValidationCostFunction_txx
25 template<
class TModel>
29 template<
class TModel>
33 template<
class TModel>
42 itkExceptionMacro(<<
"Model is null, can not evaluate accuracy.");
46 if (parameters[0] <= 0)
52 this->UpdateParameters(m_Model->GetParameters(), parameters);
54 return m_Model->CrossValidation(m_NumberOfCrossValidationFolders);
57 template<
class TModel>
64 derivative.
Fill(itk::NumericTraits<ParametersValueType>::Zero);
66 for (
unsigned int i = 0; i < parameters.
Size(); ++i)
72 x1[i] -= m_DerivativeStep;
73 y1 = this->GetValue(x1);
76 x2[i] += m_DerivativeStep;
77 y2 = this->GetValue(x2);
79 derivative[i] = (y2 - y1) / (2 * m_DerivativeStep);
80 otbMsgDevMacro( <<
"x1= " << x1 <<
" x2= " << x2 <<
", y1= " << y1 <<
", y2= " << y2 );
82 otbMsgDevMacro(
"Position: " << parameters <<
", Value: " << this->GetValue(parameters)
83 <<
", Derivatives: " << derivative );
86 template<
class TModel>
93 itkExceptionMacro(<<
"Model is null, can not evaluate number of parameters.");
96 switch (m_Model->GetKernelType())
120 template<
class TModel>
125 switch (m_Model->GetKernelType())
129 svm_parameters.
C = parameters[0];
134 svm_parameters.
C = parameters[0];
135 svm_parameters.
gamma = parameters[1];
136 svm_parameters.
coef0 = parameters[2];
141 svm_parameters.
C = parameters[0];
142 svm_parameters.
gamma = parameters[1];
147 svm_parameters.
C = parameters[0];
148 svm_parameters.
gamma = parameters[1];
149 svm_parameters.
coef0 = parameters[2];
153 svm_parameters.
C = parameters[0];