UFJF - Machine Learning Toolkit  0.51.8
classifier/Classifier.hpp
Go to the documentation of this file.
1 
6 #ifndef CLASSIFIER__HPP
7 #define CLASSIFIER__HPP
8 
9 
10 #include "ufjfmltk/core/Learner.hpp"
11 namespace mltk{
15  namespace classifier {
16  template<typename T>
17  class Classifier : virtual public Learner<T> {
18  // Attributes
19  protected :
21  bool hasInitialSolution = false;
23  std::vector<Point<T> > svs;
27  double gamma = 0;
28 
29  // Operations
30  public :
31 
32  Classifier<T>() {}
33 
34  Classifier<T>(DataPointer<T> samples) : Learner<T>(samples) {}
35 
36  Classifier<T>(const Classifier<T> &classifier)
37  : Learner<T>(classifier) {
38  this->hasInitialSolution = classifier.hasInitialSolution;
39  this->gamma = classifier.gamma;
40  }
41 
42  virtual double evaluateProbability(const mltk::Point<double>& p){return 0.0;}
43  mltk::Point<int> batchEvaluateProbability(const mltk::Data<T>& data);
44  /*********************************************
45  * Getters *
46  *********************************************/
47 
52  Solution getSolution() const { return solution; }
53 
59 
60  /*********************************************
61  * Setters *
62  *********************************************/
67  inline void setGamma(double gamma) { this->gamma = gamma; }
68 
73  void setW(std::vector<double> w) { this->solution.w = w; }
74 
79  void setSolution(Solution solution) { this->solution = solution; }
80  };
81 
82  template<typename T>
83  mltk::Point<int> Classifier<T>::batchEvaluateProbability(const Data <T> &data) {
84  mltk::Point<int> preds(data.size());
85  std::transform(data.begin(), data.end(), preds.begin(), [this](auto point){
86  return this->evaluateProbability(*point);
87  });
88  return preds;
89  }
90  }
91 }
92 
93 #endif
size_t size() const
Returns the size of the dataset.
Definition: Data.hpp:208
Definition: Learner.hpp:18
std::shared_ptr< Data< T > > samples
Samples used in the model training.
Definition: Learner.hpp:21
Definition: Solution.hpp:13
mltk::Point< double > w
Weights vector.
Definition: Solution.hpp:17
Definition: classifier/Classifier.hpp:17
Solution * getSolutionRef()
getSolution Returns a reference to the solution of the classifier.
Definition: classifier/Classifier.hpp:58
std::vector< Point< T > > svs
Support vectors points.
Definition: classifier/Classifier.hpp:23
void setW(std::vector< double > w)
setW Set the weights vector of the classifier.
Definition: classifier/Classifier.hpp:73
Solution getSolution() const
getSolution Returns the solution of the classifier.
Definition: classifier/Classifier.hpp:52
void setGamma(double gamma)
Set the gamma (margin) of the classifier.
Definition: classifier/Classifier.hpp:67
void setSolution(Solution solution)
setSolution Set a solution for the classifier.
Definition: classifier/Classifier.hpp:79
double gamma
Classifier margin.
Definition: classifier/Classifier.hpp:27
bool hasInitialSolution
Inform if there's an initial solution.
Definition: classifier/Classifier.hpp:21
Solution solution
Classifier solution.
Definition: classifier/Classifier.hpp:25
UFJF-MLTK main namespace for core functionalities.
Definition: classifier/Classifier.hpp:11