KMeansOnline.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * @file KMeansOnline.h
  3. * @brief online kmeans clustering
  4. * @author Erik Rodner
  5. * @date 02/13/2008
  6. */
  7. #ifndef KMEANSONLINEINCLUDE
  8. #define KMEANSONLINEINCLUDE
  9. #include "core/vector/VectorT.h"
  10. #include "core/vector/MatrixT.h"
  11. #include "core/basics/Config.h"
  12. #include "ClusterOnline.h"
  13. #include "vislearning/cbaselib/Example.h"
  14. namespace OBJREC
  15. {
  16. /** online kmeans clustering */
  17. class KMeansOnline : public ClusterOnline
  18. {
  19. protected:
  20. size_t numClusters;
  21. double gamma;
  22. public:
  23. /** simple constructor */
  24. KMeansOnline ( size_t numClusters, double gamma = 1.0 );
  25. /** simple destructor */
  26. virtual ~KMeansOnline();
  27. int updateClusters ( const NICE::Vector & x );
  28. void init ();
  29. /**
  30. * Cluster algorithm using examples
  31. * @param ex input examples
  32. */
  33. void cluster ( const Examples &ex );
  34. /**
  35. * returns the distance to the centre of each cluster
  36. * @param vin input vector
  37. * @param dist distance
  38. * @param size how much centres should considered
  39. * @param hard use a hard assignment (all values = 1 or 0) or not
  40. */
  41. void getDist ( const NICE::Vector &vin, NICE::SparseVector &dist, int size = 1, bool hard = false );
  42. };
  43. } // namespace
  44. #endif