KMeans.h 701 B

12345678910111213141516171819202122232425262728293031323334
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef KMEANS_H
  3. #define KMEANS_H
  4. #include <atomic>
  5. #include <vector>
  6. #include <limits>
  7. #include <mutex>
  8. #include "SamplesBuffer.h"
  9. class KMeans {
  10. public:
  11. KMeans(size_t NumClusters = 2) : NumClusters(NumClusters) {
  12. MinDist = std::numeric_limits<CalculatedNumber>::max();
  13. MaxDist = std::numeric_limits<CalculatedNumber>::min();
  14. };
  15. void train(SamplesBuffer &SB, size_t MaxIterations);
  16. CalculatedNumber anomalyScore(SamplesBuffer &SB);
  17. private:
  18. size_t NumClusters;
  19. std::vector<DSample> ClusterCenters;
  20. CalculatedNumber MinDist;
  21. CalculatedNumber MaxDist;
  22. std::mutex Mutex;
  23. };
  24. #endif /* KMEANS_H */