{"action":"created","issue":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4802","labels_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4802/labels{/name}","comments_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4802/comments","events_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4802/events","html_url":"https://github.com/scikit-learn/scikit-learn/pull/4802","id":84068499,"number":4802,"title":"[WIP] Improve GMM API","user":{"login":"xuewei4d","id":1180956,"avatar_url":"https://avatars.githubusercontent.com/u/1180956?v=3","gravatar_id":"","url":"https://api.github.com/users/xuewei4d","html_url":"https://github.com/xuewei4d","followers_url":"https://api.github.com/users/xuewei4d/followers","following_url":"https://api.github.com/users/xuewei4d/following{/other_user}","gists_url":"https://api.github.com/users/xuewei4d/gists{/gist_id}","starred_url":"https://api.github.com/users/xuewei4d/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xuewei4d/subscriptions","organizations_url":"https://api.github.com/users/xuewei4d/orgs","repos_url":"https://api.github.com/users/xuewei4d/repos","events_url":"https://api.github.com/users/xuewei4d/events{/privacy}","received_events_url":"https://api.github.com/users/xuewei4d/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":57,"created_at":"2015-06-02T15:18:15Z","updated_at":"2015-07-24T17:45:28Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/pulls/4802","html_url":"https://github.com/scikit-learn/scikit-learn/pull/4802","diff_url":"https://github.com/scikit-learn/scikit-learn/pull/4802.diff","patch_url":"https://github.com/scikit-learn/scikit-learn/pull/4802.patch"},"body":"GSoC 2015 project,  Improve GMM API\r\n\r\n1. [x] Completes [derivation report](https://www.dropbox.com/s/8hlbb7dlwllwcry/VBGMM.pdf?dl=0).\r\n2. [x] Adds new classes. One abstract class ```_BasesMixture```. Three derived classes ```GaussianMixture```, ```BayesianGaussianMixture```, ```DirichletProcessGaussianMixture```\r\n3. [x] Decouples large functions, especially in ```DirichletProcessGaussianMixture``` and ```BayesianGaussianMixture```\r\n4. [x] Removes numerical stability fixes for HMM. It seems that whenever there is a numerical issue, the code always adds 10*EPS in the computation. I think in some cases there is a better way to address the problem, such as normalization the extremely small variables earlier, or we just simply remove ```10*EPS``` which is only for HMM.\r\n5. [ ] Writes updating functions for ```BayesianGaussianMixtureModel``` and ```DirichletProcessGaussianMixtureModel``` according to the report.\r\n6. [x] Provides methods that allow users to initialize the model with user-provided data\r\n7. [x] Corrects kmeans initialization. It is weird when using kmeans initialization, only means is initialized. The weights and covariances are initialized by averaging.\r\n8. [x] Writes several checking functions for the initialization data\r\n9. [x] Adjusts the verbose messages. When ```verbose>1```, it display log-likelihood and time used in the same line of the message ```Iteration x```\r\n10. [x] Remove ```fit_predict```\r\n11. [x] Adds warning for ```params!='wmc'```\r\n12. [ ] Studies and contrasts the convergence of classical MLE / EM GMM with Bayesian GMM against the number of samples and the number of components\r\n13. [ ] Friendly warning and error messages, or automatically addressing if possible (e.g. random re-init of singular components)\r\n14. [ ] Examples that shows how models can over-fit by comparing likelihood on training and validation sets (normalized by\r\nthe number of samples). For instance extend the BIC score example with a cross-validated likelihood plot\r\n15. [ ] Testing on 1-D dimensions\r\n16. [ ] Testing on Degenerating cases\r\n17. [ ] AIC, BIC for VBGMM DPGMM\r\n18. [optional] add a partial_fit function for incremental / out-of-core fitting of (classical) GMM, for instance http://arxiv.org/abs/0712.4273 \r\n19. [optional] ledoit_wolf covariance estimation"},"comment":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/comments/124596263","html_url":"https://github.com/scikit-learn/scikit-learn/pull/4802#issuecomment-124596263","issue_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4802","id":124596263,"user":{"login":"ogrisel","id":89061,"avatar_url":"https://avatars.githubusercontent.com/u/89061?v=3","gravatar_id":"","url":"https://api.github.com/users/ogrisel","html_url":"https://github.com/ogrisel","followers_url":"https://api.github.com/users/ogrisel/followers","following_url":"https://api.github.com/users/ogrisel/following{/other_user}","gists_url":"https://api.github.com/users/ogrisel/gists{/gist_id}","starred_url":"https://api.github.com/users/ogrisel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ogrisel/subscriptions","organizations_url":"https://api.github.com/users/ogrisel/orgs","repos_url":"https://api.github.com/users/ogrisel/repos","events_url":"https://api.github.com/users/ogrisel/events{/privacy}","received_events_url":"https://api.github.com/users/ogrisel/received_events","type":"User","site_admin":false},"created_at":"2015-07-24T17:45:28Z","updated_at":"2015-07-24T17:45:28Z","body":"I was reviewing your code and fixing code style issues along the way:\r\n\r\nhttps://github.com/xuewei4d/scikit-learn/pull/2\r\n\r\nThere has been some concurrent editing so it does not merge directly but by reading the diff you can get the gist of the coding conventions we follow in scikit-learn (PEP8 and PEP257 for the docstrings). You can use a linter such as flake8 to find code style violations and trivial bugs (undefined variables) or other issues (useless imports). If you use and editor such as Atom, install the linter and linter-flake8 packages to have them show up in your editor directly."}}