12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /**
- * @file testClassifier.cpp
- * @brief main program for classifier evaluation
- * @author Erik Rodner
- * @date 2007-10-12
- */
- #include <fstream>
- #include <iostream>
- #include <vislearning/cbaselib/MultiDataset.h>
- #include <objrec/iclassifier/icgeneric/CSGeneric.h>
- #include <vislearning/cbaselib/ClassificationResults.h>
- #include <objrec/iclassifier/codebook/MutualInformation.h>
- #include "vislearning/classifier/classifierbase/FeaturePoolClassifier.h"
- #include <vislearning/classifier/fpclassifier/randomforest/FPCRandomForestTransfer.h>
- #include <vislearning/classifier/classifierinterfaces/VCFeaturePool.h>
- #include "core/basics/Config.h"
- #include <vislearning/baselib/Preprocess.h>
- #include <core/basics/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;
- }
|