12345678910111213141516171819202122232425262728293031323334 |
- // SPDX-License-Identifier: GPL-3.0-or-later
- #ifndef KMEANS_H
- #define KMEANS_H
- #include <atomic>
- #include <vector>
- #include <limits>
- #include <mutex>
- #include "SamplesBuffer.h"
- class KMeans {
- public:
- KMeans(size_t NumClusters = 2) : NumClusters(NumClusters) {
- MinDist = std::numeric_limits<CalculatedNumber>::max();
- MaxDist = std::numeric_limits<CalculatedNumber>::min();
- };
- void train(SamplesBuffer &SB, size_t MaxIterations);
- CalculatedNumber anomalyScore(SamplesBuffer &SB);
- private:
- size_t NumClusters;
- std::vector<DSample> ClusterCenters;
- CalculatedNumber MinDist;
- CalculatedNumber MaxDist;
- std::mutex Mutex;
- };
- #endif /* KMEANS_H */
|