This is a 3D visualization of how the Expectation Maximization algorithm learns a Gaussian Mixture Model for 3-dimensional data.
--How it works--
The data is either read in or generated in general-covariance gaussian clusters. For desired values of k (number of Gaussians to fit), a movie is played showing the evolution of the GMM through the iterations of the EM algorithm. The true model is only available at each iteration (viewed as an anchor frame in a movie), so the illusion of movement of the 3D Gaussians (displayed as ellipsoids at 1 standard deviation) is given by interpolating enough "frames" in between these anchor frames.
Simplified 2D plotting option, stream-lined code
Cleaned up code, improved plotting, coloring, added full-covariance capabilities
Corrected bug in EM implementation
changed mean initialization from 'at data mean with small noise' to 'at data points chosen at random' (usually gives better clustering)
color gradient added to data points to show the certainty that it belongs to the nearest Gaussian