14 #ifndef MLPACK_METHODS_MOG_MOG_EM_HPP 15 #define MLPACK_METHODS_MOG_MOG_EM_HPP 88 std::vector<distribution::GaussianDistribution>
dists;
104 Log::Debug <<
"GMM::GMM(): no parameters given; Estimate() may fail " 105 <<
"unless parameters are set." << std::endl;
115 GMM(
const size_t gaussians,
const size_t dimensionality);
123 GMM(
const std::vector<distribution::GaussianDistribution> & dists,
124 const arma::vec& weights) :
125 gaussians(dists.size()),
126 dimensionality((!dists.empty()) ? dists[0].Mean().n_elem : 0),
166 double Probability(
const arma::vec& observation)
const;
176 const size_t component)
const;
208 template<
typename FittingType = EMFit<>>
209 double Train(
const arma::mat& observations,
210 const size_t trials = 1,
211 const bool useExistingModel =
false,
212 FittingType fitter = FittingType());
238 template<
typename FittingType = EMFit<>>
239 double Train(
const arma::mat& observations,
240 const arma::vec& probabilities,
241 const size_t trials = 1,
242 const bool useExistingModel =
false,
243 FittingType fitter = FittingType());
261 void Classify(
const arma::mat& observations,
262 arma::Row<size_t>& labels)
const;
267 template<
typename Archive>
268 void Serialize(Archive& ar,
const unsigned int );
281 const arma::mat& dataPoints,
282 const std::vector<distribution::GaussianDistribution>& distsL,
283 const arma::vec& weights)
const;
290 #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.
The core includes that mlpack expects; standard C++ includes and Armadillo.
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.
A Gaussian Mixture Model (GMM).
static MLPACK_EXPORT util::NullOutStream Debug
MLPACK_EXPORT is required for global variables, so that they are properly exported by the Windows com...
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.