adaboost_model.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_METHODS_ADABOOST_ADABOOST_MODEL_HPP
13 #define MLPACK_METHODS_ADABOOST_ADABOOST_MODEL_HPP
14 
15 #include <mlpack/core.hpp>
16 
17 // Use forward declaration instead of include to accelerate compilation.
18 class AdaBoost;
19 
20 namespace mlpack {
21 namespace adaboost {
22 
27 {
28  public:
30  {
33  };
34 
35  private:
37  arma::Col<size_t> mappings;
39  size_t weakLearnerType;
45  size_t dimensionality;
46 
47  public:
49  AdaBoostModel();
50 
52  AdaBoostModel(const arma::Col<size_t>& mappings,
53  const size_t weakLearnerType);
54 
56  AdaBoostModel(const AdaBoostModel& other);
57 
60 
62  AdaBoostModel& operator=(const AdaBoostModel& other);
63 
66 
68  const arma::Col<size_t>& Mappings() const { return mappings; }
70  arma::Col<size_t>& Mappings() { return mappings; }
71 
73  size_t WeakLearnerType() const { return weakLearnerType; }
75  size_t& WeakLearnerType() { return weakLearnerType; }
76 
78  size_t Dimensionality() const { return dimensionality; }
80  size_t& Dimensionality() { return dimensionality; }
81 
83  void Train(const arma::mat& data,
84  const arma::Row<size_t>& labels,
85  const size_t numClasses,
86  const size_t iterations,
87  const double tolerance);
88 
90  void Classify(const arma::mat& testData,
91  arma::Row<size_t>& predictions);
92 
94  void Classify(const arma::mat& testData,
95  arma::Row<size_t>& predictions,
96  arma::mat& probabilities);
97 
99  template<typename Archive>
100  void serialize(Archive& ar, const uint32_t /* version */)
101  {
102  if (cereal::is_loading<Archive>())
103  {
104  if (dsBoost)
105  delete dsBoost;
106  if (pBoost)
107  delete pBoost;
108 
109  dsBoost = NULL;
110  pBoost = NULL;
111  }
112 
113  ar(CEREAL_NVP(mappings));
114  ar(CEREAL_NVP(weakLearnerType));
115  if (weakLearnerType == WeakLearnerTypes::DECISION_STUMP)
116  ar(CEREAL_POINTER(dsBoost));
117  else if (weakLearnerType == WeakLearnerTypes::PERCEPTRON)
118  ar(CEREAL_POINTER(pBoost));
119  ar(CEREAL_NVP(dimensionality));
120  }
121 };
122 
123 } // namespace adaboost
124 } // namespace mlpack
125 
126 #endif
~AdaBoostModel()
Clean up memory.
void Classify(const arma::mat &testData, arma::Row< size_t > &predictions)
Classify test points.
Linear algebra utility functions, generally performed on matrices or vectors.
void serialize(Archive &ar, const uint32_t)
Serialize the model.
The AdaBoost class.
Definition: adaboost.hpp:81
size_t & Dimensionality()
Modify the dimensionality of the model.
The model to save to disk.
arma::Col< size_t > & Mappings()
Modify the mappings.
void Train(const arma::mat &data, const arma::Row< size_t > &labels, const size_t numClasses, const size_t iterations, const double tolerance)
Train the model, treat the data is all of the numeric type.
Include all of the base components required to write mlpack methods, and the main mlpack Doxygen docu...
size_t WeakLearnerType() const
Get the weak learner type.
AdaBoostModel()
Create an empty AdaBoost model.
#define CEREAL_POINTER(T)
Cereal does not support the serialization of raw pointer.
const arma::Col< size_t > & Mappings() const
Get the mappings.
AdaBoostModel & operator=(const AdaBoostModel &other)
Copy assignment operator.
size_t Dimensionality() const
Get the dimensionality of the model.
size_t & WeakLearnerType()
Modify the weak learner type.