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 
130  template<typename OptimizerType = mlpack::optimization::L_BFGS>
131  double Train(const MatType& predictors,
132  const arma::Row<size_t>& responses);
133 
151  template<typename OptimizerType>
152  double Train(const MatType& predictors,
153  const arma::Row<size_t>& responses,
154  OptimizerType& optimizer);
155 
157  const arma::rowvec& Parameters() const { return parameters; }
159  arma::rowvec& Parameters() { return parameters; }
160 
162  const double& Lambda() const { return lambda; }
164  double& Lambda() { return lambda; }
165 
177  template<typename VecType>
178  size_t Classify(const VecType& point,
179  const double decisionBoundary = 0.5) const;
180 
192  void Classify(const MatType& dataset,
193  arma::Row<size_t>& labels,
194  const double decisionBoundary = 0.5) const;
195 
202  void Classify(const MatType& dataset,
203  arma::mat& probabilities) const;
204 
219  double ComputeAccuracy(const MatType& predictors,
220  const arma::Row<size_t>& responses,
221  const double decisionBoundary = 0.5) const;
222 
231  double ComputeError(const MatType& predictors,
232  const arma::Row<size_t>& responses) const;
233 
235  template<typename Archive>
236  void serialize(Archive& ar, const unsigned int /* version */);
237 
238  private:
240  arma::rowvec parameters;
242  double lambda;
243 };
244 
245 } // namespace regression
246 } // namespace mlpack
247 
248 // Include implementation.
249 #include "logistic_regression_impl.hpp"
250 
251 #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 Train(const MatType &predictors, const arma::Row< size_t > &responses)
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.
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).
The LogisticRegression class implements an L2-regularized logistic regression model, and supports training with multiple optimizers and classification.