3 #include "Clustering.hpp"
27 DLL_DECLSPEC
bool fit(Eigen::Ref<const Eigen::MatrixXd> data)
override;
34 const std::vector<unsigned int>&
labels()
const override
47 DLL_DECLSPEC
void set_seed(
unsigned int seed);
87 DLL_DECLSPEC std::pair<unsigned int, double>
assign_label(Eigen::Ref<const Eigen::VectorXd> x)
const;
103 std::vector<unsigned int> labels_;
104 std::vector<unsigned int> old_labels_;
105 Eigen::MatrixXd centroids_;
106 Eigen::MatrixXd old_centroids_;
107 Eigen::VectorXd work_vector_;
108 std::default_random_engine prng_;
109 std::shared_ptr<const CentroidsInitialiser> centroids_initialiser_;
110 double absolute_tolerance_;
112 unsigned int maximum_steps_;
113 unsigned int num_inits_;
114 unsigned int num_clusters_;
118 bool fit_once(Eigen::Ref<const Eigen::MatrixXd> data);
121 void assignment_step(Eigen::Ref<const Eigen::MatrixXd> data);
124 void update_step(Eigen::Ref<const Eigen::MatrixXd> data);
Naive K-means clustering method.
Definition: KMeans.hpp:18
double inertia() const
Sum of squared distances to the nearest centroid.
Definition: KMeans.hpp:93
void set_seed(unsigned int seed)
Sets PRNG seed.
void set_absolute_tolerance(double absolute_tolerance)
Sets absolute tolerance for convergence test: || old centroids - new centroids ||^2 < absolute tolera...
void set_number_initialisations(unsigned int number_initialisations)
Sets number of initialisations to try, to find the clusters with lowest inertia.
Definition: BallTree.hpp:10
const std::vector< unsigned int > & labels() const override
Returns a const reference to resulting cluster labels for each datapoint. Value make sense only if fi...
Definition: KMeans.hpp:34
unsigned int number_clusters() const override
Returns the number of clusters.
Definition: KMeans.hpp:29
const Eigen::MatrixXd & centroids() const override
Returns a const reference to the matrix of cluster centroids (in columns).
Definition: KMeans.hpp:39
void set_maximum_steps(unsigned int maximum_steps)
Sets maximum number of K-means steps.
std::pair< unsigned int, double > assign_label(Eigen::Ref< const Eigen::VectorXd > x) const
Given a data point x, assign it to its cluster and return the correct label and squared Euclidean dis...
Abstract clustering model.
Definition: Clustering.hpp:17
void set_centroids_initialiser(std::shared_ptr< const CentroidsInitialiser > centroids_initialiser)
Sets centroids initialiser.
void set_verbose(bool verbose)
Switches between verbose and quiet mode.
Definition: KMeans.hpp:77
bool converged() const override
Reports if the model converged.
Definition: KMeans.hpp:98
KMeans(unsigned int number_clusters)
Constructs a K-means model ready to fit.
bool fit(Eigen::Ref< const Eigen::MatrixXd > data) override
Fits the model.