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" arma::vec Random() const
Return a randomly generated observation according to the probability distribution defined by this obj...
A single multivariate Gaussian distribution.
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.
GMM(const std::vector< distribution::GaussianDistribution > &dists, const arma::vec &weights)
Create a GMM with the given dists and weights.
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.
Linear algebra utility functions, generally performed on matrices or vectors.
const arma::vec & Weights() const
Return a const reference to the a priori weights of each Gaussian.
const distribution::GaussianDistribution & Component(size_t i) const
Return a const reference to a component distribution.
std::vector< distribution::GaussianDistribution > dists
Vector of Gaussians.
size_t gaussians
The number of Gaussians in the model.
size_t Dimensionality() const
Return the dimensionality of the model.
GMM & operator=(const GMM &other)
Copy operator for GMMs.
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...
double Probability(const arma::vec &observation) const
Return the probability that the given observation came from this distribution.
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.
size_t Gaussians() const
Return the number of gaussians in the model.
GMM()
Create an empty Gaussian Mixture Model, with zero gaussians.