mlpack
regression_distribution.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_CORE_DISTRIBUTIONS_REGRESSION_DISTRIBUTION_HPP
14 #define MLPACK_CORE_DISTRIBUTIONS_REGRESSION_DISTRIBUTION_HPP
15 
16 #include <mlpack/prereqs.hpp>
19 
20 namespace mlpack {
21 namespace distribution {
22 
32 {
33  private:
38 
39  public:
43  RegressionDistribution() { /* nothing to do */ }
44 
52  mlpack_deprecated RegressionDistribution(const arma::mat& predictors,
53  const arma::vec& responses) :
54  RegressionDistribution(predictors, arma::rowvec(responses.t()))
55  {}
56 
64  RegressionDistribution(const arma::mat& predictors,
65  const arma::rowvec& responses)
66  {
67  rf.Train(predictors, responses);
68  err = GaussianDistribution(1);
69  arma::mat cov(1, 1);
70  cov(0, 0) = rf.ComputeError(predictors, responses);
71  err.Covariance(std::move(cov));
72  }
73 
77  template<typename Archive>
78  void serialize(Archive& ar, const uint32_t /* version */)
79  {
80  ar(CEREAL_NVP(rf));
81  ar(CEREAL_NVP(err));
82  }
83 
85  const regression::LinearRegression& Rf() const { return rf; }
87  regression::LinearRegression& Rf() { return rf; }
88 
90  const GaussianDistribution& Err() const { return err; }
92  GaussianDistribution& Err() { return err; }
93 
99  void Train(const arma::mat& observations);
100 
107  mlpack_deprecated void Train(const arma::mat& observations,
108  const arma::vec& weights);
109 
116  void Train(const arma::mat& observations, const arma::rowvec& weights);
117 
123  double Probability(const arma::vec& observation) const;
124 
130  double LogProbability(const arma::vec& observation) const
131  {
132  return log(Probability(observation));
133  }
134 
141  mlpack_deprecated void Predict(const arma::mat& points,
142  arma::vec& predictions) const;
143 
150  void Predict(const arma::mat& points, arma::rowvec& predictions) const;
151 
153  const arma::vec& Parameters() const { return rf.Parameters(); }
154 
156  size_t Dimensionality() const { return rf.Parameters().n_elem; }
157 };
158 
159 
160 } // namespace distribution
161 } // namespace mlpack
162 
163 #endif
double Train(const arma::mat &predictors, const arma::rowvec &responses, const bool intercept=true)
Train the LinearRegression model on the given data.
Definition: linear_regression.cpp:37
A single multivariate Gaussian distribution.
Definition: gaussian_distribution.hpp:24
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
A simple linear regression algorithm using ordinary least squares.
Definition: linear_regression.hpp:26
size_t Dimensionality() const
Return the dimensionality.
Definition: regression_distribution.hpp:156
RegressionDistribution()
Default constructor, which creates a Gaussian with zero dimension.
Definition: regression_distribution.hpp:43
The core includes that mlpack expects; standard C++ includes and Armadillo.
void Train(const arma::mat &observations)
Estimate the Gaussian distribution directly from the given observations.
Definition: regression_distribution.cpp:24
mlpack_deprecated void Predict(const arma::mat &points, arma::vec &predictions) const
Calculate y_i for each data point in points.
Definition: regression_distribution.cpp:68
const GaussianDistribution & Err() const
Return error distribution.
Definition: regression_distribution.hpp:90
A class that represents a univariate conditionally Gaussian distribution.
Definition: regression_distribution.hpp:31
const arma::vec & Parameters() const
Return the parameters (the b vector).
Definition: linear_regression.hpp:127
const arma::vec & Parameters() const
Return the parameters (the b vector).
Definition: regression_distribution.hpp:153
const regression::LinearRegression & Rf() const
Return regression function.
Definition: regression_distribution.hpp:85
regression::LinearRegression & Rf()
Modify regression function.
Definition: regression_distribution.hpp:87
void serialize(Archive &ar, const uint32_t)
Serialize the distribution.
Definition: regression_distribution.hpp:78
GaussianDistribution & Err()
Modify error distribution.
Definition: regression_distribution.hpp:92
RegressionDistribution(const arma::mat &predictors, const arma::rowvec &responses)
Create a Conditional Gaussian distribution with conditional mean function obtained by running Regress...
Definition: regression_distribution.hpp:64
double Probability(const arma::vec &observation) const
Evaluate probability density function of given observation.
Definition: regression_distribution.cpp:61
double ComputeError(const arma::mat &points, const arma::rowvec &responses) const
Calculate the L2 squared error on the given predictors and responses using this linear regression mod...
Definition: linear_regression.cpp:115
double LogProbability(const arma::vec &observation) const
Evaluate log probability density function of given observation.
Definition: regression_distribution.hpp:130
const arma::mat & Covariance() const
Return the covariance matrix.
Definition: gaussian_distribution.hpp:156