convertFeatures2.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. }