13 #ifndef MLPACK_CORE_DISTRIBUTIONS_GAUSSIAN_DISTRIBUTION_HPP 14 #define MLPACK_CORE_DISTRIBUTIONS_GAUSSIAN_DISTRIBUTION_HPP 19 namespace distribution {
39 static const constexpr
double log2pi = 1.83787706640934533908193770912475883;
52 mean(
arma::zeros<
arma::vec>(dimension)),
53 covariance(
arma::eye<
arma::mat>(dimension, dimension)),
54 covLower(
arma::eye<
arma::mat>(dimension, dimension)),
55 invCov(
arma::eye<
arma::mat>(dimension, dimension)),
91 void Probability(
const arma::mat& x, arma::vec& probabilities)
const 97 probabilities = arma::exp(logProbs);
112 diffs.each_col() -= mean;
116 logProbabilities = -0.5 * x.n_rows * log2pi - 0.5 * logDetCov +
117 sum(diffs % (-0.5 * invCov * diffs), 0).t();
133 void Train(
const arma::mat& observations);
140 void Train(
const arma::mat& observations,
141 const arma::vec& probabilities);
146 const arma::vec&
Mean()
const {
return mean; }
151 arma::vec&
Mean() {
return mean; }
166 const arma::mat&
InvCov()
const {
return invCov; }
174 template<
typename Archive>
178 ar(CEREAL_NVP(mean));
179 ar(CEREAL_NVP(covariance));
180 ar(CEREAL_NVP(covLower));
181 ar(CEREAL_NVP(invCov));
182 ar(CEREAL_NVP(logDetCov));
191 void FactorCovariance();
arma::vec Random() const
Return a randomly generated observation according to the probability distribution defined by this obj...
Definition: gaussian_distribution.cpp:79
A single multivariate Gaussian distribution.
Definition: gaussian_distribution.hpp:24
void serialize(Archive &ar, const uint32_t)
Serialize the distribution.
Definition: gaussian_distribution.hpp:175
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
double LogProbability(const arma::vec &observation) const
Return the log probability of the given observation.
Definition: gaussian_distribution.cpp:71
void Probability(const arma::mat &x, arma::vec &probabilities) const
Calculates the multivariate Gaussian probability density function for each data point (column) in the...
Definition: gaussian_distribution.hpp:91
The core includes that mlpack expects; standard C++ includes and Armadillo.
const arma::mat & InvCov() const
Return the invCov.
Definition: gaussian_distribution.hpp:166
void LogProbability(const arma::mat &x, arma::vec &logProbabilities) const
Returns the Log probability of the given matrix.
Definition: gaussian_distribution.hpp:108
double Probability(const arma::vec &observation) const
Return the probability of the given observation.
Definition: gaussian_distribution.hpp:74
GaussianDistribution(const size_t dimension)
Create a Gaussian distribution with zero mean and identity covariance with the given dimensionality...
Definition: gaussian_distribution.hpp:51
void Train(const arma::mat &observations)
Estimate the Gaussian distribution directly from the given observations.
Definition: gaussian_distribution.cpp:89
GaussianDistribution()
Default constructor, which creates a Gaussian with zero dimension.
Definition: gaussian_distribution.hpp:45
double LogDetCov() const
Return the logDetCov.
Definition: gaussian_distribution.hpp:169
size_t Dimensionality() const
Return the dimensionality of this distribution.
Definition: gaussian_distribution.hpp:69
arma::vec & Mean()
Return a modifiable copy of the mean.
Definition: gaussian_distribution.hpp:151
const arma::vec & Mean() const
Return the mean.
Definition: gaussian_distribution.hpp:146
const arma::mat & Covariance() const
Return the covariance matrix.
Definition: gaussian_distribution.hpp:156