This package fits Gaussian mixture model (GMM) by expectation maximization (EM) algorithm.It works on data set of arbitrary dimensions.
Several techniques are applied to improve numerical stability, such as computing probability in logarithm domain to avoid float number underflow which often occurs when computing probability of high dimensional data.
The code is also carefully tuned to be efficient by utilizing vertorization and matrix factorization.
This algorithm is widely used. The detail can be found in the great textbook "Pattern Recognition and Machine Learning" or the wiki page
This function is robust and efficient yet the code structure is organized so that it is easy to read. Please try following code for a demo:
close all; clear;
d = 2;
k = 3;
n = 500;
[X,label] = mixGaussRnd(d,k,n);
m = floor(n/2);
X1 = X(:,1:m);
X2 = X(:,(m+1):end);
[z1,model,llh] = mixGaussEm(X1,k);
z2 = mixGaussPred(X2,model);
Besides using EM to fit GMM, I highly recommend you to try another submission of mine: Variational Bayesian Inference for Gaussian Mixture Model
(http://www.mathworks.com/matlabcentral/fileexchange/35362-variational-bayesian-inference-for-gaussian-mixture-model) which performs Bayesian inference on GMM. It has the advantage that the number of mixture components can be automatically identified by the algorithm.
Upon request, I also provide a prediction function for out-of-sample inference.
This function is now a part of the PRML toolbox (http://www.mathworks.com/matlabcentral/fileexchange/55826-pattern-recognition-and-machine-learning-toolbox)
For anyone who wonders how to finish his homework, DONT send email to me.
Mo Chen (2023). EM Algorithm for Gaussian Mixture Model (EM GMM) (https://www.mathworks.com/matlabcentral/fileexchange/26184-em-algorithm-for-gaussian-mixture-model-em-gmm), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Inspired: GMMVb_SB(X), Gaussian mixture model parameter estimation with prior hyper parameters, Dirichlet Process Gaussian Mixture Model, Variational Bayesian Inference for Gaussian Mixture Model, EM algorithm for Gaussian mixture model with background noise
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!
Fix several minor bugs and reorganize the code structure a bit.
update loggausspdf due to api change of matlab
reorganize and clean the code a bit
fix bug for 1d data
fix bug for 1d data
Fixed missing file
add missing files
fix missing files