1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /**
- * @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;
- }
|