UFJF - Machine Learning Toolkit  0.51.8
clusterer/Clusterer.hpp
1 //
2 // Created by mateus558 on 20/03/2020.
3 //
4 
5 #ifndef UFJF_MLTK_CLUSTERER_HPP
6 #define UFJF_MLTK_CLUSTERER_HPP
7 #pragma once
8 
9 #include "ufjfmltk/core/DistanceMetric.hpp"
10 #include "ufjfmltk/core/Learner.hpp"
11 
12 namespace mltk{
16  namespace clusterer {
17  template<typename T, typename Callable = metrics::dist::Euclidean <T> >
18  class Clusterer : public Learner<T> {
19  protected:
21  Callable dist_function;
23  size_t n_clusters{};
25  std::vector<mltk::Point<T> > m_centers;
27  std::vector<mltk::Point<size_t> > m_clusters;
28 
29  public:
30  Clusterer() = default;
31 
32  explicit Clusterer(DataPointer <T> samples = nullptr, size_t clusters = 0)
33  : Learner<T>(samples), n_clusters(clusters) {}
34 
35  virtual std::vector<mltk::Point<size_t> > clusters() { return m_clusters; }
36  std::vector<mltk::Point<T> > centers() { return m_centers; }
37  };
38  }
39 }
40 
41 #endif //UFJF_MLTK_CLUSTERER_HPP
Definition: Learner.hpp:18
std::shared_ptr< Data< T > > samples
Samples used in the model training.
Definition: Learner.hpp:21
Definition: clusterer/Clusterer.hpp:18
size_t n_clusters
Number of clusters for the cluster method.
Definition: clusterer/Clusterer.hpp:23
Callable dist_function
Function used to compute the metrics between two points.
Definition: clusterer/Clusterer.hpp:21
std::vector< mltk::Point< size_t > > m_clusters
Clusters of points.
Definition: clusterer/Clusterer.hpp:27
std::vector< mltk::Point< T > > m_centers
Vector with the centers of the clusters.
Definition: clusterer/Clusterer.hpp:25
UFJF-MLTK main namespace for core functionalities.
Definition: classifier/Classifier.hpp:11