iRoCS Toolbox  1.1.0
Public Member Functions | Protected Member Functions | Protected Attributes
svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE > Class Template Reference

#include <BasicSVMAdapterTempl.hh>

Inheritance diagram for svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >:
Collaboration diagram for svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >:

Public Member Functions

 BasicSVMAdapterTempl ()
 
virtual double classify (const FV &testObject)
 classify the given Feature Vector. More...
 
double classIndexToLabel (unsigned int classIndex) const
 map classIndex to label (loadModel() or train() must have been called before) More...
 
virtual void clearKernelCache ()
 call clearCache() method of selected kernel, e.g., for Kernel_MATRIX this will clear the internal cache matrix. More...
 
virtual void computeTrainKernelMatrix (float **kmatrix, const std::vector< FV > &featureVectors)
 Evaluate kernel matrix of the svm. More...
 
bool getStoreClassificationDetailsFlag () const
 
FV * getSupportVector (int i) const
 returns ith SV in model More...
 
std::vector< const typename svt::Model< FV > *> getTwoClassModels () const
 returns vector containing pointers to all TwoClassModels More...
 
std::vector< typename svt::Model< FV > *> getTwoClassModels ()
 
virtual void loadModel (STDATA &stData)
 load model data from stData into SVM's. More...
 
virtual void loadParameters (STDATA &stData)
 Read all parameters (e.g. More...
 
virtual void loadParameters (StDataASCII &stData)
 
virtual void loadParameters (StDataCmdLine &stData)
 Same as loadParameters, but for Parameters from command line. More...
 
virtual int nClasses () const
 get number of Classes (loadModel() or train() must have been called before) More...
 
size_t nSupportVectors () const
 returns number of SV in model More...
 
void optimizeLinearModel ()
 optimize model for faster classification More...
 
virtual void saveClassificationDetailsASCII (StDataASCII &stData) const
 classify the given Feature Vector. More...
 
virtual void saveModel (STDATA &stData) const
 save resulting model from training process into given map More...
 
virtual void saveOnlyKernelParameters (StDataASCII &stData) const
 save only Kernel Parameters (this is used for user information and to detect in grid search, wether a kernel parameter is changed More...
 
virtual void saveParameters (STDATA &stData) const
 store all parameters of the SVM to given map More...
 
virtual void saveParameters (StDataASCII &stData) const
 same as saveParameters(), but with fixed StDataASCII class independent from given STDATA template parameter. More...
 
virtual void saveTrainingInfos (STDATA &stData, int detailLevel=1)
 save additional trainnig infos to given structured data More...
 
virtual void saveTrainingInfos (StDataASCII &stData, int detailLevel=1)
 same as saveTrainingInfos(), but with fixed StDataASCII class independent from given STDATA template parameter. More...
 
virtual void setProgressReporter (ProgressReporter *pr)
 set progress reporter object. More...
 
void setStoreClassificationDetailsFlag (bool f)
 
virtual void train (const GroupedTrainingData< FV > &trainData)
 train SVM with given training data. More...
 
virtual void train (const SVM_Problem< FV > &problem)
 train SVM with given Feature Vectors. More...
 
template<typename ForwardIter >
void train (ForwardIter FV_begin, const ForwardIter &FV_end)
 train the Multi Class SVM with the given feature vectors. More...
 
template<typename ForwardIter , typename Accessor >
void train (ForwardIter FV_begin, const ForwardIter &FV_end, Accessor accessor)
 same as train(), but you can specify an Accessor for accessing the elements of your container. More...
 
virtual void updateKernelCache (const GroupedTrainingData< FV > &trainData)
 call updateCache() of selected kernel, e.g., for Kernel_MATRIX this will setup the internal cache matrix. More...
 
virtual void updateKernelCache (const SVM_Problem< FV > &problem)
 same as previous updateKernelCache() method, just for feature vectors that are stored within an SVM_Problem object Before calling, please ensure that your feature vectors have correct uniqueId()'s More...
 
virtual void updateTestKernelCache (typename std::vector< FV >::iterator FV_begin, const typename std::vector< FV >::iterator &FV_end)
 Load Test Kernel Cache. More...
 

Protected Member Functions

template<typename STDATA2 >
void saveTrainingInfosTempl (STDATA2 &stData, int detailLevel)
 

Protected Attributes

bool _storeClassificationDetailsFlag
 

Detailed Description

template<typename FV, typename STDATA, typename MCSVMTYPE>
class svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >

Definition at line 109 of file BasicSVMAdapterTempl.hh.

Constructor & Destructor Documentation

◆ BasicSVMAdapterTempl()

template<typename FV , typename STDATA , typename MCSVMTYPE >
svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::BasicSVMAdapterTempl ( )
inline

Definition at line 112 of file BasicSVMAdapterTempl.hh.

Member Function Documentation

◆ setProgressReporter()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::setProgressReporter ( ProgressReporter pr)
inlinevirtual

set progress reporter object.

0 means no progress reporting. You are still the owner of this object, so you are responsible, that it exists during further calls to train(), etc. and that it is deleted afterwards

Parameters
prpointer to ProgressReporter object or 0 if no progress reposting is desired

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 116 of file BasicSVMAdapterTempl.hh.

◆ loadParameters() [1/3]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::loadParameters ( STDATA &  stData)
inlinevirtual

Read all parameters (e.g.

cost, gamma, etc) for the SVM from given structured data (e.g. an StDataASCII object). For non-existing keys the parameters remain unchanged, e.g. if key "cost" does not exist in the given map, the cost of the TwoClassSVMc will not be changed

Parameters
stDatastructured data containing parameters as key/value pairs
Exceptions
.depending on your STDATA class

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 124 of file BasicSVMAdapterTempl.hh.

◆ loadParameters() [2/3]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::loadParameters ( StDataASCII stData)
inlinevirtual

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 130 of file BasicSVMAdapterTempl.hh.

◆ loadParameters() [3/3]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::loadParameters ( StDataCmdLine stData)
inlinevirtual

Same as loadParameters, but for Parameters from command line.

The StDataCmdLine keeps track of unused parameters

Parameters

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 136 of file BasicSVMAdapterTempl.hh.

◆ loadModel()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::loadModel ( STDATA &  stData)
inlinevirtual

load model data from stData into SVM's.

See documentation of this method in inherited classes for details.

Parameters
stDatastructured data containing parameters as key/value pairs
Exceptions
.depending on your STDATA class

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 143 of file BasicSVMAdapterTempl.hh.

◆ saveParameters() [1/2]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::saveParameters ( STDATA &  stData) const
inlinevirtual

store all parameters of the SVM to given map

Parameters
stData(output) structured data containing parameters as key/value pairs

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 149 of file BasicSVMAdapterTempl.hh.

◆ saveParameters() [2/2]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::saveParameters ( StDataASCII stData) const
inlinevirtual

same as saveParameters(), but with fixed StDataASCII class independent from given STDATA template parameter.

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 154 of file BasicSVMAdapterTempl.hh.

◆ saveOnlyKernelParameters()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::saveOnlyKernelParameters ( StDataASCII stData) const
inlinevirtual

save only Kernel Parameters (this is used for user information and to detect in grid search, wether a kernel parameter is changed

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 159 of file BasicSVMAdapterTempl.hh.

◆ saveModel()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::saveModel ( STDATA &  stData) const
inlinevirtual

save resulting model from training process into given map

Parameters
stData(output) structured data containing parameters as key/value pairs

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 166 of file BasicSVMAdapterTempl.hh.

◆ saveTrainingInfos() [1/2]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::saveTrainingInfos ( STDATA &  stData,
int  detailLevel = 1 
)
inlinevirtual

save additional trainnig infos to given structured data

Parameters
stData(output) structured data containing parameters as key/value pairs
detailLevel0: nothing, 1: only statistics, 2: training infos from all two-class trainings. Default 1

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 171 of file BasicSVMAdapterTempl.hh.

◆ saveTrainingInfos() [2/2]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::saveTrainingInfos ( StDataASCII stData,
int  detailLevel = 1 
)
inlinevirtual

same as saveTrainingInfos(), but with fixed StDataASCII class independent from given STDATA template parameter.

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 177 of file BasicSVMAdapterTempl.hh.

◆ updateKernelCache() [1/2]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::updateKernelCache ( const GroupedTrainingData< FV > &  trainData)
inlinevirtual

call updateCache() of selected kernel, e.g., for Kernel_MATRIX this will setup the internal cache matrix.

For pure Kernel_LINEAR or similar, this is an empty operation, so you can call it for every Kernel without negative effects. Before calling, please ensure that your feature vectors have correct uniqueId()'s

Parameters
trainDataStructure with pointers to feature-vectors

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 183 of file BasicSVMAdapterTempl.hh.

◆ updateKernelCache() [2/2]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::updateKernelCache ( const SVM_Problem< FV > &  problem)
inlinevirtual

same as previous updateKernelCache() method, just for feature vectors that are stored within an SVM_Problem object Before calling, please ensure that your feature vectors have correct uniqueId()'s

Parameters
problemStructure with pointers to feature-vectors

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 191 of file BasicSVMAdapterTempl.hh.

◆ updateTestKernelCache()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::updateTestKernelCache ( typename std::vector< FV >::iterator  FV_begin,
const typename std::vector< FV >::iterator &  FV_end 
)
inlinevirtual

Load Test Kernel Cache.

Parameters
FV_beginbegin of test-feature-vectors.
FV_endend of test-feature-vectors.

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 199 of file BasicSVMAdapterTempl.hh.

◆ train() [1/4]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::train ( const GroupedTrainingData< FV > &  trainData)
inlinevirtual

train SVM with given training data.

(multi class interface) this is the basic method, all others will call this one. The The resulting model is stored internally and can be accessd via saveModel(), or used for classify()

Parameters
trainDataStructure with pointers to feature-vectors sorted by classes, the class start indizes and a classIndexToLabel translastion table

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 215 of file BasicSVMAdapterTempl.hh.

◆ train() [2/4]

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::train ( const SVM_Problem< FV > &  problem)
inlinevirtual

train SVM with given Feature Vectors.

(general SVM interface – may also be used for one-class problems in future)

Parameters
problemStructure with pointers to feature-vectors and y's

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 223 of file BasicSVMAdapterTempl.hh.

◆ clearKernelCache()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::clearKernelCache ( )
inlinevirtual

call clearCache() method of selected kernel, e.g., for Kernel_MATRIX this will clear the internal cache matrix.

You should call this method if you used updateCache() before training and now want to use the SVM for the classification of vectors, that are not within the training data.

ATTENTION: If you don't clear the Cache before classification with a kernel like Kernel_MATRIX or Kernel_SCALE, only the uniqueID() of the feature vectors will be used

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 229 of file BasicSVMAdapterTempl.hh.

◆ classify()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual double svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::classify ( const FV &  testObject)
inlinevirtual

classify the given Feature Vector.

Parameters
testObjecttest object.
Exceptions

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 235 of file BasicSVMAdapterTempl.hh.

◆ saveClassificationDetailsASCII()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::saveClassificationDetailsASCII ( StDataASCII stData) const
inlinevirtual

classify the given Feature Vector.

Parameters
testObjecttest object.
[out]detailedResultsVecvector with detailed results (results of all two class classifications)
Returns
Label of best matching class or predicted value for One-class SVM's

save classification details. Here the ordered labeles as "labels" and the according decision values as "dec_values". For this to work you must have called setStoreClassificationDetailsFlag( true) before classify()

Parameters
resultVectorresults from the classification
stDatastructured data, where to store the details

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 260 of file BasicSVMAdapterTempl.hh.

◆ computeTrainKernelMatrix()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::computeTrainKernelMatrix ( float **  kmatrix,
const std::vector< FV > &  featureVectors 
)
inlinevirtual

Evaluate kernel matrix of the svm.

A square matrix is generated with the current 2-class-svm-kernel. Assumption: memory is already allocated for kmatrix.

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 266 of file BasicSVMAdapterTempl.hh.

◆ nClasses()

template<typename FV , typename STDATA , typename MCSVMTYPE >
virtual int svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::nClasses ( ) const
inlinevirtual

get number of Classes (loadModel() or train() must have been called before)

Returns
number of Classes

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 284 of file BasicSVMAdapterTempl.hh.

◆ classIndexToLabel()

template<typename FV , typename STDATA , typename MCSVMTYPE >
double svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::classIndexToLabel ( unsigned int  classIndex) const
inlinevirtual

map classIndex to label (loadModel() or train() must have been called before)

Parameters
classIndexthe index of the class (when sorted by labels)
Returns
the according label

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 289 of file BasicSVMAdapterTempl.hh.

◆ nSupportVectors()

template<typename FV , typename STDATA , typename MCSVMTYPE >
size_t svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::nSupportVectors ( ) const
inlinevirtual

returns number of SV in model

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 294 of file BasicSVMAdapterTempl.hh.

◆ getSupportVector()

template<typename FV , typename STDATA , typename MCSVMTYPE >
FV* svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::getSupportVector ( int  i) const
inlinevirtual

returns ith SV in model

Parameters
ithe index of the SV

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 300 of file BasicSVMAdapterTempl.hh.

◆ getTwoClassModels() [1/2]

template<typename FV , typename STDATA , typename MCSVMTYPE >
std::vector<const typename svt::Model<FV>* > svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::getTwoClassModels ( ) const
inlinevirtual

returns vector containing pointers to all TwoClassModels

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 305 of file BasicSVMAdapterTempl.hh.

◆ getTwoClassModels() [2/2]

template<typename FV , typename STDATA , typename MCSVMTYPE >
std::vector<typename svt::Model<FV>* > svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::getTwoClassModels ( )
inlinevirtual

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 315 of file BasicSVMAdapterTempl.hh.

◆ optimizeLinearModel()

template<typename FV , typename STDATA , typename MCSVMTYPE >
void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::optimizeLinearModel ( )
inlinevirtual

optimize model for faster classification

Implements svt::BasicSVMAdapter< FV, STDATA >.

Definition at line 325 of file BasicSVMAdapterTempl.hh.

◆ saveTrainingInfosTempl()

template<typename FV , typename STDATA , typename MCSVMTYPE >
template<typename STDATA2 >
void svt::BasicSVMAdapterTempl< FV, STDATA, MCSVMTYPE >::saveTrainingInfosTempl ( STDATA2 &  stData,
int  detailLevel 
)
inlineprotected

◆ train() [3/4]

template<typename FV, typename STDATA = StDataASCIIFile>
template<typename ForwardIter >
void svt::BasicSVMAdapter< FV, STDATA >::train ( ForwardIter  FV_begin,
const ForwardIter &  FV_end 
)
inlineinherited

train the Multi Class SVM with the given feature vectors.

The FeatureVector-Container must contain the Feature vectors directly, e.g., std::vector<MyFeatureVec>.

Parameters
FV_beginiterator to the first element of your FeatureVector-Container
FV_enditerator to one past the last element of your FeatureVector-Container

Definition at line 344 of file BasicSVMAdapter.hh.

◆ train() [4/4]

template<typename FV, typename STDATA = StDataASCIIFile>
template<typename ForwardIter , typename Accessor >
void svt::BasicSVMAdapter< FV, STDATA >::train ( ForwardIter  FV_begin,
const ForwardIter &  FV_end,
Accessor  accessor 
)
inlineinherited

same as train(), but you can specify an Accessor for accessing the elements of your container.

This accessor must return a reference to the corresponding feature vector. Use DirectAccessor for containers like std::vector<FV> and DereferencingAccessor for containers like std::vector<FV*>

Parameters
FVP_beginiterator to the first element of your PointerToFeatureVector-Container
FVP_enditerator to one past the last element of your PointerToFeatureVector-Container
accessorfunctor, which accesses the feature vector in the container

Definition at line 367 of file BasicSVMAdapter.hh.

◆ setStoreClassificationDetailsFlag()

template<typename FV, typename STDATA = StDataASCIIFile>
void svt::BasicSVMAdapter< FV, STDATA >::setStoreClassificationDetailsFlag ( bool  f)
inlineinherited

Definition at line 393 of file BasicSVMAdapter.hh.

◆ getStoreClassificationDetailsFlag()

template<typename FV, typename STDATA = StDataASCIIFile>
bool svt::BasicSVMAdapter< FV, STDATA >::getStoreClassificationDetailsFlag ( ) const
inlineinherited

Definition at line 398 of file BasicSVMAdapter.hh.

Field Documentation

◆ _storeClassificationDetailsFlag

template<typename FV, typename STDATA = StDataASCIIFile>
bool svt::BasicSVMAdapter< FV, STDATA >::_storeClassificationDetailsFlag
protectedinherited

The documentation for this class was generated from the following file: