KMeansOnline.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. /** online kmeans clustering */
  16. class KMeansOnline : public ClusterOnline
  17. {
  18. protected:
  19. size_t numClusters;
  20. double gamma;
  21. public:
  22. /** simple constructor */
  23. KMeansOnline( size_t numClusters, double gamma = 1.0 );
  24. /** simple destructor */
  25. virtual ~KMeansOnline();
  26. // refactor-nice.pl: check this substitution
  27. // old: int updateClusters ( const Vector & x );
  28. int updateClusters ( const NICE::Vector & x );
  29. void init ();
  30. /**
  31. * Cluster algorithm using examples
  32. * @param ex input examples
  33. */
  34. void cluster( const Examples &ex);
  35. /**
  36. * returns the distance to the centre of each cluster
  37. * @param vin input vector
  38. * @param dist distance
  39. * @param size how much centres should considered
  40. * @param hard use a hard assignment (all values = 1 or 0) or not
  41. */
  42. void getDist(const NICE::Vector &vin, SparseVector &dist, int size = 1, bool hard = false);
  43. };
  44. } // namespace
  45. #endif