convertFeatures2.cpp 2.0 KB

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