logistic_regression.hpp
Go to the documentation of this file.
1 
14 #ifndef MLPACK_METHODS_LOGISTIC_REGRESSION_LOGISTIC_REGRESSION_HPP
15 #define MLPACK_METHODS_LOGISTIC_REGRESSION_LOGISTIC_REGRESSION_HPP
16 
17 #include <mlpack/prereqs.hpp>
18 #include <ensmallen.hpp>
19 
21 
22 namespace mlpack {
23 namespace regression {
24 
38 template<typename MatType = arma::mat>
40 {
41  public:
57  LogisticRegression(const MatType& predictors,
58  const arma::Row<size_t>& responses,
59  const double lambda = 0);
60 
77  LogisticRegression(const MatType& predictors,
78  const arma::Row<size_t>& responses,
79  const arma::rowvec& initialPoint,
80  const double lambda = 0);
81 
92  LogisticRegression(const size_t dimensionality = 0,
93  const double lambda = 0);
94 
110  template<typename OptimizerType>
111  LogisticRegression(const MatType& predictors,
112  const arma::Row<size_t>& responses,
113  OptimizerType& optimizer,
114  const double lambda);
115 
133  template<typename OptimizerType = ens::L_BFGS, typename... CallbackTypes>
134  double Train(const MatType& predictors,
135  const arma::Row<size_t>& responses,
136  CallbackTypes&&... callbacks);
137 
156  template<typename OptimizerType, typename... CallbackTypes>
157  double Train(const MatType& predictors,
158  const arma::Row<size_t>& responses,
159  OptimizerType& optimizer,
160  CallbackTypes&&... callbacks);
161 
163  const arma::rowvec& Parameters() const { return parameters; }
165  arma::rowvec& Parameters() { return parameters; }
166 
168  const double& Lambda() const { return lambda; }
170  double& Lambda() { return lambda; }
171 
183  template<typename VecType>
184  size_t Classify(const VecType& point,
185  const double decisionBoundary = 0.5) const;
186 
198  void Classify(const MatType& dataset,
199  arma::Row<size_t>& labels,
200  const double decisionBoundary = 0.5) const;
201 
208  void Classify(const MatType& dataset,
209  arma::mat& probabilities) const;
210 
225  double ComputeAccuracy(const MatType& predictors,
226  const arma::Row<size_t>& responses,
227  const double decisionBoundary = 0.5) const;
228 
237  double ComputeError(const MatType& predictors,
238  const arma::Row<size_t>& responses) const;
239 
241  template<typename Archive>
242  void serialize(Archive& ar, const uint32_t /* version */);
243 
244  private:
246  arma::rowvec parameters;
248  double lambda;
249 };
250 
251 } // namespace regression
252 } // namespace mlpack
253 
254 // Include implementation.
255 #include "logistic_regression_impl.hpp"
256 
257 #endif // MLPACK_METHODS_LOGISTIC_REGRESSION_LOGISTIC_REGRESSION_HPP
void serialize(Archive &ar, const uint32_t)
Serialize the model.
Linear algebra utility functions, generally performed on matrices or vectors.
The core includes that mlpack expects; standard C++ includes and Armadillo.
size_t Classify(const VecType &point, const double decisionBoundary=0.5) const
Classify the given point.
LogisticRegression(const MatType &predictors, const arma::Row< size_t > &responses, const double lambda=0)
Construct the LogisticRegression class with the given labeled training data.
double ComputeAccuracy(const MatType &predictors, const arma::Row< size_t > &responses, const double decisionBoundary=0.5) const
Compute the accuracy of the model on the given predictors and responses, optionally using the given d...
arma::rowvec & Parameters()
Modify the parameters (the b vector).
double Train(const MatType &predictors, const arma::Row< size_t > &responses, CallbackTypes &&... callbacks)
Train the LogisticRegression model on the given input data.
double ComputeError(const MatType &predictors, const arma::Row< size_t > &responses) const
Compute the error of the model.
const double & Lambda() const
Return the lambda value for L2-regularization.
double & Lambda()
Modify the lambda value for L2-regularization.
const arma::rowvec & Parameters() const
Return the parameters (the b vector).
The LogisticRegression class implements an L2-regularized logistic regression model, and supports training with multiple optimizers and classification.