RegKNN.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**
  2. * @file RegKNN.h
  3. * @brief Implementation of k-Nearest-Neighbor algorithm for regression purposes
  4. * @author Frank Prüfer
  5. * @date 08/29/2013
  6. */
  7. #ifndef REGKNNINCLUDE
  8. #define REGKNNINCLUDE
  9. #include "core/vector/VectorT.h"
  10. #include "core/vector/VVector.h"
  11. #include "core/vector/MatrixT.h"
  12. #include "core/basics/Config.h"
  13. #include <core/vector/Distance.h>
  14. #include "vislearning/regression/regressionbase/RegressionAlgorithm.h"
  15. namespace OBJREC
  16. {
  17. class RegKNN : public RegressionAlgorithm
  18. {
  19. protected:
  20. int K;
  21. /** set of data points */
  22. NICE::VVector dataSet;
  23. /** set of responses according to dataset */
  24. std::vector<double> labelSet;
  25. /** used distance function */
  26. NICE::VectorDistance<double> *distancefunc;
  27. public:
  28. /** simple constructor */
  29. RegKNN ( const NICE::Config *conf, NICE::VectorDistance<double> *distancefunc = NULL );
  30. /** copy constructor */
  31. RegKNN ( const RegKNN & src );
  32. /** simple destructor */
  33. virtual ~RegKNN();
  34. /** clone function */
  35. RegKNN* clone (void) const;
  36. /** predict response using simple vector */
  37. double predict ( const NICE::Vector & x );
  38. /** teach whole set at once */
  39. void teach ( const NICE::VVector & dataSet, const NICE::Vector & labelSet );
  40. /** teach one data point at a time */
  41. void teach ( const NICE::Vector & x, const double & y );
  42. };
  43. } //namespace
  44. #endif