Program Listing for File kmeans.h

Return to documentation for file (include/cpphots/clustering/kmeans.h)

#ifndef CPPHOTS_CLUSTERING_KMEANS_H
#define CPPHOTS_CLUSTERING_KMEANS_H

#include "../types.h"
#include "../interfaces/clustering.h"
#include "utils.h"

namespace cpphots {

class KMeansClusterer : public interfaces::Clonable<KMeansClusterer, interfaces::Clusterer>, public ClustererHistogramMixin, public ClustererOfflineMixin {

public:

    KMeansClusterer();

    KMeansClusterer(uint16_t clusters, uint16_t max_iterations = 1000);

    uint16_t cluster(const TimeSurfaceType& surface) override;

    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;

    void train(const std::vector<TimeSurfaceType>& tss) override;

    void toStream(std::ostream& out) const override;

    void fromStream(std::istream& in) override;

private:
    std::vector<TimeSurfaceType> centroids;
    uint16_t clusters, max_iterations;

};

}

#endif