kmeans
k-means clustering in C++
Loading...
Searching...
No Matches
Initialize.hpp
Go to the documentation of this file.
1#ifndef KMEANS_INITIALIZE_HPP
2#define KMEANS_INITIALIZE_HPP
3
4#include <utility>
5#include <type_traits>
6
7#include "Matrix.hpp"
8#include "utils.hpp"
9
15namespace kmeans {
16
28template<typename Index_, typename Data_, typename Cluster_, typename Float_, class Matrix_ = Matrix<Index_, Data_> >
30public:
34 Initialize() = default;
35 Initialize(Initialize&&) = default;
36 Initialize(const Initialize&) = default;
37 Initialize& operator=(Initialize&&) = default;
38 Initialize& operator=(const Initialize&) = default;
39 virtual ~Initialize() = default;
40
41 static_assert(std::is_same<decltype(I(std::declval<Matrix_>().num_observations())), Index_>::value);
42 static_assert(std::is_same<decltype(I(*(std::declval<Matrix_>().new_extractor()->get_observation(0)))), Data_>::value);
58 virtual Cluster_ run(const Matrix_& data, Cluster_ num_centers, Float_* centers) const = 0;
59};
60
61}
62
63#endif
Interface for matrix inputs.
Interface for k-means initialization algorithms.
Definition Initialize.hpp:29
virtual Cluster_ run(const Matrix_ &data, Cluster_ num_centers, Float_ *centers) const =0
Perform k-means clustering.
Definition compute_wcss.hpp:16