16 #ifndef __MLPACK_METHODS_MOG_MOG_EM_HPP 17 #define __MLPACK_METHODS_MOG_MOG_EM_HPP 90 std::vector<distribution::GaussianDistribution>
dists;
106 Log::Debug <<
"GMM::GMM(): no parameters given; Estimate() may fail " 107 <<
"unless parameters are set." << std::endl;
117 GMM(
const size_t gaussians,
const size_t dimensionality);
125 GMM(
const std::vector<distribution::GaussianDistribution> & dists,
126 const arma::vec& weights) :
127 gaussians(dists.size()),
128 dimensionality((!dists.empty()) ? dists[0].Mean().n_elem : 0),
168 double Probability(
const arma::vec& observation)
const;
178 const size_t component)
const;
210 template<
typename FittingType = EMFit<>>
211 double Train(
const arma::mat& observations,
212 const size_t trials = 1,
213 const bool useExistingModel =
false,
214 FittingType fitter = FittingType());
240 template<
typename FittingType = EMFit<>>
241 double Train(
const arma::mat& observations,
242 const arma::vec& probabilities,
243 const size_t trials = 1,
244 const bool useExistingModel =
false,
245 FittingType fitter = FittingType());
263 void Classify(
const arma::mat& observations,
264 arma::Row<size_t>& labels)
const;
269 template<
typename Archive>
270 void Serialize(Archive& ar,
const unsigned int );
283 const arma::mat& dataPoints,
284 const std::vector<distribution::GaussianDistribution>& distsL,
285 const arma::vec& weights)
const;
292 #include "gmm_impl.hpp" A single multivariate Gaussian distribution.
GMM(const std::vector< distribution::GaussianDistribution > &dists, const arma::vec &weights)
Create a GMM with the given dists and weights.
Linear algebra utility functions, generally performed on matrices or vectors.
std::vector< distribution::GaussianDistribution > dists
Vector of Gaussians.
double Probability(const arma::vec &observation) const
Return the probability that the given observation came from this distribution.
size_t gaussians
The number of Gaussians in the model.
double LogLikelihood(const arma::mat &dataPoints, const std::vector< distribution::GaussianDistribution > &distsL, const arma::vec &weights) const
This function computes the loglikelihood of the given model.
const distribution::GaussianDistribution & Component(size_t i) const
Return a const reference to a component distribution.
size_t Gaussians() const
Return the number of gaussians in the model.
GMM & operator=(const GMM &other)
Copy operator for GMMs.
void Classify(const arma::mat &observations, arma::Row< size_t > &labels) const
Classify the given observations as being from an individual component in this GMM.
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
A Gaussian Mixture Model (GMM).
static util::NullOutStream Debug
Dumps debug output into the bit nether regions.
arma::vec weights
Vector of a priori weights for each Gaussian.
double Train(const arma::mat &observations, const size_t trials=1, const bool useExistingModel=false, FittingType fitter=FittingType())
Estimate the probability distribution directly from the given observations, using the given algorithm...
arma::vec Random() const
Return a randomly generated observation according to the probability distribution defined by this obj...
void Serialize(Archive &ar, const unsigned int)
Serialize the GMM.
arma::vec & Weights()
Return a reference to the a priori weights of each Gaussian.
size_t dimensionality
The dimensionality of the model.
distribution::GaussianDistribution & Component(size_t i)
Return a reference to a component distribution.
const arma::vec & Weights() const
Return a const reference to the a priori weights of each Gaussian.
size_t Dimensionality() const
Return the dimensionality of the model.
GMM()
Create an empty Gaussian Mixture Model, with zero gaussians.