Skip to content

Instantly share code, notes, and snippets.

@fredcallaway
Created July 18, 2017 01:59
Show Gist options
  • Save fredcallaway/a9272d7209d0d97199e872eb8f0a64ec to your computer and use it in GitHub Desktop.
Save fredcallaway/a9272d7209d0d97199e872eb8f0a64ec to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 106,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import seaborn as sns\n",
"sns.set_style('white')\n",
"sns.set_palette('muted', color_codes=True)\n",
"sns.set_context('notebook', font_scale=1.3)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from pymc3 import *\n",
"# This cell is a hack that makes later code more readble.\n",
"# It defines functions that take have the same argument\n",
"# as PyMC distributions, but have lowercase names and \n",
"# immediately return numpy arrays (not Theaano variables).\n",
"\n",
"def draw_sample(pymc_cls, *args, **kwargs):\n",
" args = [np.asarray(a) for a in args]\n",
" kwargs = {k: np.asarray(v) for k, v in kwargs.items()}\n",
" d = pymc_cls.dist(*args, **kwargs)\n",
" return d.random()\n",
" \n",
"from functools import partial\n",
"for d in ['dirichlet', 'bernoulli', 'categorical', 'normal', 'exponential']:\n",
" cls = d[0].upper() + d[1:].lower()\n",
" # That's right, I'm using exec. Sue me.\n",
" exec('{name} = partial(draw_sample, {cls})'.format(name=d, cls=cls))"
]
},
{
"cell_type": "code",
"execution_count": 155,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n/tWBy77UPUwOHjwoZs6cKYqLi8XUqVPF559/LoQQ4u677xZr165t2+7ZZ58V3/nOd8S1114rHnzw\nQWG329vWvfnmm2Ly5Mli5MiRYt68eaKmpibsx3GxQI5p8uTJYtiwYaK4uNjnz9GjR4UQQvz1r38V\nN9xwgxgxYoT4wQ9+IHbv3h2x4xEisGNyu93iiSeeEN/+9rdFcXGxmDdvnjh9+nTba+zcuVPccsst\nori4WPzbv/2bKC8vj8ixtAr0/70tW7aIH/7wh35fI9rep1a7du3yuXvmscceE4899ljb484+M9H2\nPkW7eOth7F/sX5EWjf1LEkKIy49mRERERIktJk7/EREREUU7hioiIiKiIGCoIiIiIgoChioiIiKi\nIGCoIiIiIgoChioiIiKiIGCoIiIiIgoChioiIiKiIGCoIiIiIgoChioiIiKiIGCoIiIiIgoChioi\nIiKiIGCoIiIiIgoChioiIiKiIGCoIiIiIgoChioKimeeeQa33357u+W1tbV48MEHcd1112HMmDFY\nsWIF3G53t1//b3/7G2655RZcffXVmDx5MjZu3BiMsjvV0TERUWxLpH4VrGOiwOgiXQDFvm3btuG3\nv/0thg0b1m7dvffei9raWjzxxBOoqanBypUr4fV68Ytf/CLg13/jjTewaNEi3HPPPSgtLcW+ffuw\nYsUKZGZm4qabbgrmobTp7JiIKHYlWr8KxjFR4BiqqMccDgfWrVuH9evXIzk5ud36nTt34rPPPsMb\nb7yBQYMGAQCMRiMWL16Mn/zkJ0hNTQ1oP1u2bMENN9yABx54AAAwZswYfP755/j000+D3qS6OiYi\nik2J2K+CdUwUOJ7+izO1tbW4//77MXLkSHzrW9/C2rVrcezYMQwePBi7d+/2+5w5c+Zg8ODBfv88\n8sgjHe7rrbfewpYtW7By5UpMnDix3fpdu3YhNze37cMMABMnToTH48HHH38c8DFVVlaiX79+EEKg\nrq4O7777Lj777DNMmjSpw+eE6piIKHjYr2LjmChwHKmKMw899BD279+PRx99FOnp6fjjH/+Ibdu2\nwWAwoLi42O9zlixZgqamJr/rMjIyOtzXmDFj8O6778JiseCf//xnu/U2mw0DBw70WZaWlgar1YoT\nJ04EfEwejweKomDnzp348Y9/jOTkZCxduhSlpaUdPidUx0REwcN+1SLaj4kCx1AVR7766it89NFH\n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\nN4oqK+G85hrkLVoE55IlKKyshMPlyvTQiOacGe8Nh0IhFFzxCtzlckFV9XdSwuEwXJct4vjnhMOp\n/jgGAcCC/IXIt+dh8orGShMN/56XPW8jUXay2WwoX1qI/41N4MLoBBx2oHzRYuDsf5H0estuz6q3\nNuPmSn7Z7HY4S0szPQyiOW/GpqqgoCApgFRVhdvt1u1zuVyIRCKJ7XgYzecD16Zks9ngLbwBw78H\nENZCgAB2mwOLXVfjX05rPueIck9JUT5KiuI/b+dGRGKInj+f+KPjjoICuMvKsvItZOYXEaXTjE1V\nWVkZ9u7dq9sXCATg8/l0+7xer+6WeiAQQHFxMTwej0lDzU0uhwvLi1cgokUQnYxift58PuGaMspZ\nWop5Hg+033+HzeGA44oGJJswv4gonWb837uurg7RaBR79uzBxMQEenp6MDIygvr6et1569evR3d3\nN06fPo3x8XHs3LkTPp8P9ix8dZsJTocTRflFbKjIEmx2O/KKirK6oQKYX0SUXjMmxrx587B79270\n9vaipqYGe/fuRWdnJ9xuN/x+P958800AwK233orW1la0tbWhsbERRUVF2Lp166wXQEQ0FeYXEaWT\nTTL4RL+zZ89i7dq1OHLkCJbwwZREc0KurPtcqYOIjJtp3fPeNhEREZEJ2FQRERERmYBNFREREZEJ\n2FQRERERmYBNFREREZEJ2FQRERERmYBNFREREZEJ2FQRERERmYBNFREREZEJ2FQRERERmYBNFRER\nEZEJ2FQRERERmYBNFREREZEJ8jL5j2uaBgD45ZdfMjkMIkqj+HqPr/9sxfwimntmyq+MNlXBYBAA\n8PDDD2dyGESUAcFgEEuXLs30MP425hfR3DVVftlERDIwHgCAqqoYGBjAVVddBYfDkalhEFEaaZqG\nYDCIiooKuFyuTA/nb2N+Ec09M+VXRpsqIiIiolzBH1QnIiIiMgGbKiIiIiITsKkiIiIiMgGbKiIi\nIiITsKkiIiIiMkHWNFWnTp3CfffdB0VRsGHDBpw8eTLleW+//TYaGhpQXV2Np556CqFQKHHsww8/\nxNq1a6EoCtra2jAyMpKu4adktKaOjg40NjZi9erVeOSRR/DDDz8kjj3//POoqKhAVVVV4uPnn39O\nVwlJjNbk8/lQWVmZGPNdd92VOHbs2DH4fD4oioJNmzYhEAika/gpGanJ7/fr5qCyshLLli3D119/\nDcB68xT37bffor6+fsrj060Zq82T1eVahjG/mF+ZZsn8kiygqqo0NDTIvn37JBqNyoEDB6S2tlbG\nx8d15x09elTq6+tlaGhIRkdHxe/3y7Zt20REZHBwUKqrq+XkyZMSDofl2WefFb/fn4Fq/mC0poMH\nD0pTU5OcOXNGJiYmZNeuXdLY2CiapomISEtLi3z88ceZKCGJ0ZrC4bCsWLFCLly4kHSNYDAoVVVV\ncuTIEYlEIvLGG2/InXfeKZOTk+kqQ8doTVfaunWrbNmyJbFtpXkSEZmcnJQDBw7IqlWrpKamJuU5\n060Zq82T1eVahjG/mF+ZZOX8yoqmqq+vT26++WbdPp/PJ729vbp9jz/+uLz22muJ7e+++04URZFY\nLCYvv/yyPP3004ljFy9elGXLlkkwGJzVsU/FaE1vvfWWHDp0KLE9NjYmN954o5w7d040TRNFUWR4\neDgdQ56R0Zr6+/uloaEh5TX27dsnmzZtSmzHYjFZvXq19Pf3mz5eI4zWdLlPPvlE1qxZI2NjYyIi\nlpsnEZGOjg5pbm6W3bt3TxlK060Zq82T1eVahjG/mF+ZZOX8yoq3/wKBALxer27fddddh6GhId2+\noaEhXH/99bpzQqEQfv3116RjJSUlWLBgQcZuzRqtafPmzbj77rsT20ePHsXChQtRWlqK4eFhqKqK\nHTt2oLa2Fhs3bsSnn36alvGnYrSmU6dOIS8vDy0tLaitrcWjjz6Kn376CcAfc3j5NRwOB6699tqk\na6SL0ZriYrEYtm/fjmeeeQaFhYUAYLl5AoB7770X77//PlauXDnlOdOtGavNk9XlWoYxv5hfmWTl\n/MqKpioUCqGgoEC3z+VyQVVV3b5wOKx7bHz8c8LhcNKx+PFwODxLo56e0Zou9+WXX2Lbtm147rnn\nYLfbMTo6ipqaGvj9fnz22Wd47LHH8MQTT+D777+f7eGn9FdqWrlyJV555RX09fWhoqICra2tUFUV\n4XA46RrZNE8fffQRnE4nbr/99sQ+q80TAHg8HthstmnPmW7NWG2erC7XMoz5xfxifqWWFU1VQUFB\n0jeBqqpwu926fS6XC5FIJLEd/wLNnz9/ygC78hrpYrSmuPfeew9tbW1ob29Hc3MzAEBRFHR1daG6\nuhr5+fm47bbbUFdXh76+vtkefkpGa3rwwQfx+uuvY8mSJXC5XHjyySdx6dIlDA4OprxGNs3ToUOH\n8MADD8Bu/3NpWW2ejJpuzVhtnqwu1zKM+cX8Yn6llhVNVVlZWdIt7kAgoLu1BwBer1d3+y4QCKC4\nuBgejwder1d3jYsXL+LSpUtJt0bTxWhNALBr1y5s374dHR0duOeeexL7jx8/jnfeeUd3biQSgdPp\nnJ1Bz8BoTd3d3Th27FhiW9M0xGIxOJ3OpGtomoYzZ86k/Lqkw1+Zp/HxcXz11Ve44447dPutNk9G\nTbdmrDZPVpdrGcb8Yn4xv1LLiqaqrq4O0WgUe/bswcTEBHp6ejAyMpL0q5Tr169Hd3c3Tp8+jfHx\ncezcuRM+nw92ux0+nw+HDx/GiRMnEIlE8Oqrr2LNmjUoKSmxdE0HDx5EV1cX9u/fj7q6Ot0xm82G\nHTt24MSJE9A0DR988AH6+/uTFkW6GK3pt99+wwsvvIDz589DVVW89NJLKCsrw/Lly7Fu3ToMDAzg\n8OHDiEaj6OzsRGlpKcrLyy1dEwAMDAzA4/Fg8eLFuv1WmyejplszVpsnq8u1DGN+Mb+YX1P4xz/q\nniaDg4PS0tIiiqLIhg0b5JtvvhERkc2bN0tnZ2fivK6uLrnllltk1apVsmXLFgmFQoljvb290tTU\nJFVVVdLa2iojIyNpr+NyRmpqamqS8vJyURRF9/Hjjz+KiMi7774r69atk8rKStm4caN88cUXGatH\nxFhN0WhUXnzxRbnppptEURRpbW2Vc+fOJa5x/PhxaW5uFkVR5KGHHpKhoaGM1BJn9Huvp6dH7r//\n/pTXsNo8xX3++ee6355pb2+X9vb2xPZ0a8Zq82R1uZZhzC/mV6ZZMb9sIiL/vDUjIiIimtuy4u0/\nIiIiIqtjU0VERERkAjZVRERERCZgU0VERERkAjZVRERERCZgU0VERERkAjZVRERERCZgU0VERERk\ngv8DJyTnOVnBFEcAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1172929b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"N = 40\n",
"K = 3\n",
"D = 3\n",
"def hierarchical_dirichlet(alpha=1, beta=1):\n",
" \"\"\"Hierarchical Dirichlet model.\n",
" \n",
" alpha is the population concentration parameter.\n",
" beta is the cluster concentration parameter.\n",
" \"\"\"\n",
" theta_pop = dirichlet(np.ones(D))\n",
" theta_cluster = dirichlet(alpha * theta_pop, shape=(K, D))\n",
" ks = categorical(np.ones(K), shape=N)\n",
" theta = np.stack([dirichlet(beta * theta_cluster[k]) for k in ks])\n",
" return locals()\n",
"\n",
"params = [\n",
" (1, 1),\n",
" (1, 10),\n",
" (10, 1),\n",
" (10, 10),\n",
"]\n",
"fig, axes = plt.subplots(2, 2, figsize=(10,10))\n",
"for (alpha, beta), ax in zip(params, axes.flat):\n",
" plt.sca(ax)\n",
" data = hierarchical_dirichlet(alpha, beta)\n",
" c = np.array(sns.color_palette())\n",
" plt.scatter(*data['theta'].T[:2], c=c[data['ks']], alpha=0.3)\n",
" plt.scatter(*data['theta_cluster'].T[:2], c=c, s=120, marker='x')\n",
" plt.scatter(*data['theta_pop'].T[:2], c='k', marker='x', s=240)\n",
" plt.xlim(-.1, 1.1)\n",
" plt.ylim(-.1, 1.1)\n",
" plt.title('α = {} β = {}'.format(alpha, beta)) "
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
},
"nav_menu": {},
"toc": {
"navigate_menu": true,
"number_sections": true,
"sideBar": true,
"threshold": 6,
"toc_cell": false,
"toc_section_display": "block",
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment