convertFeatures2.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /**
  2. * @file testClassifier.cpp
  3. * @brief main program for classifier evaluation
  4. * @author Erik Rodner
  5. * @date 2007-10-12
  6. */
  7. #include <fstream>
  8. #include <iostream>
  9. #include <vislearning/cbaselib/MultiDataset.h>
  10. #include <objrec/iclassifier/icgeneric/CSGeneric.h>
  11. #include <vislearning/cbaselib/ClassificationResults.h>
  12. #include <objrec/iclassifier/codebook/MutualInformation.h>
  13. #include "vislearning/classifier/classifierbase/FeaturePoolClassifier.h"
  14. #include <vislearning/classifier/fpclassifier/randomforest/FPCRandomForestTransfer.h>
  15. #include <vislearning/classifier/classifierinterfaces/VCFeaturePool.h>
  16. #include "core/basics/Config.h"
  17. #include <vislearning/baselib/Preprocess.h>
  18. #include <core/basics/StringTools.h>
  19. #undef DEBUG
  20. using namespace OBJREC;
  21. using namespace NICE;
  22. using namespace std;
  23. int main( int argc, char **argv )
  24. {
  25. std::set_terminate( __gnu_cxx::__verbose_terminate_handler );
  26. Config conf( argc, argv );
  27. string fn = conf.gS( "main", "input", "train.vec" );
  28. int format = conf.gI( "main", "format", 0 );
  29. string outfn = conf.gS( "main", "output", "out.vec" );
  30. int dim = conf.gI( "main", "dim", 0 );
  31. ifstream fin( fn.c_str(), ifstream::in );
  32. LabeledSetVector test;
  33. vector<double> maxv( dim, numeric_limits<double>::min() );
  34. vector<double> minv( dim, numeric_limits<double>::max() );
  35. while ( fin.good() )
  36. {
  37. Vector tmp( dim );
  38. for ( int i = 0; i < dim; i++ )
  39. {
  40. fin >> tmp[i];
  41. maxv[i] = std::max( maxv[i], tmp[i] );
  42. minv[i] = std::min( minv[i], tmp[i] );
  43. }
  44. int label;
  45. fin >> label;
  46. label--;
  47. if ( label > 5 )
  48. label--;
  49. test.add( label, tmp );
  50. }
  51. for ( int i = 0; i < dim; i++ )
  52. {
  53. maxv[i] -= minv[i];
  54. }
  55. for ( map< int, vector<NICE::Vector *> >::iterator iter = test.begin(); iter != test.end(); ++iter )
  56. {
  57. for ( int j = 0; j < iter->second.size(); j++ )
  58. {
  59. for ( int i = 0; i < iter->second[j]->size(); i++ )
  60. {
  61. ( *( iter->second[j] ) )[i] = (( *( iter->second[j] ) )[i] - minv[i] ) / maxv[i];
  62. }
  63. }
  64. }
  65. test.save( outfn );
  66. fin.close();
  67. return 0;
  68. }