VCNearestNeighbour.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. #include "core/vector/VectorT.h"
  10. #include "core/vector/MatrixT.h"
  11. #include <core/vector/Distance.h>
  12. #include "vislearning/cbaselib/LabeledSet.h"
  13. #include "vislearning/classifier/classifierbase/VecClassifier.h"
  14. namespace OBJREC {
  15. /** Simple K-Nearest-Neighbour Implementation */
  16. class VCNearestNeighbour : public VecClassifier
  17. {
  18. protected:
  19. int K;
  20. LabeledSetVector teachSet;
  21. NICE::VectorDistance<double> *distancefunc;
  22. public:
  23. /** simple constructor */
  24. VCNearestNeighbour( const NICE::Config *conf, NICE::VectorDistance<double> *distancefunc = NULL );
  25. VCNearestNeighbour( const VCNearestNeighbour & src );
  26. /** simple destructor */
  27. virtual ~VCNearestNeighbour();
  28. /** classify using simple vector */
  29. ClassificationResult classify ( const NICE::Vector & x ) const;
  30. /** classify using a simple vector */
  31. void teach ( const LabeledSetVector & teachSet );
  32. void teach ( int classno, const NICE::Vector & x );
  33. void finishTeaching();
  34. VCNearestNeighbour *clone(void) const;
  35. void clear ();
  36. void store ( std::ostream & os, int format = 0 ) const;
  37. void restore ( std::istream & is, int format = 0 );
  38. };
  39. } // namespace
  40. #endif