14 #ifndef MLPACK_METHODS_MOG_MOG_EM_HPP
15 #define MLPACK_METHODS_MOG_MOG_EM_HPP
85 size_t dimensionality;
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),
156 const arma::vec&
Weights()
const {
return weights; }
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 );
280 double LogLikelihood(
281 const arma::mat& dataPoints,
282 const std::vector<distribution::GaussianDistribution>& distsL,
283 const arma::vec& weights)
const;
290 #include "gmm_impl.hpp"
GMM(const std::vector< distribution::GaussianDistribution > &dists, const arma::vec &weights)
Create a GMM with the given dists and weights.
A single multivariate Gaussian distribution.
arma::vec & Weights()
Return a reference to the a priori weights of each Gaussian.
static MLPACK_EXPORT util::NullOutStream Debug
MLPACK_EXPORT is required for global variables, so that they are properly exported by the Windows com...
GMM()
Create an empty Gaussian Mixture Model, with zero gaussians.
The core includes that mlpack expects; standard C++ includes and Armadillo.
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.
arma::vec Random() const
Return a randomly generated observation according to the probability distribution defined by this obj...
GMM & operator=(const GMM &other)
Copy operator for GMMs.
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.
const arma::vec & Weights() const
Return a const reference to the a priori weights of each Gaussian.
double Probability(const arma::vec &observation) const
Return the probability that the given observation came from this distribution.
A Gaussian Mixture Model (GMM).
distribution::GaussianDistribution & Component(size_t i)
Return a reference to a component distribution.
void Serialize(Archive &ar, const unsigned int)
Serialize the GMM.
size_t Dimensionality() const
Return the dimensionality of the model.
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...