Program Listing for File cosine.h
↰ Return to documentation for file (include/cpphots/clustering/cosine.h)
#ifndef CPPHOTS_CLUSTERING_COSINE_H
#define CPPHOTS_CLUSTERING_COSINE_H
#include "../types.h"
#include "../interfaces/clustering.h"
#include "utils.h"
namespace cpphots {
class CosineClusterer : public interfaces::Clonable<CosineClusterer, interfaces::Clusterer>, public ClustererHistogramMixin, public ClustererOnlineMixin {
public:
CosineClusterer();
CosineClusterer(uint16_t clusters, TimeSurfaceScalarType homeostasis = 0.0);
uint16_t cluster(const TimeSurfaceType& surface) override;
// inherited methods
uint16_t getNumClusters() const override;
void addCentroid(const TimeSurfaceType& centroid) override;
const std::vector<TimeSurfaceType>& getCentroids() const override;
void clearCentroids() override;
bool hasCentroids() const override;
bool toggleLearning(bool enable = true) override;
void toStream(std::ostream& out) const override;
void fromStream(std::istream& in) override;
private:
std::vector<TimeSurfaceType> centroids;
std::vector<uint32_t> centroids_activations;
uint32_t tot_centroids_activations;
uint16_t clusters;
bool learning = true;
TimeSurfaceScalarType homeostasis;
};
}
#endif