This class contains methods which can fit a GMM to observations using the EM algorithm. More...
Public Member Functions  
EMFit (const size_t maxIterations=300, const double tolerance=1e10, InitialClusteringType clusterer=InitialClusteringType(), CovarianceConstraintPolicy constraint=CovarianceConstraintPolicy())  
Construct the EMFit object, optionally passing an InitialClusteringType object (just in case it needs to store state). More...  
const InitialClusteringType &  Clusterer () const 
Get the clusterer. More...  
InitialClusteringType &  Clusterer () 
Modify the clusterer. More...  
const CovarianceConstraintPolicy &  Constraint () const 
Get the covariance constraint policy class. More...  
CovarianceConstraintPolicy &  Constraint () 
Modify the covariance constraint policy class. More...  
void  Estimate (const arma::mat &observations, std::vector< Distribution > &dists, arma::vec &weights, const bool useInitialModel=false) 
Fit the observations to a Gaussian mixture model (GMM) using the EM algorithm. More...  
void  Estimate (const arma::mat &observations, const arma::vec &probabilities, std::vector< Distribution > &dists, arma::vec &weights, const bool useInitialModel=false) 
Fit the observations to a Gaussian mixture model (GMM) using the EM algorithm, taking into account the probabilities of each point being from this mixture. More...  
size_t  MaxIterations () const 
Get the maximum number of iterations of the EM algorithm. More...  
size_t &  MaxIterations () 
Modify the maximum number of iterations of the EM algorithm. More...  
template < typename Archive >  
void  serialize (Archive &ar, const unsigned int version) 
Serialize the fitter. More...  
double  Tolerance () const 
Get the tolerance for the convergence of the EM algorithm. More...  
double &  Tolerance () 
Modify the tolerance for the convergence of the EM algorithm. More...  
This class contains methods which can fit a GMM to observations using the EM algorithm.
It requires an initial clustering mechanism, which is by default the KMeans algorithm. The clustering mechanism must implement the following method:
This method should create 'clusters' clusters, and return the assignment of each point to a cluster.
Definition at line 45 of file em_fit.hpp.
EMFit  (  const size_t  maxIterations = 300 , 
const double  tolerance = 1e10 , 

InitialClusteringType  clusterer = InitialClusteringType() , 

CovarianceConstraintPolicy  constraint = CovarianceConstraintPolicy() 

) 
Construct the EMFit object, optionally passing an InitialClusteringType object (just in case it needs to store state).
Setting the maximum number of iterations to 0 means that the EM algorithm will iterate until convergence (with the given tolerance).
The parameter forcePositive controls whether or not the covariance matrices are checked for positive definiteness at each iteration. This could be a timeconsuming task, so, if you know your data is wellbehaved, you can set it to false and save some runtime.
maxIterations  Maximum number of iterations for EM. 
tolerance  Loglikelihood tolerance required for convergence. 
clusterer  Object which will perform the initial clustering. 
constraint  Constraint policy of covariance. 

inline 
Get the clusterer.
Definition at line 113 of file em_fit.hpp.

inline 
Modify the clusterer.
Definition at line 115 of file em_fit.hpp.

inline 
Get the covariance constraint policy class.
Definition at line 118 of file em_fit.hpp.

inline 
Modify the covariance constraint policy class.
Definition at line 120 of file em_fit.hpp.
void Estimate  (  const arma::mat &  observations, 
std::vector< Distribution > &  dists,  
arma::vec &  weights,  
const bool  useInitialModel = false 

) 
Fit the observations to a Gaussian mixture model (GMM) using the EM algorithm.
The size of the vectors (indicating the number of components) must already be set. Optionally, if useInitialModel is set to true, then the model given in the means, covariances, and weights parameters is used as the initial model, instead of using the InitialClusteringType::Cluster() option.
observations  List of observations to train on. 
means  Vector to store trained means in. 
covariances  Vector to store trained covariances in. 
weights  Vector to store a priori weights in. 
useInitialModel  If true, the given model is used for the initial clustering. 
void Estimate  (  const arma::mat &  observations, 
const arma::vec &  probabilities,  
std::vector< Distribution > &  dists,  
arma::vec &  weights,  
const bool  useInitialModel = false 

) 
Fit the observations to a Gaussian mixture model (GMM) using the EM algorithm, taking into account the probabilities of each point being from this mixture.
The size of the vectors (indicating the number of components) must already be set. Optionally, if useInitialModel is set to true, then the model given in the means, covariances, and weights parameters is used as the initial model, instead of using the InitialClusteringType::Cluster() option.
observations  List of observations to train on. 
probabilities  Probability of each point being from this model. 
means  Vector to store trained means in. 
covariances  Vector to store trained covariances in. 
weights  Vector to store a priori weights in. 
useInitialModel  If true, the given model is used for the initial clustering. 

inline 
Get the maximum number of iterations of the EM algorithm.
Definition at line 123 of file em_fit.hpp.

inline 
Modify the maximum number of iterations of the EM algorithm.
Definition at line 125 of file em_fit.hpp.
void serialize  (  Archive &  ar, 
const unsigned int  version  
) 
Serialize the fitter.
Referenced by EMFit< InitialClusteringType, CovarianceConstraintPolicy, Distribution >::Tolerance().

inline 
Get the tolerance for the convergence of the EM algorithm.
Definition at line 128 of file em_fit.hpp.

inline 
Modify the tolerance for the convergence of the EM algorithm.
Definition at line 130 of file em_fit.hpp.
References EMFit< InitialClusteringType, CovarianceConstraintPolicy, Distribution >::serialize().