13 #ifndef MLPACK_METHODS_MOG_MOG_EM_HPP 14 #define MLPACK_METHODS_MOG_MOG_EM_HPP 84 size_t dimensionality;
87 std::vector<distribution::GaussianDistribution> dists;
103 Log::Debug <<
"GMM::GMM(): no parameters given; Estimate() may fail " 104 <<
"unless parameters are set." << std::endl;
114 GMM(
const size_t gaussians,
const size_t dimensionality);
122 GMM(
const std::vector<distribution::GaussianDistribution> & dists,
123 const arma::vec& weights) :
124 gaussians(dists.size()),
125 dimensionality((!dists.empty()) ? dists[0].Mean().n_elem : 0),
155 const arma::vec&
Weights()
const {
return weights; }
165 double Probability(
const arma::vec& observation)
const;
183 const size_t component)
const;
193 const size_t component)
const;
224 template<
typename FittingType = EMFit<>>
225 double Train(
const arma::mat& observations,
226 const size_t trials = 1,
227 const bool useExistingModel =
false,
228 FittingType fitter = FittingType());
254 template<
typename FittingType = EMFit<>>
255 double Train(
const arma::mat& observations,
256 const arma::vec& probabilities,
257 const size_t trials = 1,
258 const bool useExistingModel =
false,
259 FittingType fitter = FittingType());
277 void Classify(
const arma::mat& observations,
278 arma::Row<size_t>& labels)
const;
283 template<
typename Archive>
284 void serialize(Archive& ar,
const unsigned int );
296 double LogLikelihood(
297 const arma::mat& dataPoints,
298 const std::vector<distribution::GaussianDistribution>& distsL,
299 const arma::vec& weights)
const;
306 #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.
const arma::vec & Weights() const
Return a const reference to the a priori weights of each Gaussian.
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.
void serialize(Archive &ar, const unsigned int)
Serialize the GMM.
double Probability(const arma::vec &observation) const
Return the probability that the given observation came from this distribution.
const distribution::GaussianDistribution & Component(size_t i) const
Return a const reference to a component distribution.
A Gaussian Mixture Model (GMM).
distribution::GaussianDistribution & Component(size_t i)
Return a reference to a component distribution.
arma::vec Random() const
Return a randomly generated observation according to the probability distribution defined by this obj...
double LogProbability(const arma::vec &observation) const
Return the log probability that the given observation came from this distribution.
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...
size_t Dimensionality() const
Return the dimensionality of the model.
size_t Gaussians() const
Return the number of gaussians in the model.