VCTransform.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /**
  2. * @file VCTransform.cpp
  3. // refactor-nice.pl: check this substitution
  4. // old: * @brief Vector Transform
  5. * @brief NICE::Vector Transform
  6. * @author Michael Koch
  7. * @date 11/28/2007
  8. */
  9. #include <iostream>
  10. #include <fstream>
  11. #include "vislearning/classifier/vclassifier/VCTransform.h"
  12. #include "core/basics/FileMgt.h"
  13. #include "vislearning/math/ftransform/PCA.h"
  14. using namespace OBJREC;
  15. using namespace std;
  16. // refactor-nice.pl: check this substitution
  17. // old: using namespace ice;
  18. using namespace NICE;
  19. VCTransform::VCTransform(const Config *conf, VecClassifier * classifier,
  20. FTransform * transform)
  21. {
  22. this->classifier = classifier;
  23. this->transform = transform;
  24. this->dimension = conf->gI("FTransform", "dimension", 10);
  25. this->mode = conf->gI("FTransform", "mode", 0);
  26. transformedSet.clear();
  27. }
  28. VCTransform::~VCTransform()
  29. {
  30. }
  31. /** classify using simple vector */
  32. ClassificationResult VCTransform::classify(const NICE::Vector & x) const
  33. {
  34. NICE::Vector transformed_vector = transform->getFeatureVector(x);
  35. cerr << "PCA: transformed-vector: " << transformed_vector << endl;
  36. return this->classifier->classify(transformed_vector);
  37. }
  38. void VCTransform::teach(const LabeledSetVector & teachSet)
  39. {
  40. maxClassNo = teachSet.getMaxClassno();
  41. int n = teachSet.count();
  42. int d = teachSet.dimension();
  43. NICE::Matrix X = Matrix(n, d);
  44. //get input data
  45. uint featurecount = 0;
  46. LOOP_ALL(teachSet)
  47. {
  48. EACH(classno,x);
  49. for (uint k = 0; k < x.size(); ++k)
  50. {
  51. X(featurecount, k) = x[k];
  52. }
  53. ++featurecount;
  54. }
  55. //learning Ftransform
  56. transform->calculateBasis(X, this->dimension, this->mode);
  57. //save transformed Vectors
  58. LOOP_ALL(teachSet)
  59. {
  60. EACH(classno,x);
  61. NICE::Vector transformed_vector = transform->getFeatureVector(x);
  62. cerr << "PCA: transformed-vector: " << transformed_vector << endl;
  63. transformedSet.add(classno, transformed_vector);
  64. }
  65. this->classifier->teach(transformedSet);
  66. }
  67. void VCTransform::finishTeaching()
  68. {
  69. this->classifier->finishTeaching();
  70. }
  71. void VCTransform::restore(std::istream & is, int format)
  72. {
  73. fprintf(stderr, "NOT YET IMPLEMENTED !!\n");
  74. exit(-1);
  75. }
  76. void VCTransform::store(std::ostream & is, int format) const
  77. {
  78. fprintf(stderr, "NOT YET IMPLEMENTED !!\n");
  79. exit(-1);
  80. }
  81. void VCTransform::clear()
  82. {
  83. fprintf(stderr, "NOT YET IMPLEMENTED !!\n");
  84. exit(-1);
  85. }