Skip to content

Instantly share code, notes, and snippets.

@JnBrymn-EB
Created June 11, 2015 01:44
Show Gist options
  • Save JnBrymn-EB/72b93ac3ca819cb0f6be to your computer and use it in GitHub Desktop.
Save JnBrymn-EB/72b93ac3ca819cb0f6be to your computer and use it in GitHub Desktop.
distribution bounding demo
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from pylab import *\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import random"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class DistroBounder(object):\n",
" \n",
" def __init__(self,max_vals):\n",
" self.vals = []\n",
" self.low_count = []\n",
" self.high_count = []\n",
" self.max_vals = max_vals\n",
" \n",
" def put(self,new_val):\n",
" done = False\n",
" for i,v in enumerate(self.vals):\n",
" if new_val < v:\n",
" self.vals.insert(i,new_val)\n",
" self.low_count.insert(i,1)\n",
" self.high_count.insert(i,1)\n",
" done = True\n",
" break\n",
" if not done:\n",
" # this reached if this is the largest val yet seen\n",
" self.vals.append(new_val)\n",
" self.low_count.append(1)\n",
" self.high_count.append(1)\n",
" \n",
" while len(self.vals) > self.max_vals:\n",
" self.drop_one_val()\n",
"\n",
" def drop_one_val(self):\n",
" best_i = -1\n",
" best_area = Infinity\n",
" for i in xrange(1,len(self.vals)-1): #we dont' want to consider the first and last element\n",
" this_area = (self.vals[i+1]-self.vals[i])*self.low_count[i] + (self.vals[i]-self.vals[i-1])*self.high_count[i]\n",
" if this_area < best_area:\n",
" best_area = this_area\n",
" best_i = i\n",
"\n",
" self.high_count[best_i-1] += self.high_count[best_i]\n",
" self.low_count[best_i+1] += self.low_count[best_i]\n",
"\n",
" self.high_count.pop(best_i)\n",
" self.low_count.pop(best_i)\n",
" self.vals.pop(best_i)\n",
"\n",
" \n",
" def _cumulate(self,vect):\n",
" cumuval = 0\n",
" cumuvect = []\n",
" for val in vect:\n",
" cumuval += val\n",
" cumuvect.append(cumuval)\n",
" return cumuvect\n",
" \n",
" def plot(self):\n",
" figure()\n",
" plot(self.vals,self._cumulate(self.low_count), 'r')\n",
" plot(self.vals,self._cumulate(self.high_count), 'b')\n",
" xlabel('vals')\n",
" ylabel('cumulative count')\n",
" show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x3290490>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"db = DistroBounder(10000)\n",
"for i in xrange(10000):\n",
" db.put(random.normalvariate(10,3))\n",
"db.plot()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nk3wAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x2bcbf50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#less accurate \n",
"db = DistroBounder(1000)\n",
"for i in xrange(10000):\n",
" db.put(random.normalvariate(10,3))\n",
"db.plot()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEKCAYAAAAMzhLIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcTPn/B/D3abroRlIZhWYU1bKpLCGX8MO6bMhdcg2b\nXXbXfXctCbvWbVnWtYjkvu4sWTVWUXZVLEXKVExSSZepaJo5vz/o+/W1NlOazlxez8fj83hMn5qZ\n19mz5j2f8znncxiWZQkAAODf6HEdAAAA1BsKBQAAVAuFAgAAqoVCAQAA1UKhAACAaunXx5uEhIQE\niMVioVAoFAcEBIS8bx8AANQjlmXrtCUkJLgvXLhwlbm5eXFWVlaLuLg4Tw8Pjxssy5KTk9Pd5ORk\nl/fpq+u8aGhoaGjVtzofUbi7uydaWloWrF69eoFCodCLjIzsx+fzc4iIbGxscqOionoXFBRY1rbP\nxcUlpa4zAwDAv1PJoSeWZZmqx7m5uTY8Hk9ORMTj8eQSicROKpWa1aYvOzvbVhV5AQDg36l8jqK8\nvNy46jHLsoxMJjOoTZ9CodCTyWQGr782wzC4rBwAoBZe/0L/LiotFAzDsI0bN36Wk5PDJ3oZzNra\nOo+IqGp0oGwfEVFV3+tqsrGaJugVrnOoCrZPc6li21iWmJwc4qekkEtyMn1w7x7rlJ5S4ZJ+n3XM\nfGxg28S4vExgllfakClhDeXlPCN5Gc+osoxnVCk1MKyQGhpVSA2MeJVyowb0wrABr9zIhFdmaMwr\n19PXqySenoL0eHLSY1hGT09e9TPDY1716ylIT0/B8PTkpKenOPvgkMNgZ7+7xOgpiFfVz3v5PEZP\nwehRtV9SGeZdv2cUtX1+db/jCxpkDFzaMbi61371/jX6kq3SQsGyLOPl5RV7/fr1TkREJSUl5u7u\n7omlpaWmtelzc3NLUmVeAFC98nIyvn2b2t27R07371Pr+/ep9f0Umcv9+9TagGT0gVmW1KXyNs+5\nOL5RvwaS5w52Lx4J+vEumDg0e0DNmz8iK6t8atSoiCwsCqkRv+i/jxsVkYGBrC4yPglKDPo0aFBQ\nXbyWNqjzQpGVldVy+fLl3zEMwy5fvvy7BQsWrG7evPmjb7/9dqWrq+utvn37XiQiOnLkyMja9gGA\n5rh5k9r//jv9X2IiuScmkrtYzArb8ItzXEwyy1pX3DEckH/NalZFikFrV+ObVh8JbtCHH/5Nrq63\n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\ngGo9oigvLzeueqxQKPRkMpnB67/HyrEAAKqn1mc9NW7c+JlCofhPRmtr6zwu8wAA6CK1LhReXl6x\nJSUl5kREJSUl5m5ubklcZwIA0DW8oKAgrjP8K2dn57u///5734SEhA4mJiblc+fOXf/m30RFRfUu\nKipqlJOTw79//35re3v7LC6y1rWQkJCAX3/9dbhYLG7l4eGRwHWeulRaWmp66tSpIYaGhhXR0dG9\nHBwcHujr68u5zqUK2rofdWEfauu+I6rF/mNZViNaWFjYxKCgoKWvt4yMDPuJEyeGMQyjsLGxeXLr\n1q0Puc5ZFy0uLs7Tw8PjBsuy5OTkdDc5OdmF60x12cRisYBhGAXDMIoZM2Zs4zpPXbWEhAT3hQsX\nrjI3Ny/OyspqoU378c1t07Z9WFZWZrx69er5M2bM2LZjx45p2rTv3rZ9Nd1/nG+Asi0tLc3hbX2T\nJk3aHRUV1auoqKgh1xnrqgUHB383cODAsyzLUvfu3f/YvHnzZ1xnqsuWkZFh7+/vv/fmzZuuXGdR\nxbYxDKPIyMiw17b9WLVtmZmZLcVisUCb9uHGjRtnt2/fPunZs2cWRkZGz5cvX75Ym/bdm9u3du3a\nuTXZf2o9R6GsGzdudFi6dOmyR48eNec6S13Izc214fF4ciIiHo8nz87OtuU6U13LycnhHzlyZOSu\nXbumcJ2lLrGvnYmnbfvx9W1jGIbVpn3o4+Nz6ptvvvnewsKi0MTEpCw4OHiJNu2717fP1NS01NTU\ntLQm+0+tT49VxvDhw3/t27fvxS+//HLDhAkT9kZFRfXmOtP7etdpwZrO0tKyYP78+Wvat29/k8/n\n5zg6Oqb16NHjD65z1TVt3o/atg8FAkGGQCDIuHLlSnc+n5/TpUuXa3l5edZE2rHv3tw+Pz+/CAcH\nh3Rl95/Gjyhyc3Ntnj592sTKyio/Pj7ek+s8dUHbTwvOzc21ycvLs7ayssonIrp+/XonrjPVNYZh\nWG3ej9q4D6VSqVloaOjUqKio3pmZmfbatu9e376EhASPmuw/jS4ULMsyS5YsCb53755TUVFRIwcH\nh3SuM9UFbT8tODIysl9oaOjUwsJCCyKiVq1aPeA6U11jWZbR1v3IsiyjjfswMDBwq5OT071NmzbN\nGjx48Blt23dV2/fzzz/PTklJcanJ/lPrJTxe99NPP31VXFzc8PU+Hx+fU3fu3GmbkJDgkZCQ4LF2\n7dp5H3300V9cZaxLfn5+EQKBIEMikdiFhYVN4jpPXSosLLRYvHjxivz8fKumTZs+2bhx4xdcZ6oL\nWVlZLZctW7Y0LCxs0uTJk3cvWLBg9bJly5Zqw358c9umT5++Y+/evRO0ZR/u3r178tSpU0OJXo4G\nL1682Dc0NHSqNuw7on9u39GjR0dcunSpj7L7T2MKBQAAcEOjDz0BAIDqoVAAAEC1UCgAAKBaKBQA\nAFAtFAoAFQoMDNyqp6en4DoHwPvAWU8AKpSZmWkvFArFr1+8BaBp8D8vgAqxuAsjaAGNX+sJgCu/\n/PLLZ7Nmzdq0YcOGL2UymcG5c+cGFhUVNRoxYsTRhIQEj927d09+/e/XrFkz38DAQHbp0qU+W7Zs\nmdmiRYuHXGUHqAmMKABq6bPPPvulY8eOfxoYGMhMTEzKli9f/l1lZaX+nDlz1qemprY5d+7cwNf/\n/uDBg2OaNm36ZO7cuessLCwKucoNUFMoFADvYfTo0YcOHz486sGDB626du16NTg4eMn333//TXl5\nufHrq8cSES1ZsiT4m2+++X7MmDEHq9YRAtAEKBQA72HUqFGHY2JiutnZ2Ul27949efbs2T8vWrRo\nVdOmTZ+8OT+RmpraRiwWCydNmhR27dq1LlxlBqgpzFEAvIfmzZs/6tOnz6URI0YcffLkSdMmTZo8\nPXDgwFihUCjev3//uPT0dAeGYdhdu3ZNOX/+/MeVlZX6eXl51t7e3iKuswMoC6fHAgBAtXDoCQAA\nqoVCAQAA1UKhAACAaqFQAABAtVAoAACgWigUAABQLRQKAACo1v8DnAcTNMgOhPYAAAAASUVORK5C\nYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x3199bd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#less accurate \n",
"db = DistroBounder(100)\n",
"for i in xrange(10000):\n",
" db.put(random.normalvariate(10,3))\n",
"db.plot()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x31ad190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#less accurate \n",
"db = DistroBounder(1000)\n",
"for i in xrange(10000):\n",
" db.put(random.normalvariate(10,3))\n",
"db.plot()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x2b63150>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"db = DistroBounder(100)\n",
"for i in xrange(10000):\n",
" db.put(random.triangular(10,20))\n",
"db.plot()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x3189a10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def my_rand():\n",
" start = random.choice([1,3])\n",
" return start+random.random()\n",
"\n",
"db = DistroBounder(100)\n",
"for i in xrange(10000):\n",
" db.put(my_rand())\n",
"db.plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment