23 #ifndef __MLPACK_METHODS_GMM_EM_FIT_HPP
24 #define __MLPACK_METHODS_GMM_EM_FIT_HPP
49 template<
typename InitialClusteringType = kmeans::KMeans<>,
50 typename CovarianceConstra
intPolicy = PositiveDefiniteConstra
int>
73 InitialClusteringType
clusterer = InitialClusteringType(),
74 CovarianceConstraintPolicy
constraint = CovarianceConstraintPolicy());
91 void Estimate(
const arma::mat& observations,
92 std::vector<arma::vec>& means,
93 std::vector<arma::mat>& covariances,
95 const bool useInitialModel =
false);
114 void Estimate(
const arma::mat& observations,
115 const arma::vec& probabilities,
116 std::vector<arma::vec>& means,
117 std::vector<arma::mat>& covariances,
119 const bool useInitialModel =
false);
153 std::vector<arma::vec>& means,
154 std::vector<arma::mat>& covariances,
168 const std::vector<arma::vec>& means,
169 const std::vector<arma::mat>& covariances,
170 const arma::vec& weights)
const;
186 #include "em_fit_impl.hpp"
This class contains methods which can fit a GMM to observations using the EM algorithm.
double & Tolerance()
Modify the tolerance for the convergence of the EM algorithm.
const CovarianceConstraintPolicy & Constraint() const
Get the covariance constraint policy class.
size_t maxIterations
Maximum iterations of EM algorithm.
CovarianceConstraintPolicy constraint
Object which applies constraints to the covariance matrix.
size_t & MaxIterations()
Modify the maximum number of iterations of the EM algorithm.
size_t MaxIterations() const
Get the maximum number of iterations of the EM algorithm.
InitialClusteringType & Clusterer()
Modify the clusterer.
void Estimate(const arma::mat &observations, std::vector< arma::vec > &means, std::vector< arma::mat > &covariances, arma::vec &weights, const bool useInitialModel=false)
Fit the observations to a Gaussian mixture model (GMM) using the EM algorithm.
EMFit(const size_t maxIterations=300, const double tolerance=1e-10, InitialClusteringType clusterer=InitialClusteringType(), CovarianceConstraintPolicy constraint=CovarianceConstraintPolicy())
Construct the EMFit object, optionally passing an InitialClusteringType object (just in case it needs...
CovarianceConstraintPolicy & Constraint()
Modify the covariance constraint policy class.
double LogLikelihood(const arma::mat &data, const std::vector< arma::vec > &means, const std::vector< arma::mat > &covariances, const arma::vec &weights) const
Calculate the log-likelihood of a model.
double Tolerance() const
Get the tolerance for the convergence of the EM algorithm.
const InitialClusteringType & Clusterer() const
Get the clusterer.
void InitialClustering(const arma::mat &observations, std::vector< arma::vec > &means, std::vector< arma::mat > &covariances, arma::vec &weights)
Run the clusterer, and then turn the cluster assignments into Gaussians.
InitialClusteringType clusterer
Object which will perform the clustering.
double tolerance
Tolerance for convergence of EM.