{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "from scipy import linalg\n", "import pylab as pl\n", "from sklearn import mixture\n", "\n", "%pylab inline --no-import-all" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Diff between GMM and GMM with a Dirichlet Process Prior\n", "\n", "Both models have access to five components with which to fit the data. Note that the EM model will necessarily use all five components while the DP model will effectively only use as many as are needed for a good fit. This is a property of the Dirichlet Process prior. Here we can see that the EM model splits some components arbitrarily, because it is trying to fit too many components, while the Dirichlet Process model adapts it number of state automatically.\n", "\n", "This example doesn\u2019t show it, as we\u2019re in a low-dimensional space, but another advantage of the dirichlet process model is that it can fit full covariance matrices effectively even when there are less examples per cluster than there are dimensions in the data, due to regularization properties of the inference algorithm." ] }, { "cell_type": "code", "collapsed": false, "input": [ "## generate artificial data\n", "n_samples = 500\n", "np.random.seed(0)\n", "centers = np.array([[0., -0.1], [1.7, .4]])\n", "X = np.r_[np.dot(np.random.randn(n_samples, 2), centers),\n", " .7 * np.random.randn(n_samples, 2) + np.array([-6, 3])]\n", "\n", "pl.plot(X[:, 0], X[:, 1], '.')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\noe68807V3d2tlFLq9OnTKV5RaI4dO6buvvtuVVVVpb788stUL8eV7du3X/9v8IknnlBPPPFEildk\nce3aNVVdXa2OHDmiuru71Zw5c9T+/ftTvawgTp48qfbs2aOUUurixYtq2rRpablOpZR65pln1LJl\ny9R9992X6qWE5Pvf/776l3/5F6WUUj09PaqrqyvkuQkppa+pqcG0adOCjm/evBkPPvggcnNzUVVV\nhSlTpmDXrl2JWELUjB8//nr01dXVhQkTJqR4Re48//zzePLJJ5GbmwsAKCkpSfGKQvPDH/4Qf//3\nf5/qZYQlnesZdu3ahSlTpqCqqgq5ubn47ne/i82bN6d6WUGUlZXhpptuAgAUFBSgtrYW7e3tKV5V\nMF988QW2bNmCRx99tN/sjlRx/vx57NixA4888ggAwOPxwOv1hjw/qb1Q2tvbUVFRcf11RUUFTpw4\nkcwlhOSpp57CX/3VX2HSpElYtWpV2laWHjx4EG+//TYWLlyIhoYGfPTRR6lekiubN29GRUUFZs+e\nneqlREy61TOcOHECEydOvP46nf7/Eoq2tjbs2bMHCxYsSPVSgvjBD36Ap59++voNOx05cuQISkpK\n8PDDD6Ourg6PPfYYvvrqq5DnDzgLJZIc8UhIZp54qDWvXbsWzz33HJ577jncf//92LhxIx555BG8\n9tprSVubSbh1Xrt2DZ2dndi5cyc+/PBDfOc738Hhw4dTsMrw61y/fr1tjyOVEU+k9Qx5eXlYtmxZ\nspcXkkyrobh06RIeeOABPPvssygoKEj1cmy8+uqrKC0thc/nS+tS+mvXrmH37t346U9/ivr6eqxc\nuRJPPfUU/vZv/9b9A4n0cpwe+Pr169X69euvv7777rvVzp07E7mEiBk1atT15319faqwsDCFqwnN\nPffcowKBwPXX1dXV6uzZsylcUTD79u1TpaWlqqqqSlVVVSmPx6MqKyvVqVOnUr00VzZs2KBuueUW\ndeXKlVQvxcb777+v7r777uuv161bp5566qkUrig03d3d6q677lL/8A//kOqluPLkk0+qiooKVVVV\npcrKylR+fr5avnx5qpcVxMmTJ1VVVdX11zt27FBLliwJeX7CBfyjjz66/lpvYl69elUdPnxY3XDD\nDaqvry+RS4gYn893XRhbWlrUvHnzUrwid/75n/9Z/ehHP1JKKXXgwAE1ceLEFK+of9J5E3Pr1q1q\nxowZ6syZM6leShA9PT3qhhtuUEeOHFFXr15N203Mvr4+tXz5crVy5cpULyUiAoGAuvfee1O9jJDc\ndttt6sCBA0oppX784x+r1atXhzw3IQL+3//936qiokINHz5cjRs3Tt1zzz3X31u7dq2qrq5W06dP\nv571kQ58+OGHav78+WrOnDlq4cKFavfu3alekivd3d3qe9/7nrrxxhtVXV2devPNN1O9pH6ZPHly\n2gr4lClT1KRJk9RNN92kbrrpJvX444+nekk2tmzZoqZNm6aqq6vVunXrUr0cV3bs2KGysrLUnDlz\nrv87bt26NdXLCkkgEEjrLJS9e/eqefPmqdmzZ6v7778/bBZKTKX0hBBCUkf6bscSQggJCwWcEEIy\nFAo4IYRkKBRwQgjJUCjghBCSoVDACSEkQ/n/pi6htTdVN9YAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "## fit a GMM with EM using 5 components\n", "gmm = mixture.GMM(n_components=5, covariance_type='full')\n", "%time gmm.fit(X)\n", "y = gmm.predict(X)\n", "for label in np.unique(y):\n", " pl.plot(X[y == label, 0], X[y == label, 1], '.')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "CPU times: user 176 ms, sys: 196 ms, total: 372 ms\n", "Wall time: 186 ms\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "## fit a dirichlet process mixture of gaussians using 5 components\n", "dpgmm = mixture.DPGMM(n_components=5, covariance_type='full')\n", "%time dpgmm.fit(X)\n", "y = dpgmm.predict(X)\n", "for label in np.unique(y):\n", " pl.plot(X[y == label, 0], X[y == label, 1], '.')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "CPU times: user 160 ms, sys: 144 ms, total: 304 ms\n", "Wall time: 165 ms\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }