/** * @file testClassifier.cpp * @brief main program for classifier evaluation * @author Erik Rodner * @date 2007-10-12 */ #include <objrec/nice_nonvis.h> #include <fstream> #include <iostream> #include <objrec/cbaselib/MultiDataset.h> #include <objrec/iclassifier/icgeneric/CSGeneric.h> #include <objrec/cbaselib/ClassificationResults.h> #include <objrec/iclassifier/codebook/MutualInformation.h> #include "objrec/classifier/classifierbase/FeaturePoolClassifier.h" #include <objrec/classifier/fpclassifier/randomforest/FPCRandomForestTransfer.h> #include <objrec/classifier/classifierinterfaces/VCFeaturePool.h> #include <objrec/baselib/Config.h> #include <objrec/baselib/Preprocess.h> #include <objrec/baselib/StringTools.h> #undef DEBUG using namespace OBJREC; using namespace NICE; using namespace std; int main (int argc, char **argv) { std::set_terminate(__gnu_cxx::__verbose_terminate_handler); Config conf ( argc, argv ); string fn = conf.gS("main", "input", "train.vec"); int format = conf.gI("main", "format", 0 ); string outfn = conf.gS("main", "output", "out.vec"); int dim = conf.gI("main", "dim", 0); ifstream fin(fn.c_str(), ifstream::in); LabeledSetVector test; vector<double> maxv(dim,numeric_limits<double>::min()); vector<double> minv(dim,numeric_limits<double>::max()); while(fin.good()) { Vector tmp(dim); for(int i = 0; i < dim; i++) { fin >> tmp[i]; maxv[i] = std::max(maxv[i],tmp[i]); minv[i] = std::min(minv[i],tmp[i]); } int label; fin >> label; label--; if(label > 5) label--; test.add(label, tmp); } for(int i = 0; i < dim; i++) { maxv[i] -= minv[i]; } for( map< int, vector<NICE::Vector *> >::iterator iter = test.begin(); iter != test.end(); ++iter ) { for(int j = 0; j < iter->second.size(); j++) { for(int i = 0; i < iter->second[j]->size(); i++) { (*(iter->second[j]))[i] = ((*(iter->second[j]))[i] - minv[i]) / maxv[i]; } } } test.save(outfn); fin.close(); return 0; }