Skip to content

Instantly share code, notes, and snippets.

@kalaidin
Last active August 29, 2015 13:58
Show Gist options
  • Save kalaidin/9976120 to your computer and use it in GitHub Desktop.
Save kalaidin/9976120 to your computer and use it in GitHub Desktop.
Frugal Streaming IPython notebook
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:b32fcc7724761781ed884f2725fe331c5e39816f3a6fc39a61dbb3b2bcf15f81"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calculating percentiles using frugal streaming\n",
"========"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab --no-import-all inline\n",
"from ggplot import *\n",
"import numpy as np"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"stream = np.random.normal(loc=100.0, scale=10.0, size=10000)\n",
"df = pd.DataFrame({\"x\": stream})"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We use a [ggplot Python port](https://github.com/yhat/ggplot)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ggplot(aes(\"x\"), data=df) + geom_histogram(binwidth=1) + theme_seaborn(style=\"whitegrid\", context=\"talk\") + labs(\"elements\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x10ae7a7d0>"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 80,
"text": [
"<ggplot: (280420185)>"
]
}
],
"prompt_number": 80
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From [1]: the trick to generalize median estimation to any $\\frac{h}{k}$ -quantile estimation is that not every stream item seen will cause an update. If the current stream item is larger than estimation, an increment update will be triggered only with probability $\\frac{h}{k}$. The rationale behind it is that if we are estimating $\\frac{h}{k}$ -quantile, and if the current estimate is at stream\u2019s true $\\frac{h}{k}$ -quantile, we will expect to see stream items larger than the current estimate with probability $1-\\frac{h}{k}$."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def frugal_1u(stream, m=0, q=0.5):\n",
" trace = []\n",
" for val in stream:\n",
" r = np.random.random()\n",
" if val > m and r > 1 - q:\n",
" m += 1\n",
" elif val < m and r > q:\n",
" m -= 1\n",
" trace.append(m)\n",
" return m, trace"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Improvements to the algorithm: frugal_2u"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"constantly_one = lambda x: 1.0\n",
"\n",
"def frugal_2u(stream, m=0, q=0.5, f=constantly_one):\n",
" trace = []\n",
" step, sign = 1, 1\n",
" for item in stream:\n",
" if item > m and np.random.random() > 1 - q:\n",
" # Increment the step size if and only if the estimate keeps moving in\n",
" # the same direction. Step size is incremented by the result of applying\n",
" # the specified step function to the previous step size.\n",
" step += f(step) if sign > 0 else -1 * f(step)\n",
" # Increment the estimate by step size if step is positive. Otherwise,\n",
" # increment the step size by one.\n",
" m += step if step > 0 else 1\n",
" # Mark that the estimate increased this step\n",
" sign = 1\n",
" # If the estimate overshot the item in the stream, pull the estimate back\n",
" # and re-adjust the step size.\n",
" if m > item:\n",
" step += (item - m)\n",
" m = item\n",
" # If the item is less than the stream, follow all of the same steps as\n",
" # above, with signs reversed.\n",
" elif item < m and np.random.random() > q:\n",
" step += f(step) if sign < 0 else -1 * f(step)\n",
" m -= step if step > 0 else 1\n",
" sign = -1\n",
" if m < item:\n",
" step += (m - item)\n",
" m = item\n",
" # Damp down the step size to avoid oscillation.\n",
" if (m - item) * sign < 0 and step > 1:\n",
" step = 1\n",
" trace.append(m)\n",
" return m, trace"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So, how it works?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"m, trace = frugal_1u(stream)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"m"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 36,
"text": [
"97"
]
}
],
"prompt_number": 36
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ggplot(aes(x=\"x\", y=\"y\"), data=pd.DataFrame({\"y\": trace, \"x\": range(len(trace))})) + geom_line(size=5) + xlim(0, 300) + \\\n",
"theme_seaborn(style=\"whitegrid\", context=\"talk\") + labs(\"iterations\", \"estimate\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nWf8KAADguVp0gK2srNT+/fudxgmwAAAAnsvn38igtrZWVqtVhmE4HduxY4dsNpvDWFxcnDp06OCu\n8gAAANBIPh1gi4qK9Prrrzu9SOtmMjIyZLFYmrEqAAAA3A6fDbBVVVVaunSpLl261KjHsXwAAADA\ns/nsGtg9e/Y0Orz6+/urb9++zVQRAAAAmoLPBtji4uJGP2bo0KEKCwtrhmoAAADQVHwywJaWlmrL\nli1O41FRUUpISHD6SEpK0iOPPKKXXnrJhGpbFqvVqsWLF6u0tNTsUnAd+uKZSktLtXjxYlmtVrNL\nwXXoi+fiZ5lnKi0tVU5OTpP2xasC7JtvvqlOnTqpTZs2SktLU35+vst5ZWVl+umnnxzG/P39tXbt\nWn300UdOH2vXrtXcuXMVGhrqjqfRop06dUpLlixRWVmZ2aXgOvTFM5WVlWnJkiU6deqU2aXgOvTF\nc/GzzDOVlZVp3rx5TdoXrwmwa9as0cyZM/Xyyy9rz549ysrK0qhRo3T8+PEGPb5Xr14EVAAAAB/g\nNQF2yZIlmjJlip566il1795dr7/+umJjY/XWW2816PHevLvA1q1bzS4B9aA3nom+eCb64rnojWei\nL/Xzim20Ll++rOLiYs2ZM8dhfMSIESooKGjweYqLixUTE9PU5TW7sLAwn1nPk5CQoPfee0+hoaE+\n8Zx8pTf0xTOFhobqvffeU0JCgk88H/riuXylN/ws80zN8RtwrwiwZ86ckc1mU3R0tMN4VFSUy0X0\nsbGxCg0NdXgh19SpU5Wdna2cnJzmLrfJHTp0SHFxcWaX0WQOHTqkQYMG+cRz8qXe0BfPU1paSl88\nkK/1RfKd3kj8LPNEpaWlys7OVmxsbJOd02K4eo9VD1NaWqqEhARt3bpV/fv3t4/Pnz9fq1ev1jff\nfOPyMTcuFo6NjfWJvwgAAAAtmVfcgb3zzjvl7++v8vJyh/Hy8vJ603xcXBxhFQAAwAd5xYu4AgMD\nlZqaqo0bNzqMf/HFF8rKyjKpKgAAAJjBK+7AStKsWbP0+OOPKz09XVlZWVqxYoWsVqt+9atfmV0a\nAAAA3MhrAuyECRN09uxZLViwQGVlZerVq5c2bNigDh06mF0aAAAA3MgrXsQFAAAAXOMVa2ABAACA\na3wywL755pvq1KmT2rRpo7S0NOXn55tdUouSk5MjPz8/h48bd4TIyclRfHy8goODNXjwYB08eNCk\nan3X1q1bNXbsWCUkJMjPz0+5ublOc27Vh59++knPPfec2rdvr9DQUI0bN04nT55011PwWbfqzeTJ\nk52uoRtfsEpvmt6rr76qvn37Kjw8XFFRURo7dqwOHDjgNI/rxr0a0heuGfdbvny5evfurfDwcIWH\nhysrK0sbNmxwmNOc14rPBdg1a9Zo5syZevnll7Vnzx5lZWVp1KhROn78uNmltSg9evSQ1Wq1f5SU\nlNiPLVq0SEuWLNEbb7yhHTt2KCoqSsOHD1dlZaWJFfueS5cu6d5779WyZcvUpk0bWSwWh+MN6cPM\nmTO1bt06vf/++/ryyy914cIFjRkzRnV1de5+Oj7lVr2xWCwaPny4wzV04z8M9KbpbdmyRc8++6wK\nCwuVl5enVq1aadiwYTp//rx9DteN+zWkL1wz7tehQwf98Y9/1O7du7Vr1y4NGTJEP//5z7V3715J\nbrhWDB+Tnp5uTJs2zWGsa9euxosvvmhSRS1Pdna20bNnT5fH6urqjJiYGGPhwoX2serqaiMsLMx4\n++233VViixMaGmrk5ubaP29IHyoqKozAwEBj9erV9jnHjx83/Pz8jM8//9x9xfu4G3tjGIbxi1/8\nwhgzZky9j6E37lFZWWn4+/sb69evNwyD68ZT3NgXw+Ca8RTt2rUz/vznP7vlWvGpO7CXL19WcXGx\nRowY4TA+YsQIFRQUmFRVy/Tdd98pPj5eSUlJeuyxx3Ts2DFJ0rFjx1ReXu7Qo6CgIA0cOJAeuVFD\n+rBr1y5duXLFYU5CQoLuvvtuetXMLBaL8vPzFR0dre7du2vatGk6ffq0/Ti9cY8LFy6orq5OERER\nkrhuPMWNfZG4Zsxms9n0/vvvq6amRgMHDnTLteJTAfbMmTOy2WyKjo52GI+KipLVajWpqpYnIyND\nubm5+vzzz/WXv/xFVqtVWVlZOnfunL0P9MhcDemD1WqVv7+/IiMjHeZER0c7vSsemtbIkSO1atUq\n5eXlafHixdq+fbuGDBmiy5cvS6I37jJjxgylpKQoMzNTEteNp7ixLxLXjFlKSkoUGhqqoKAgTZs2\nTWvXrlX37t3dcq14zT6w8B4jR460/7lnz57KzMxUp06dlJubq379+tX7uBvXAcIc9MF8EydOtP85\nOTlZqampSkxM1Keffqrx48ebWFnLMWvWLBUUFCg/P79B1wTXjXvU1xeuGXP06NFD+/bt048//qh/\n/etfevTRR7V58+abPqaprhWfugN75513yt/f3ym5l5eXKzY21qSqEBwcrOTkZB05csTeB1c9iomJ\nMaO8Funa9/pmfYiJiZHNZtPZs2cd5litVnrlZrGxsUpISNCRI0ck0Zvm9vzzz2vNmjXKy8tTx44d\n7eNcN+aqry+ucM24R0BAgJKSkpSSkqKFCxcqIyNDy5cvb9C/9bfbE58KsIGBgUpNTdXGjRsdxr/4\n4gun7TTgPjU1Nfr6668VGxurTp06KSYmxqFHNTU1ys/Pp0du1JA+pKamKiAgwGHOiRMn9M0339Ar\nNzt9+rROnjxp/0eB3jSfGTNm2ENSt27dHI5x3ZjnZn1xhWvGHDabTXV1de65Vpr+NWjmWrNmjREY\nGGisXLnSOHjwoPHrX//aCAsLM3744QezS2sxZs+ebWzZssX47rvvjG3bthmjR482wsPD7T1YtGiR\nER4ebqxbt84oKSkxJk6caMTHxxuVlZUmV+5bKisrjd27dxu7d+82goODjfnz5xu7d+9uVB+efvpp\nIyEhwdi0aZNRXFxsDBo0yEhJSTHq6urMelo+4Wa9qaysNGbPnm0UFhYax44dMzZv3mxkZGQYHTp0\noDfN7JlnnjHatm1r5OXlGWVlZfaP67/vXDfud6u+cM2YY+7cucaXX35pHDt2zNi3b5/xwgsvGH5+\nfsbGjRsNw2j+a8XnAqxhGMabb75pdOzY0WjdurWRlpZmfPnll2aX1KI8+uijRlxcnBEYGGjEx8cb\nDz/8sPH11187zMnJyTFiY2ONoKAgY9CgQcaBAwdMqtZ3bd682bBYLIbFYjH8/Pzsf54yZYp9zq36\n8NNPPxnPPfecERkZaQQHBxtjx441Tpw44e6n4nNu1pvq6mrjwQcfNKKioozAwEAjMTHRmDJlitP3\nnd40vRv7ce1j3rx5DvO4btzrVn3hmjHH5MmTjcTERKN169ZGVFSUMXz4cHt4vaY5rxWLYRhGk99D\nBgAAAJqJT62BBQAAgO8jwAIAAMCrEGABAADgVQiwAAAA8CoEWAC4Tk5Ojvz8rv5orKioUE5Ojnbv\n3m1aPXv27FFOTo7Onz/vdMzPz0/z5883oSoAMBcBFgCuM3XqVG3btk3S1QA7f/580wPs/PnzXQbY\nbdu26Ze//KUJVQGAuVqZXQAAeJL4+HjFx8c7jDXlboOGYai2tlYBAQGNftyN0tPTm6osAPAq3IEF\ngOtcW0Lw/fffKykpSdLVu7J+fn7y8/PT3//+d/vcdevWKSMjQyEhIYqIiNCECRN0/Phxh/N1EMAg\n5wAABcRJREFU7NhRjz/+uN555x316NFDrVu31oYNGyRJ2dnZ6tOnj8LDw9W+fXsNHTpURUVF9se+\n++67evLJJyVJXbt2tdfwww8/SLq6hGDevHkOX++zzz5TZmamgoODdccdd2j8+PE6dOiQw5xBgwZp\nwIAB2rRpk/r06aOQkBD16tVLH330kcO8Q4cOafz48YqOjlabNm2UmJioCRMmyGaz3c63GABuGwEW\nAG5gsVgUFxendevWSZJeeuklbdu2Tdu2bdNDDz0kSVqxYoUefvhh9ezZUx988IHefvtt7d+/Xw88\n8IAqKysdzrV582YtXbpU8+bN0+eff65evXpJkk6ePKmZM2fq448/Vm5urqKiojRw4EDt379fkjRm\nzBi9/PLLkqR///vf9hpiYmIczn/NZ599ptGjR6tt27Zau3at3nrrLe3fv1/9+/dXaWmpw2OOHj2q\nmTNn6je/+Y3WrVun2NhYPfLIIzp69Kh93ujRo1VWVqYVK1Zo48aN+sMf/qCgoCDV1dU19bccABqn\nKd5ODAB8RXZ2tmGxWAzDMIxjx44ZFovF+Otf/+ow5+LFi0bbtm2Np556ymH82LFjRmBgoLF06VL7\nWGJiohESEmKUl5ff9OvW1tYaV65cMbp3727MmDHDPv63v/3NsFgsxtGjR50ec+PbnKamphrdunUz\nbDabQ00BAQHGrFmz7GMPPPCAERgYaBw5csQ+durUKcPf399YuHChYRiGcfr0acNisRiffPLJTesG\nADNwBxYAGqmwsFAXL17UpEmTVFtba/9ISEhQ9+7dtXXrVof5GRkZioqKcjrPpk2bNHjwYN15550K\nCAhQYGCgDh065PQr/4a4dOmSdu/erYkTJ9p3UZCuLmG4//77tWXLFof5Xbt2VefOne2ft2/fXlFR\nUfYlEJGRkUpKStLcuXO1cuVKHT58uNE1AUBzIcACQCOdOnVKkjRs2DAFBgY6fOzfv1/nzp2zz7VY\nLIqNjXU6R3FxsR566CG1bdtW77zzjoqKirRjxw717t1bNTU1ja7p/PnzMgzD5deKjo52qEmS2rVr\n5zSvdevW9q9tsVj0xRdfKC0tTS+++KK6d++uzp07a8WKFY2uDQCaGrsQAEAjRUZGSpJyc3OVnJzs\ndDwsLMzh8+vXqV7zwQcfKDAwUOvWrZO/v799/Ny5c4qIiGh0TREREbJYLLJarU7HrFarvebG6NSp\nk3JzcyVJe/fu1RtvvKFnnnlGHTt21MiRIxt9PgBoKtyBBYB6tG7dWpJUXV3tMH7//fcrLCxMhw8f\nVp8+fZw+unbtestzV1VVOfyqX5Ly8vKcdjG4VkNVVdVNzxcSEqLU1FStXbvW4UVW33//vQoKCjRo\n0KBb1nQzvXv31uLFiyVJBw4cuK1zAcDt4g4sANQjOjpakZGR+uc//6levXopODhYSUlJateunV57\n7TVNnz5dp0+f1siRIxUeHq6TJ09qy5YtGjx4sB577DFJ9e8hO2rUKC1btkyTJ0/W5MmTdejQIS1Y\nsEDx8fEOj7l2h3f58uV64oknFBAQoN69e7vcR/aVV17R6NGjNWbMGD399NOqrKxUdna2IiIiNHv2\nbIe5ruq6fmzfvn2aMWOGHn30UXXu3Fk2m03vvvuuAgICNGTIkMZ/MwGgCXEHFgCuY7FY7L/y9/Pz\n08qVK3X+/HkNGzZM/fr10/r16yVJ06ZN08cff6xvv/1WTzzxhEaPHq158+aprq5OKSkpDudzZcSI\nEXr99df11Vdf6Wc/+5neffddrVq1Sl26dHF4zL333qucnBx98sknGjBggPr166eysjKX53zwwQf1\n6aefqqKiQhMnTtTTTz+t5ORk5efnO2295aqu68diY2OVmJioJUuWaNy4cZo0aZKsVqvWr1/v8PwA\nwAwWo77bAwAAAIAH4g4sAAAAvAoBFgAAAF6FAAsAAACvQoAFAACAVyHAAgAAwKsQYAEAAOBV/h9P\nKeqGnjrWCgAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x10c291490>"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 79,
"text": [
"<ggplot: (281186685)>"
]
}
],
"prompt_number": 79
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"m, trace = frugal_2u(stream)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 38
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"m"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 39,
"text": [
"97.965040833138119"
]
}
],
"prompt_number": 39
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ggplot(aes(x=\"x\", y=\"y\"), data=pd.DataFrame({\"y\": trace, \"x\": range(len(trace))})) + geom_line(size=5) + xlim(0, 300) + \\\n",
"theme_seaborn(style=\"whitegrid\", context=\"talk\") +labs(\"iterations\", \"esimate\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAArAAAAHzCAYAAADYYC7pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdcU9f/P/BXwgYFcSAyxL1QEERBrbOidVY/rrqtVmyl\nWD+OftRqtda9F2rdo3W1Vls/LpwftSBLcYtW62Q4UZEZcn9/+DNfYxIIkOQm4fV8PPp41HNvbt7h\nMF45OfcciSAIAoiIiIiITIRU7AKIiIiIiAqDAZaIiIiITAoDLBERERGZFAZYIiIiIjIpDLBERERE\nZFIYYImIiIjIpOg9wJ4+fRrdunWDh4cHpFIptmzZojgmk8nwn//8B76+vihVqhTc3NwwYMAAPHjw\nQOka2dnZCAsLQ4UKFVCqVCl8+umnePTokb5LJyIiIiIjpPcA++bNG/j4+GDZsmWws7ODRCJROnbh\nwgVMmTIFFy5cwB9//IEHDx7gk08+QV5enuK8MWPG4Pfff8fOnTtx5swZvHr1Cl26dIFcLtd3+URE\nRERkZCSG3MigdOnSCA8Px+DBgzWec/36dXh7e+Py5cvw9vbGy5cv4eLigs2bN6Nfv34AgIcPH8LL\nywuHDh1C+/bt1V4nKSkJycnJSm2VKlWCm5ub7l4QERERERmcpdgFfOjly5cAAGdnZwBAfHw8cnNz\nlYKqh4cH6tati8jISI0BduHChViyZIlS29ixYzFu3Dg9Va4/crkcUql5TFfOzc0FAFhZWYlciW6Y\nS9+wX4yXOfUN+8V4mUvfsF+Ml64HEI0qwObk5GDcuHHo1q2b4oWmpKTAwsIC5cqVUzq3YsWKSE1N\n1Xitzz77DG3atFH6JnZxcdFP4aQ17lxsnNgvxot9Y5zYL8aJ/VJyGE2AlclkGDhwIF69eoX//ve/\nxb6eh4cHPDw8zGLKQEZGBuzt7cUuQyeSkpIA6P6dmFjMpW/YL8bLnPqG/WK8zKVv2C8lh1GMS8tk\nMvTr1w9XrlzB8ePHFdMHAMDV1RV5eXl49uyZ0mNSUlLg6upq6FKJiIiISGSiB9jc3Fz07dsXV65c\nwcmTJ1U+5m/UqBGsrKwQERGhaHv48CFu3LiBZs2aGbpcIiIiIhKZ3qcQvHnzBrdu3QLwdjLyvXv3\nkJCQgHLlysHNzQ29e/dGXFwc9u/fD0EQkJKSAgAoU6YMbG1t4eTkhOHDh+Pbb7+Fi4sLypYti7Fj\nx8LX1xft2rXTd/lEREREZGT0PgIbGxsLf39/+Pv7IysrC9OmTYO/vz+mTZuGhw8f4s8//0RycjIa\nNWoENzc3xX+7d+9WXGPp0qXo0aMH+vbti48++giOjo7Yv3+/0pqyRERERFQy6H0EtnXr1vluOKDN\nZgTW1tZYvnw5li9frsvSiIiIiMgEiT4HloiIiIioMBhgiYiIiMikMMASERERkUlhgCUiIiIik8IA\nS0REREQmhQGWiIiIiEwKAywRERERmRQGWCIiIiIyKQywRERERGRSGGCJiIiIyKQwwBIRERGRSWGA\nJSIiIiKTwgBLRERERCaFAZaIiIiITAoDLBERERGZFAZYIiIiIjIpDLBEREREZFIYYImIiIjIpDDA\nEhEREZFJYYAlIiIiIpPCAEtEREREJoUBloiIiIhMCgMsEREREZkUBlgiIiIiMikMsERERERkUhhg\niYiIiMikMMASERERkUlhgCUiIiIik8IAS0REREQmhQGWiIiIiEyKRBAEQewi9OHPP/9EZGQkWrdu\njZYtW4pdTrHk5eXBwsJC7DJ0Ijs7GwBgY2MjciW6YS59w34xXubUN+wX42UufcN+MV729vY6vZ6l\nTq9mRAICAhAQEAA3NzexSym2jIwMnXe8WNLS0gAAzs7OIleiG+bSN+wX42VOfcN+MV7m0jfsl5KD\nUwiIiIiIyKQwwBIRERGRSWGAJSIiIiKTwgBLRERERCaFAZaIiIiITAoDLBERERGZFAZYIiIiIjIp\nDLBEREREZFIYYImIiIjIpDDAEhEREZFJYYAlIiIiIpPCAEtEREREJoUBloiIiIhMCgMsEREREZkU\nBlgiIiIiMikMsERERERkUizFLoCIqKTJyclBQkICbGxs4O3tDUtL/iomIioM/tYkIjKg9PR0fPXV\nV7h+/ToAoGXLlpg/fz5DLBFRIfA3JhGRAYWHhyvCKwCcPn0au3btwoABA0SsiohMnSAIePDgAW7d\nugVBEAo8387ODr6+vihVqpQBqtM9BlgiIgO5e/cufv/9d5X2DRs2oGvXrnB0dBShKiIydYIgYMmS\nJdi+fXuhHmdvb49Vq1ahfv36eqpMfxhgiYgMJDw8HHl5eSrtr169wujRo+Hm5gYAqFixIjp37owa\nNWoonZeeno69e/ciOTkZH3/8MRo1aqR0PC8vD/v378f169cREBCAdu3aQSKR6O8FEZFROHPmTKHD\n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\nXPG7Bnb16tWaOXOmXnzxRe3evVvZ2dkaNWqUjh07ZnZqrUqvXr1ks9kcr9LSUse2V155RYsXL9br\nr7+u7du3Kzo6WsOHD1dVVZWJGfufCxcu6M4779TSpUvVrl07WSwWp+2NqcPMmTO1du1avffee/ri\niy/0448/asyYMaqvr/f0x/ErN6qNxWLR8OHDnc6ha/9hoDbNb/PmzXr66adVVFSk/Px8tWnTRsOG\nDdO5c+ccYzhvPK8xdeGc8bxOnTrpj3/8o3bt2qWdO3dq6NCh+vnPf649e/ZI8sC5YviZjIwMY9q0\naU6x7t27G88//7xJGbU+OTk5Ru/evd1uq6+vN2JjY42FCxc6YjU1NUZ4eLjx1ltveSrFVicsLMzI\ny8tzfN2YOlRWVhpBQUHGqlWrHGOOHTtmWK1W47PPPvNc8n7u2toYhmH84he/MMaMGdPgPtTGM6qq\nqoyAgABj3bp1hmFw3niLa+tiGJwz3qJDhw7Gn//8Z4+cK351BfbixYsqKSnRiBEjnOIjRoxQYWGh\nSVm1Tt9++60SEhKUnJysRx55REePHpUkHT16VBUVFU41Cg4O1qBBg6iRBzWmDjt37tSlS5ecxiQm\nJur222+nVi3MYrGooKBAMTEx6tmzp6ZNm6ZTp045tlMbz/jxxx9VX1+vyMhISZw33uLaukicM2az\n2+167733VFtbq0GDBnnkXPGrBvb06dOy2+2KiYlxikdHR8tms5mUVeuTmZmpvLw8ffbZZ/rLX/4i\nm82m7OxsnT171lEHamSuxtTBZrMpICBAUVFRTmNiYmJcnoqH5jVy5EitXLlS+fn5WrRokbZt26ah\nQ4fq4sWLkqiNp8yYMUOpqanKysqSxHnjLa6ti8Q5Y5bS0lKFhYUpODhY06ZN05o1a9SzZ0+PnCs+\nsw4sfMfIkSMdf+7du7eysrLUpUsX5eXlacCAAQ3ud+08QJiDOphv4sSJjj+npKQoLS1NSUlJ+uST\nTzR+/HgTM2s9Zs2apcLCQhUUFDTqnOC88YyG6sI5Y45evXpp7969+uGHH/Svf/1LDz/8sDZt2nTd\nfZrrXPGrK7C33nqrAgICXDr3iooKxcXFmZQVQkJClJKSosOHDzvq4K5GsbGxZqTXKl35Xl+vDrGx\nsbLb7Tpz5ozTGJvNRq08LC4uTomJiTp8+LAkatPSnn32Wa1evVr5+fnq3LmzI855Y66G6uIO54xn\nBAYGKjk5WampqVq4cKEyMzO1bNmyRv1bf7M18asGNigoSGlpadqwYYNT/PPPP3dZTgOeU1tbq6++\n+kpxcXHq0qWLYmNjnWpUW1urgoICauRBjalDWlqaAgMDncYcP35cX3/9NbXysFOnTunEiROOfxSo\nTcuZMWOGo0nq0aOH0zbOG/Ncry7ucM6Yw263q76+3jPnSvPfg2au1atXG0FBQcaKFSuMAwcOGL/+\n9a+N8PBw4/vvvzc7tVZj9uzZxubNm41vv/3W2Lp1qzF69GgjIiLCUYNXXnnFiIiIMNauXWuUlpYa\nEydONBISEoyqqiqTM/cvVVVVxq5du4xdu3YZISEhxvz5841du3Y1qQ5PPvmkkZiYaGzcuNEoKSkx\nBg8ebKSmphr19fVmfSy/cL3aVFVVGbNnzzaKioqMo0ePGps2bTIyMzONTp06UZsW9tRTTxnt27c3\n8vPzjfLycsfr6u87543n3agunDPmmDt3rvHFF18YR48eNfbu3Ws899xzhtVqNTZs2GAYRsufK37X\nwBqGYbzxxhtG586djbZt2xrp6enGF198YXZKrcrDDz9sxMfHG0FBQUZCQoLx4IMPGl999ZXTmNzc\nXCMuLs4IDg42Bg8ebOzfv9+kbP3Xpk2bDIvFYlgsFsNqtTr+PGXKFMeYG9Xhp59+Mp555hkjKirK\nCAkJMcaOHWscP37c0x/F71yvNjU1Ncb9999vREdHG0FBQUZSUpIxZcoUl+87tWl+19bjymvevHlO\n4zhvPOtGdeGcMcfkyZONpKQko23btkZ0dLQxfPhwR/N6RUueKxbDMIxmv4YMAAAAtBC/mgMLAAAA\n/0cDCwAAAJ9CAwsAAACfQgMLAAAAn0IDCwBXyc3NldV6+UdjZWWlcnNztWvXLtPy2b17t3Jzc3Xu\n3DmXbVarVfPnzzchKwAwFw0sAFxl6tSp2rp1q6TLDez8+fNNb2Dnz5/vtoHdunWrfvnLX5qQFQCY\nq43ZCQCAN0lISFBCQoJTrDlXGzQMQ3V1dQoMDGzyftfKyMhorrQAwKdwBRYArnJlCsF3332n5ORk\nSZevylqtVlmtVv397393jF27dq0yMzMVGhqqyMhITZgwQceOHXM6XufOnfXoo4/q7bffVq9evdS2\nbVutX79ekpSTk6N+/fopIiJCHTt21H333afi4mLHvu+8844ef/xxSVL37t0dOXz//feSLk8hmDdv\nntP7ffrpp8rKylJISIhuueUWjR8/XgcPHnQaM3jwYN1zzz3auHGj+vXrp9DQUPXp00cffvihJOLw\nLQAABUNJREFU07iDBw9q/PjxiomJUbt27ZSUlKQJEybIbrffzLcYAG4aDSwAXMNisSg+Pl5r166V\nJL3wwgvaunWrtm7dqgceeECStHz5cj344IPq3bu33n//fb311lvat2+f7r33XlVVVTkda9OmTVqy\nZInmzZunzz77TH369JEknThxQjNnztRHH32kvLw8RUdHa9CgQdq3b58kacyYMXrxxRclSf/+978d\nOcTGxjod/4pPP/1Uo0ePVvv27bVmzRq9+eab2rdvnwYOHKiysjKnfY4cOaKZM2fqN7/5jdauXau4\nuDg99NBDOnLkiGPc6NGjVV5eruXLl2vDhg36wx/+oODgYNXX1zf3txwAmqY5HicGAP4iJyfHsFgs\nhmEYxtGjRw2LxWL89a9/dRpz/vx5o3379sYTTzzhFD969KgRFBRkLFmyxBFLSkoyQkNDjYqKiuu+\nb11dnXHp0iWjZ8+exowZMxzxv/3tb4bFYjGOHDniss+1jzlNS0szevToYdjtdqecAgMDjVmzZjli\n9957rxEUFGQcPnzYETt58qQREBBgLFy40DAMwzh16pRhsViMjz/++Lp5A4AZuAILAE1UVFSk8+fP\na9KkSaqrq3O8EhMT1bNnT23ZssVpfGZmpqKjo12Os3HjRg0ZMkS33nqrAgMDFRQUpIMHD7r8yr8x\nLly4oF27dmnixImOVRSky1MY7r77bm3evNlpfPfu3dW1a1fH1x07dlR0dLRjCkRUVJSSk5M1d+5c\nrVixQocOHWpyTgDQUmhgAaCJTp48KUkaNmyYgoKCnF779u3T2bNnHWMtFovi4uJcjlFSUqIHHnhA\n7du319tvv63i4mJt375dffv2VW1tbZNzOnfunAzDcPteMTExTjlJUocOHVzGtW3b1vHeFotFn3/+\nudLT0/X888+rZ8+e6tq1q5YvX97k3ACgubEKAQA0UVRUlCQpLy9PKSkpLtvDw8Odvr56nuoV77//\nvoKCgrR27VoFBAQ44mfPnlVkZGSTc4qMjJTFYpHNZnPZZrPZHDk3RZcuXZSXlydJ2rNnj15//XU9\n9dRT6ty5s0aOHNnk4wFAc+EKLAA0oG3btpKkmpoap/jdd9+t8PBwHTp0SP369XN5de/e/YbHrq6u\ndvpVvyTl5+e7rGJwJYfq6urrHi80NFRpaWlas2aN001W3333nQoLCzV48OAb5nQ9ffv21aJFiyRJ\n+/fvv6ljAcDN4gosADQgJiZGUVFR+uc//6k+ffooJCREycnJ6tChg1599VVNnz5dp06d0siRIxUR\nEaETJ05o8+bNGjJkiB555BFJDa8hO2rUKC1dulSTJ0/W5MmTdfDgQS1YsEAJCQlO+1y5wrts2TI9\n9thjCgwMVN++fd2uI/vSSy9p9OjRGjNmjJ588klVVVUpJydHkZGRmj17ttNYd3ldHdu7d69mzJih\nhx9+WF27dpXdbtc777yjwMBADR06tOnfTABoRlyBBYCrWCwWx6/8rVarVqxYoXPnzmnYsGEaMGCA\n1q1bJ0maNm2aPvroI33zzTd67LHHNHr0aM2bN0/19fVKTU11Op47I0aM0GuvvaYvv/xSP/vZz/TO\nO+9o5cqV6tatm9M+d955p3Jzc/Xxxx/rnnvu0YABA1ReXu72mPfff78++eQTVVZWauLEiXryySeV\nkpKigoICl6W33OV1dSwuLk5JSUlavHixxo0bp0mTJslms2ndunVOnw8AzGAxGro8AAAAAHghrsAC\nAADAp9DAAgAAwKfQwAIAAMCn0MACAADAp9DAAgAAwKfQwAIAAMCn/B9foqiEmtapygAAAABJRU5E\nrkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x10ae8d990>"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 78,
"text": [
"<ggplot: (279875033)>"
]
}
],
"prompt_number": 78
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Exact result:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.percentile(stream, 50)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 41,
"text": [
"100.08803344268972"
]
}
],
"prompt_number": 41
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"References\n",
"------\n",
"\n",
"1: [Sketch of the Day: Frugal Streaming](http://blog.aggregateknowledge.com/2013/09/16/sketch-of-the-day-frugal-streaming/)\n",
"\n",
"2: [Frugal Streaming for Estimating Quantiles](http://link.springer.com/chapter/10.1007/978-3-642-40273-9_7)"
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment