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>
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 
129  template<typename OptimizerType = mlpack::optimization::L_BFGS>
130  void Train(const MatType& predictors,
131  const arma::Row<size_t>& responses);
132 
149  template<typename OptimizerType>
150  void Train(const MatType& predictors,
151  const arma::Row<size_t>& responses,
152  OptimizerType& optimizer);
153 
155  const arma::rowvec& Parameters() const { return parameters; }
157  arma::rowvec& Parameters() { return parameters; }
158 
160  const double& Lambda() const { return lambda; }
162  double& Lambda() { return lambda; }
163 
175  template<typename VecType>
176  size_t Classify(const VecType& point,
177  const double decisionBoundary = 0.5) const;
178 
190  void Classify(const MatType& dataset,
191  arma::Row<size_t>& labels,
192  const double decisionBoundary = 0.5) const;
193 
200  void Classify(const MatType& dataset,
201  arma::mat& probabilities) const;
202 
217  double ComputeAccuracy(const MatType& predictors,
218  const arma::Row<size_t>& responses,
219  const double decisionBoundary = 0.5) const;
220 
229  double ComputeError(const MatType& predictors,
230  const arma::Row<size_t>& responses) const;
231 
233  template<typename Archive>
234  void serialize(Archive& ar, const unsigned int /* version */);
235 
236  private:
238  arma::rowvec parameters;
240  double lambda;
241 };
242 
243 } // namespace regression
244 } // namespace mlpack
245 
246 // Include implementation.
247 #include "logistic_regression_impl.hpp"
248 
249 #endif // MLPACK_METHODS_LOGISTIC_REGRESSION_LOGISTIC_REGRESSION_HPP
.hpp
Definition: add_to_po.hpp:21
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 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.
void serialize(Archive &ar, const unsigned int)
Serialize the model.
double & Lambda()
Modify the lambda value for L2-regularization.
const arma::rowvec & Parameters() const
Return the parameters (the b vector).
void Train(const MatType &predictors, const arma::Row< size_t > &responses)
Train the LogisticRegression model on the given input data.
The LogisticRegression class implements an L2-regularized logistic regression model, and supports training with multiple optimizers and classification.