Deep Learning Algorithm Implementations 1.0.0
C++ implementations of fundamental deep learning algorithms
Loading...
Searching...
No Matches
/home/runner/work/deep-learning-algo-impls/deep-learning-algo-impls/include/ml/kmeans.hpp

A class implementing K-Means clustering algorithm.

A class implementing K-Means clustering algorithmThis class provides functionality for unsupervised clustering using the K-Means algorithm. It partitions data into k clusters by minimizing within-cluster sum of squares.

Template Parameters
TThe data type for matrix elements (typically float or double)
// Create a K-Means object with 3 clusters
KMeans<double> kmeans(3);
// Fit K-Means to data
Matrix<double> data = your_data_matrix;
kmeans.fit(data);
// Predict cluster labels for new data
std::vector<int> labels = kmeans.predict(data);
#pragma once
#include <limits>
#include <random>
#include <vector>
#include "../utils/matrix.hpp"
namespace ml {
using namespace utils;
template<typename T>
class KMeans {
public:
KMeans(size_t k, size_t max_iters = 300, T tol = 1e-4, int random_state = -1);
void fit(const Matrix<T> &data);
std::vector<int> predict(const Matrix<T> &data) const;
std::vector<int> fit_predict(const Matrix<T> &data);
T inertia() const;
size_t n_iter() const;
private:
size_t k_;
size_t max_iters_;
T tol_;
int random_state_;
Matrix<T> centroids_;
T inertia_;
size_t n_iter_;
bool is_fitted_;
void init_centroids(const Matrix<T> &data);
std::vector<int> assign_clusters(const Matrix<T> &data) const;
void update_centroids(const Matrix<T> &data, const std::vector<int> &labels);
T squared_distance(const std::vector<T> &point1, const std::vector<T> &point2) const;
};
using KMeansF = KMeans<float>;
using KMeansD = KMeans<double>;
} // namespace ml
T inertia() const
Get the within-cluster sum of squares (inertia)
Definition kmeans.cpp:96
std::vector< int > fit_predict(const Matrix< T > &data)
Fit the model and predict cluster labels.
Definition kmeans.cpp:82
std::vector< int > predict(const Matrix< T > &data) const
Predict cluster labels for the given data.
Definition kmeans.cpp:74
Matrix< T > cluster_centers() const
Get the cluster centroids.
Definition kmeans.cpp:88
size_t n_iter() const
Get the number of iterations performed.
Definition kmeans.cpp:104
void fit(const Matrix< T > &data)
Fit the K-Means model to the data.
Definition kmeans.cpp:20
Namespace containing traditional machine learning algorithms.
Definition kmeans.hpp:15
KMeans< double > KMeansD
Definition kmeans.hpp:142
KMeans< float > KMeansF
Type aliases for common use cases.
Definition kmeans.hpp:141