SPARK-4156 [MLLIB] EM algorithm for GMMs

Implementation of Expectation-Maximization for Gaussian Mixture Models.

This is my maiden contribution to Apache Spark, so I apologize now if I have done anything incorrectly; having said that, this work is my own, and I offer it to the project under the project's open source license.


I don't think the pseudoinverse is quite what we need.  Thinking more about it, I feel like some smoothing might be best.  It will not bias the estimate too much, it will make the algorithm more robust, and it should be simple to add.  What do you think?