Gaussian Mixture Model
gaussian_mixture_model.h
1 #ifndef GAUSSIAN_MIXTURE_MODEL_H
2 #define GAUSSIAN_MIXTURE_MODEL_H
3 
4 #include <Eigen/Dense>
5 #include <Eigen/Sparse>
6 #include <vector>
7 
8 
10 {
11  private:
12  int k_; // number of components
13  int dim_; // dimension of data
14  std::vector<Eigen::VectorXd> mu_; // mean vectors
15  std::vector<Eigen::MatrixXd> sigma_; // covariance matrices
16  std::vector<double> w_; // weights of components
17  double log_likelihood_; // log likelihood of data
18 
19 
20  public:
26  GaussianMixtureModel(Eigen::MatrixXd samples, int num_components);
27 
35  GaussianMixtureModel(std::vector<Eigen::VectorXd> means, std::vector<Eigen::MatrixXd> covariances, std::vector<double> weights);
36 
41  GaussianMixtureModel(int num_components); // constructor: create GMM with random means and covariances
42 
46 
50 
60  void fitgmm(Eigen::MatrixXd samples, int num_components, int max_iterations, double tolerance, bool verbose); // expectation maximization algorithm
61 
71  void fitgmm2(Eigen::MatrixXd samples, int num_components, int max_iterations, double tolerance, bool verbose); // expectation maximization algorithm
72 
82  void fitgmm(std::vector<Eigen::VectorXd> samples, int num_components, int max_iterations, double tolerance, bool verbose); // expectation maximization algorithm
83 
87  std::vector<Eigen::VectorXd> getMeans();
88 
92  std::vector<Eigen::MatrixXd> getCovariances();
93 
97  std::vector<double> getWeights();
98 
102  double getLogLikelihood();
103 
107  void setMeans(std::vector<Eigen::VectorXd> means);
108 
112  void setCovariances(std::vector<Eigen::MatrixXd> covariances);
113 
117  void setWeights(std::vector<double> weights);
118 
122  bool check();
123 
124 
125 
126 
132  double gauss_pdf_2d(Eigen::VectorXd q, Eigen::VectorXd mean, Eigen::MatrixXd cov);
133 
134 };
135 
136 #endif // GAUSSIAN_MIXTURE_MODEL_H
GaussianMixtureModel::GaussianMixtureModel
GaussianMixtureModel()
Use this method to initialize an empty GMM. Parameters must be set with the setter methods.
Definition: gaussian_mixture_model.cpp:37
GaussianMixtureModel::~GaussianMixtureModel
~GaussianMixtureModel()
Destructor.
Definition: gaussian_mixture_model.cpp:79
GaussianMixtureModel::getLogLikelihood
double getLogLikelihood()
Log-likelihood getter.
Definition: gaussian_mixture_model.cpp:103
GaussianMixtureModel
Definition: gaussian_mixture_model.h:9
GaussianMixtureModel::setCovariances
void setCovariances(std::vector< Eigen::MatrixXd > covariances)
Covariance matrices setter method.
Definition: gaussian_mixture_model.cpp:114
GaussianMixtureModel::getWeights
std::vector< double > getWeights()
Weights getter.
Definition: gaussian_mixture_model.cpp:97
GaussianMixtureModel::getMeans
std::vector< Eigen::VectorXd > getMeans()
Mean getter.
Definition: gaussian_mixture_model.cpp:85
GaussianMixtureModel::setWeights
void setWeights(std::vector< double > weights)
Weights setter method.
Definition: gaussian_mixture_model.cpp:119
GaussianMixtureModel::gauss_pdf_2d
double gauss_pdf_2d(Eigen::VectorXd q, Eigen::VectorXd mean, Eigen::MatrixXd cov)
Use this method to calculate the probability of a given 2D point from a Bivariate Gaussian Distributi...
Definition: gaussian_mixture_model.cpp:142
GaussianMixtureModel::setMeans
void setMeans(std::vector< Eigen::VectorXd > means)
Mean points setter method.
Definition: gaussian_mixture_model.cpp:108
GaussianMixtureModel::fitgmm2
void fitgmm2(Eigen::MatrixXd samples, int num_components, int max_iterations, double tolerance, bool verbose)
Expectation-Maximization algorithm. Fits a GMM to a dataset recursively iterating between E-step and ...
Definition: gaussian_mixture_model.cpp:269
GaussianMixtureModel::getCovariances
std::vector< Eigen::MatrixXd > getCovariances()
Covariances getter.
Definition: gaussian_mixture_model.cpp:91
GaussianMixtureModel::fitgmm
void fitgmm(Eigen::MatrixXd samples, int num_components, int max_iterations, double tolerance, bool verbose)
Expectation-Maximization algorithm. Fits a GMM to a dataset recursively iterating between E-step and ...
Definition: gaussian_mixture_model.cpp:155
GaussianMixtureModel::check
bool check()
Check dimensions consistency of the GMM parameters.
Definition: gaussian_mixture_model.cpp:124