18 #ifndef __otbSVMModel_h
19 #define __otbSVMModel_h
58 template <
class TValue,
class TLabel>
73 typedef std::pair<MeasurementType, LabelType>
SampleType;
89 unsigned int GetNumberOfClasses(
void)
const
91 return (
unsigned int) (m_Model->nr_class);
95 unsigned int GetNumberOfHyperplane(
void)
const
97 return (
unsigned int) (m_Model->nr_class * (m_Model->nr_class - 1) / 2);
122 void SaveModel(
const char* model_file_name)
const;
123 void SaveModel(
const std::string& model_file_name)
const
126 this->SaveModel(model_file_name.c_str());
130 void LoadModel(
const char* model_file_name);
131 void LoadModel(
const std::string& model_file_name)
134 this->LoadModel(model_file_name.c_str());
138 Pointer GetCopy()
const;
141 void SetSVMType(
int svmtype)
143 m_Parameters.svm_type = svmtype;
148 int GetSVMType(
void)
const
150 return m_Parameters.svm_type;
158 void SetKernelType(
int kerneltype)
160 m_Parameters.kernel_type = kerneltype;
165 int GetKernelType(
void)
const
167 return m_Parameters.kernel_type;
171 void SetPolynomialKernelDegree(
int degree)
173 m_Parameters.degree =
degree;
178 int GetPolynomialKernelDegree(
void)
const
180 return m_Parameters.degree;
184 virtual void SetKernelGamma(
double gamma)
186 m_Parameters.gamma =
gamma;
190 double GetKernelGamma(
void)
const
192 return m_Parameters.gamma;
198 m_Parameters.coef0 =
coef0;
203 double GetKernelCoef0(
void)
const
206 return m_Parameters.coef0;
210 void SetNu(
double nu)
212 m_Parameters.nu =
nu;
217 double GetNu(
void)
const
220 return m_Parameters.nu;
224 void SetCacheSize(
int cSize)
226 m_Parameters.cache_size =
static_cast<double>(cSize);
231 int GetCacheSize(
void)
const
233 return static_cast<int>(m_Parameters.cache_size);
244 double GetC(
void)
const
246 return m_Parameters.C;
250 void SetEpsilon(
double eps)
252 m_Parameters.eps =
eps;
257 double GetEpsilon(
void)
const
259 return m_Parameters.eps;
270 double GetP(
void)
const
272 return m_Parameters.p;
276 void DoShrinking(
bool s)
278 m_Parameters.shrinking =
static_cast<int>(s);
283 bool GetDoShrinking(
void)
const
285 return static_cast<bool>(m_Parameters.shrinking);
289 void DoProbabilityEstimates(
bool prob)
291 m_Parameters.probability =
static_cast<int>(prob);
296 bool GetDoProbabilityEstimates(
void)
const
298 return static_cast<bool>(m_Parameters.probability);
304 return m_Parameters.kernel_generic;
309 if (pGenericKernelFunctor !=
NULL)
310 m_Parameters.kernel_generic = pGenericKernelFunctor->
Clone();
315 int GetNumberOfSupportVectors(
void)
const
321 double * GetRho(
void)
const
331 void SetSupportVectors(
svm_node ** sv,
int nbOfSupportVector);
334 double ** GetAlpha(
void)
336 return m_Model->sv_coef;
339 void SetAlpha(
double ** alpha,
int nbOfSupportVector);
344 return m_Model->label;
348 int * GetNumberOfSVPerClasse()
359 virtual void Modified()
361 Superclass::Modified();
362 m_ModelUpToDate =
false;
369 void ConsistencyCheck();
375 double CrossValidation(
unsigned int nbFolders);
381 LabelType EvaluateLabel(
const MeasurementType& measure)
const;
387 DistancesVectorType EvaluateHyperplanesDistances(
const MeasurementType& measure)
const;
395 ProbabilitiesVectorType EvaluateProbabilities(
const MeasurementType& measure)
const;
398 void AddSample(
const MeasurementType& measure,
const LabelType& label);
404 void SetSamples(
const SamplesVectorType& samples);
416 void PrintSelf(std::ostream& os,
itk::Indent indent)
const;
419 void DeleteProblem();
429 void operator =(
const Self&);
452 #ifndef OTB_MANUAL_INSTANTIATION