VCNearestNeighbour.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /**
  2. * @file VCNearestNeighbour.h
  3. * @brief Simple K-Nearest-Neighbour Implementation
  4. * @author Erik Rodner
  5. * @date 10/25/2007
  6. */
  7. #ifndef VCNEARESTNEIGHBOURINCLUDE
  8. #define VCNEARESTNEIGHBOURINCLUDE
  9. #ifdef NOVISUAL
  10. #include <vislearning/nice_nonvis.h>
  11. #else
  12. #include <vislearning/nice.h>
  13. #endif
  14. #include <core/vector/Distance.h>
  15. #include "vislearning/cbaselib/LabeledSet.h"
  16. #include "vislearning/classifier/classifierbase/VecClassifier.h"
  17. namespace OBJREC {
  18. /** Simple K-Nearest-Neighbour Implementation */
  19. class VCNearestNeighbour : public VecClassifier
  20. {
  21. protected:
  22. int K;
  23. LabeledSetVector teachSet;
  24. NICE::VectorDistance<double> *distancefunc;
  25. public:
  26. /** simple constructor */
  27. VCNearestNeighbour( const NICE::Config *conf, NICE::VectorDistance<double> *distancefunc = NULL );
  28. VCNearestNeighbour( const VCNearestNeighbour & src );
  29. /** simple destructor */
  30. virtual ~VCNearestNeighbour();
  31. /** classify using simple vector */
  32. ClassificationResult classify ( const NICE::Vector & x ) const;
  33. /** classify using a simple vector */
  34. void teach ( const LabeledSetVector & teachSet );
  35. void teach ( int classno, const NICE::Vector & x );
  36. void finishTeaching();
  37. VCNearestNeighbour *clone(void) const;
  38. void clear ();
  39. void store ( std::ostream & os, int format = 0 ) const;
  40. void restore ( std::istream & is, int format = 0 );
  41. };
  42. } // namespace
  43. #endif