52 #ifndef CROSSVALIDATOR_HH 53 #define CROSSVALIDATOR_HH 76 std::vector<int>& subsetIndizesForFVs);
79 std::vector<int>& subsetIndizesForFVs);
114 template<
typename FV,
typename SVMTYPE,
typename PROBLEM = GroupedTrainingData<FV> >
124 typedef typename SVMTYPE::template Traits<FV>::ModelType
ModelType;
133 _classificationDelta( 0.01),
138 _storeClassificationDetailsFlag( false)
172 _svm->setProgressReporter( pr);
224 _svm->updateKernelCache( _problem->FV_begin(),
242 _svm->clearKernelCache();
263 "preprocess training data", 0,
"");
266 _svm->train( *_problem, _fullModel);
271 "preprocess training data", 1.0,
"");
299 int doFullCV(
const std::vector<int>& subsetIndexByUID,
300 std::vector<double>& predictedClassLabelByUID);
347 const std::vector<int>& subsetIndexByUID,
348 std::vector<double>& predictedClassLabelByUID,
349 ModelType* partialModel = 0);
359 _classificationDelta = d;
364 return _classificationDelta;
370 _storeClassificationDetailsFlag = f;
375 return _storeClassificationDetailsFlag;
390 template<
typename STDATA>
394 if( detailLevel >= 1)
396 statistics.setValue(
"sum_nFV", _sum_nFV);
397 statistics.setValue(
"sum_nSV", _sum_nSV);
398 statistics.setValue(
"sum_nBSV", _sum_nBSV);
399 statistics.setValue(
"nSV_per_nFV",
double(_sum_nSV) / _sum_nFV);
400 statistics.setValue(
"nBSV_per_nSV",
double( _sum_nBSV) / _sum_nSV);
417 return _classificationDetailsByUID;
422 template<
typename STDATA>
427 _svm->loadParameters(stData);
432 template<
typename STDATA>
437 _svm->saveParameters(stData);
448 const PROBLEM* _problem;
449 ModelType _fullModel;
450 double _classificationDelta;
452 unsigned int _sum_nSV;
453 unsigned int _sum_nFV;
454 unsigned int _sum_nBSV;
455 bool _storeClassificationDetailsFlag;
456 std::vector< StDataASCII > _classificationDetailsByUID;
462 #include "CrossValidator.icc" void preprocessTrainingData()
trains all two-class SVM's with the whole data set.
void saveParameters(STDATA &stData)
virtual void reportProgress(int taskLevel, const std::string &taskName, float completenessPercent, const std::string &completenessPlainText)
This method is called if some progress was made.
#define CHECK_MEMBER_TEMPLATE(c)
void generateShuffledSubsets(int nFeatureVectors, int nSubsets, std::vector< int > &subsetIndizesForFVs)
CrossValidator(SVMTYPE *svm=0)
The CrossValidator class provides a highly optimized cross validation algorithm.
void generateSortedSubsets(int nFeatureVectors, int nSubsets, std::vector< int > &subsetIndizesForFVs)
#define SVM_ASSERT(condition)
const ModelType & fullModel() const
#define CHECK_CLASS_TEMPLATE1(c)
void setClassificationDelta(double d)
#define CHECK_CLASS_TEMPLATE2(c)
double classificationDelta() const
void clearKernelCache()
call clearKernelCache() of selected svm.
bool getStoreClassificationDetailsFlag() const
int doFullCV(const std::vector< int > &subsetIndexByUID, std::vector< double > &predictedClassLabelByUID)
do a full cross validation.
SVMTYPE::template Traits< FV >::ModelType ModelType
int doPartialCV(int subsetIndex, const std::vector< int > &subsetIndexByUID, std::vector< double > &predictedClassLabelByUID, ModelType *partialModel=0)
Do one part of a cross validation.
void setTrainingData(const PROBLEM *problem)
set the training data.
const PROBLEM * trainingData() const
get pointer to training data, that was set with setTrainingData().
const int TASK_LEVEL_CROSS_VAL
void updateKernelCache()
call updateKernelCache() of selected svm with given problem.
Ensure that TESTCLASS provides a setProgressReporter() method.
const std::vector< StDataASCII > & classificationDetailsByUID() const
get classification details for each uid from last full CV or parital CV.
void saveStatistics(STDATA &statistics, int detailLevel=1)
save cross validation statistics.
void setProgressReporter(ProgressReporter *pr)
void setStoreClassificationDetailsFlag(bool f)
void loadParameters(STDATA &stData)