{ "metadata": { "name": "", "signature": "sha256:c06580eead8a95974e684a87573a041369a8f259cf7b0befea1c1a5389c0238b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "*Sebastian Raschka* \n", "last modified: 03/31/2014" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "I am really looking forward to your comments and suggestions to improve and extend this tutorial! Just send me a quick note \n", "via Twitter: [@rasbt](https://twitter.com/rasbt) \n", "or Email: [bluewoodtree@gmail.com](mailto:bluewoodtree@gmail.com)\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem Category\n", "- Statistical Pattern Recognition \n", "- Supervised Learning \n", "- Parametric Learning \n", "- Bayes Decision Theory \n", "- Univariate data \n", "- 2-class problem\n", "- equal variances\n", "- equal priors\n", "- Gaussian model (2 parameters)\n", "- No Risk function\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "# Sections\n", "\n", "\n", "

Given information
\n", "• Deriving the decision boundary
\n", "• Plotting the class conditional densities, posterior probabilities, and decision boundary
\n", "• Classifying some random example data
\n", "• Calculating the empirical error rate
\n", "\n", " \n", "\n", " \n", " \n", "\n", "\n", "\n", "


" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Given information:\n", "\n", "[back to top]
\n", "\n", "\n", "####model: continuous univariate normal (Gaussian) model for the class-conditional densities\n", "\n", "\n", "$ p(x | \\omega_j) \\sim N(\\mu|\\sigma^2) $\n", "\n", "$ p(x | \\omega_j) \\sim \\frac{1}{\\sqrt{2\\pi\\sigma^2}} \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-\\mu}{\\sigma}\\bigg)^2 \\bigg] } $\n", "\n", "\n", "####Prior probabilities:\n", "\n", "$ P(\\omega_1) = P(\\omega_1) = 0.5 $\n", "\n", "#### Variances of the sample distributions\n", "\n", "$ \\sigma_1^2 = \\sigma_2^2 = 1 $\n", "\n", "#### Means of the sample distributions\n", "\n", "$ \\mu_1 = 4, \\quad \\mu_2 = 10 $\n", "\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Deriving the decision boundary\n", "[back to top]
\n", "### Bayes' Rule:\n", "\n", "\n", "$ P(\\omega_j|x) = \\frac{p(x|\\omega_j) * P(\\omega_j)}{p(x)} $\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "###Bayes' Decision Rule:\n", "\n", "Decide $ \\omega_1 $ if $ P(\\omega_1|x) > P(\\omega_2|x) $ else decide $ \\omega_2 $.\n", "
\n", "\n", "\n", "\\begin{equation}\n", "\\Rightarrow \\frac{p(x|\\omega_1) * P(\\omega_1)}{p(x)} > \\frac{p(x|\\omega_2) * P(\\omega_2)}{p(x)}\n", "\\end{equation} \n", "\n", "We can drop $ p(x) $ since it is just a scale factor.\n", "\n", "\n", "$ \\Rightarrow P(x|\\omega_1) * P(\\omega_1) > p(x|\\omega_2) * P(\\omega_2) $\n", "\n", "$ \\Rightarrow \\frac{p(x|\\omega_1)}{p(x|\\omega_2)} > \\frac{P(\\omega_2)}{P(\\omega_1)} $\n", "\n", "$ \\Rightarrow \\frac{p(x|\\omega_1)}{p(x|\\omega_2)} > \\frac{0.5}{0.5} $\n", "\n", "$ \\Rightarrow \\frac{p(x|\\omega_1)}{p(x|\\omega_2)} > 1 $\n", "\n", "$ \\Rightarrow \\frac{1}{\\sqrt{2\\pi\\sigma_1^2}} \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-\\mu_1}{\\sigma_1}\\bigg)^2 \\bigg] } > \\frac{1}{\\sqrt{2\\pi\\sigma_2^2}} \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-\\mu_2}{\\sigma_2}\\bigg)^2 \\bigg] } $\n", "\n", "\n", "Since we have equal variances, we can drop the first term completely.\n", "\n", "\n", "\n", "\n", "$ Rightarrow \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-\\mu_1}{\\sigma_1}\\bigg)^2 \\bigg] } > \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-\\mu_2}{\\sigma_2}\\bigg)^2 \\bigg] } \\quad\\quad \\bigg| \\;ln, \\quad \\mu_1 = 4, \\quad \\mu_2 = 10, \\quad \\sigma=1 $\n", "\n", "$ \\Rightarrow -\\frac{1}{2} (x-4)^2 > -\\frac{1}{2} (x-10)^2 \\quad \\bigg| \\; \\times(-2) $\n", "\n", "$ \\Rightarrow (x-4)^2 < (x-10)^2 $\n", "\n", "$ \\Rightarrow x^2 - 8x + 16 < x^2 - 20x + 100 $\n", "\n", "$ \\Rightarrow 12x < 84 $\n", "\n", "$ \\Rightarrow x < 7 $\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Plotting the class conditional densities, posterior probabilities, and decision boundary\n", "\n", "[back to top]
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "\n", "def pdf(x, mu, sigma):\n", " \"\"\"\n", " Calculates the normal distribution's probability density \n", " function (PDF). \n", " \n", " \"\"\"\n", " term1 = 1.0 / ( math.sqrt(2*np.pi) * sigma )\n", " term2 = np.exp( -0.5 * ( (x-mu)/sigma )**2 )\n", " return term1 * term2\n", "\n", "# generating some sample data\n", "x = np.arange(0, 100, 0.05)\n", "\n", "# probability density functions\n", "pdf1 = pdf(x, mu=4, sigma=1)\n", "pdf2 = pdf(x, mu=10, sigma=1)\n", "\n", "# Class conditional densities (likelihoods)\n", "plt.plot(x, pdf1)\n", "plt.plot(x, pdf2)\n", "plt.title('Class conditional densities (likelihoods)')\n", "plt.ylabel('p(x)')\n", "plt.xlabel('random variable x')\n", "plt.legend(['p(x|w_1) ~ N(4,1)', 'p(x|w_2) ~ N(10,1)'], loc='upper right')\n", "plt.ylim([0,0.5])\n", "plt.xlim([0,20])\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "def posterior(likelihood, prior):\n", " \"\"\"\n", " Calculates the posterior probability (after Bayes Rule) without\n", " the scale factor p(x) (=evidence). \n", " \n", " \"\"\"\n", " return likelihood * prior\n", "\n", "# probability density functions\n", "posterior1 = posterior(pdf(x, mu=4, sigma=1), 0.5)\n", "posterior2 = posterior(pdf(x, mu=10, sigma=1), 0.5)\n", "\n", "# Class conditional densities (likelihoods)\n", "plt.plot(x, posterior1)\n", "plt.plot(x, posterior2)\n", "plt.title('Posterior Probabilities w. Decision Boundary')\n", "plt.ylabel('P(w)')\n", "plt.xlabel('random variable x')\n", "plt.legend(['P(w_1|x)', 'p(w_2|X)'], loc='upper right')\n", "plt.ylim([0,0.5])\n", "plt.xlim([0,20])\n", "plt.axvline(7, color='r', alpha=0.8, linestyle=':', linewidth=2)\n", "plt.annotate('R1', xy=(4, 0.3), xytext=(4, 0.3))\n", "plt.annotate('R2', xy=(10, 0.3), xytext=(10, 0.3))\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEZCAYAAACXRVJOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XdcFNfaB/DfUpQuIIg0QQEBQQFrLBQblihiR41ijSaS\nxDRzjSaSxGv03pioQXOJsRfEFMSKxoISIxIjxgKIBQQRjQqCSF+e948N+7pSF3Z3Fni++fjJLnNm\nzrOzu/PsnDNzjoiICIwxxlo8DaEDYIwxph44ITDGGAPACYExxtg/OCEwxhgDwAmBMcbYPzghMMYY\nA8AJoVnZvXs3hg0bJnQY1dLQ0MCdO3catK69vT1OnjxZ7bK4uDi4uLjIlD116hQAYOXKlZg3b16N\n21Xn/aUs7u7uOHv2bK1lMjIyYGhoiOZ+RXpjPpPNFrEGsbOzI11dXTIwMCALCwuaOXMmFRQUNHh7\ny5cvp9dee02BETaeIl+jSCSi27dvN2hde3t7OnnyZKPKpqWlkUgkIrFY3KAYVEkkEpG+vj4ZGBhQ\n27ZtafDgwRQZGSl0WArx4mszMzOjKVOm0NOnTwWLpaGfyeaKzxAaSCQS4dChQ3j27BkuXbqEixcv\nYsWKFYLFIxaLG7wuEVX7a7C+r7G8vLzBdatada9THV25cgXPnj1DamoqZs6ciZCQEHz++edCh6UQ\nla/tzp07yM3NRWhoqNAhyaUpfd7lxQlBAaysrDB8+HBcu3YNAHDgwAG4ubnBxMQEAwcOREpKirTs\n6tWrYWNjAyMjI7i4uODUqVOIiYnBl19+icjISBgaGsLLywsAkJeXhzlz5sDKygo2Njb45JNPUFFR\nAQDYtm0b+vfvj/feew9mZmYIDQ3Ftm3b4O3tLa3r999/R69evWBsbIzevXvj/Pnz0mV+fn5YtmwZ\n+vfvD319faSlpdXrNV6/fh2A5HR748aNcHJygrOzMwBg06ZNcHJyQtu2bTFmzBhkZ2fLbOPw4cNw\ncHCAubk5Fi9eLD043759G4MGDYKZmRnMzc3x2muvIS8vT2bdhIQEuLm5wdTUFLNnz0ZJSQkAIDY2\nFra2ttXGHBoaiunTpwMAfHx8AADGxsYwMjJCfHx8lf2VkpKCoUOHom3btnBxccGPP/4oXXbkyBG4\nubnByMgINjY2WLNmTbV12tnZ4dKlSwAkTVIaGhpITk4GAGzevBljx46tdT+/zNTUFK+99hq+++47\nfPnll8jJyQFQ+2cDkLwXXbp0gZGREdzc3HD58mUAsk1qCQkJ6NmzJ9q0aYP27dvj/fffBwCkp6dD\nQ0NDur379+8jICAAbdu2hZOTE3744QeZfTxp0iQEBwfDyMgI7u7u+PPPP+v12gwNDTF69GgkJSVJ\n/1ZbXTNnzsQnn3wiff7ye29vb481a9bAw8MDxsbGCAoKkn5OAOC///2vdH9t2bJFJpbDhw/Dy8sL\nbdq0QYcOHfDZZ59Jl1Xujy1btsDOzg6DBw/GqFGjEBYWJrONbt26ITo6ul6vXW0Je4LSdNnb29OJ\nEyeIiCgjI4Pc3Nzo008/pRs3bpC+vj6dOHGCysvL6T//+Q85OjpSaWkppaSkkK2tLWVnZxMR0d27\nd6WnrKGhoTR9+nSZOgIDA2nBggVUWFhIf//9N/Xu3ZvCw8OJiGjr1q2kpaVFYWFhJBaLqaioiLZu\n3UoDBgwgIqInT56QsbEx7dq1i8RiMUVERJCJiQnl5OQQEZGvry/Z2dlRUlISicViKisrq/drJJKc\nbvv7+1Nubi4VFxfTyZMnyczMjBITE6mkpITeeust8vHxkW5LJBLRoEGDKDc3lzIyMqhz5870ww8/\nEBHRrVu36MSJE1RaWkqPHj0iHx8fWrRokXRdOzs76tq1K927d49ycnKof//+tGzZMiIiOn36NNnY\n2MjEXNlkFBoaKm2GS09Pr9Jk9OL+KigoIBsbG9q2bRuJxWJKTEwkMzMzSk5OJiKi9u3b02+//UZE\nRE+fPqVLly5V+7mYMWMGrVmzhoiI5s2bR46OjvTdd98REdH06dNp7dq11a73ouqaMkpLS0lLS4ti\nYmKIqPbPxr59+8ja2pouXrwo3b93796tsn9eeeUV2rVrFxERPX/+nOLj44moavOat7c3LVy4kEpK\nSujy5ctkbm5Op06dIiJJU6eOjg4dPXqUKioqaMmSJfTKK6/U+tpu3bpFREQ5OTk0dOhQWr58uXR5\nbXXNnDmTPvnkE2nZ6t77Pn36UHZ2NuXk5JCrqyv973//IyKio0ePkoWFBV2/fp2eP39OU6ZMkdnP\nsbGxdO3aNSIiunLlCllYWND+/ftl9kdwcDAVFhZSUVER7du3j/r06SOt+/Lly9S2bdtqv0dNCSeE\nBrKzsyMDAwMyNjYmOzs7WrhwIRUVFdHnn39OkydPlparqKgga2trOnPmDN28eZPatWsnPfi96OU+\nhAcPHlDr1q2pqKhI+rc9e/bQwIEDiUhyMOvQoYPMNl48wO3YsUPmA0tE1LdvX9q2bRsREfn5+cl8\nEev7GouLi4lI8sU+ffq0tOzs2bPpo48+kj4vKCggbW1t6YFIJBLRsWPHpMs3btxIgwcPrrbeqKgo\n8vLykj63t7eXHuyIiI4cOUIODg5EVHtCeHGfVteH8OL+2rt3L3l7e8vE8frrr9Nnn31GREQdOnSg\n8PBwysvLq3Wfbd68mQICAoiIyNXVlTZv3kxBQUFEJNmfiYmJta5PVHPbdvv27WnPnj11fjb8/f1p\n/fr11W77xf3j4+NDy5cvp0ePHsmUeXFfZWRkkKampkzf0ZIlS2jmzJlEJNnHQ4cOlS67fv066erq\n1vrajIyMyNjYmDQ1NcnV1ZWysrKIiOqsa+bMmdIfAkTVv/e7d++WPl+8eDEtWLCAiIhmzZpFS5Ys\nkS5LTU2ttQ/hnXfeoXfffVdmf6SlpUmXFxUVkYmJiTS5vf/++7Rw4cIaX3dTwU1GDSQSiRAdHY3c\n3Fykp6cjLCwMOjo6yM7ORocOHWTK2draIisrC46Ojli7di1CQ0NhYWGBKVOmVGlWqXT37l2UlZXB\n0tISJiYmMDExwYIFC/Do0SNpmZqaSgDJqfeLcQCS5oz79+/Xa/2aXmPr1q2rXT87Oxt2dnbS5/r6\n+mjbti2ysrKqLd+hQwdpLA8fPkRQUBBsbGzQpk0bTJ8+HU+ePJGJpaZ1FeXu3bu4cOGCdF+bmJhg\nz549ePjwIQDg559/xpEjR2Bvbw8/Pz/Ex8dXux0fHx/ExcXhwYMHEIvFmDhxIs6dO4e7d+8iLy8P\nnp6eDYqvrKwMjx49gqmpaZ2fjXv37sHBwaHObW7evBmpqalwdXVF7969cfjw4Spl7t+/D1NTU+jr\n60v/1qFDB5n31cLCQvpYT08PxcXFMs1XL0tMTERubi6Ki4uxYMECeHt7o6SkpF511aV9+/bSx7q6\nunj+/DkAyefz5c/Qiy5cuICBAweiXbt2MDY2Rnh4eK2fQR0dHUyaNAk7d+4EEWHv3r3S5smmjBOC\ngllZWeHu3bvS50SEzMxMWFtbAwCmTJmCuLg43L17FyKRCB999BEAycH3Rba2tmjdujWePHmC3Nxc\n5ObmIi8vD1evXpWWeXmdF1lbW8vEAUgOepVx1LV+fby4vpWVFdLT06XPnz9/jidPnsjUl5GRIfO4\nctnHH38MTU1NXLt2DXl5edi5c2eVA8rL61pZWTU41up06NABvr6+0n2dm5uLZ8+eYcOGDQCAnj17\nYv/+/Xj06BECAwMxadKkarfj6OgIPT09fPvtt/D19YWhoSHat2+P77//Xqa/Ql7R0dHQ0tJC7969\n6/xs2Nra4tatW3Vu09HREXv27MGjR4/w0UcfYcKECSgqKpIpY2VlhZycHBQUFEj/lpGRARsbmwa/\nlkpaWlqYM2cO0tLScP369Trr0tfXR2FhoXTZgwcP6l2XpaVllc/Qi6ZOnYrAwEDcu3cPT58+xYIF\nC6p8Bl/+DAUHB2P37t04ceIE9PT00KdPn3rHo644ISjYpEmTcPjwYZw6dQplZWVYs2YNdHR00K9f\nP6SmpuLUqVMoKSlB69atoaOjA01NTQCSXzbp6enSjlZLS0v4+/vjvffew7Nnz1BRUYHbt2/XeQ15\npREjRiA1NRUREREoLy9HZGQkUlJSMGrUKGkZUuAVN1OmTMHWrVvx119/oaSkBB9//DFeeeUVmV9i\nX331FZ4+fYrMzEysX78ekydPBgAUFBRAX18fRkZGyMrKwn//+1+ZbRMRNmzYgKysLOTk5ODf//43\ngoKC5IrP3NwcGhoauH37drXLX331VaSmpmLXrl0oKytDWVkZ/vjjD6SkpKCsrAy7d+9GXl4eNDU1\nYWhoKH3fquPr64uwsDD4+voCkHTgv/i8Pirfm5ycHOzevRshISH417/+BRMTkzo/G3PnzsVXX32F\nS5cugYhw69atKgdAANi1a5f0rKJNmzYQiUTQ0JA9JNja2qJfv35YsmQJSkpKcOXKFWzZsgWvvfZa\nvV9LTa9NLBZj69at0NPTQ6dOneqsy9PTE0eOHEFubi4ePHiAtWvX1ruuSZMmYdu2bUhOTkZhYaFM\npzEg+QyamJigVatWSEhIwJ49e+r8EdG3b1+IRCJ88MEHmDFjRkN2hdrhhKBgnTt3xq5du/DWW2/B\n3Nwchw8fxsGDB6GlpYWSkhIsWbIE5ubmsLS0xOPHj/Hll18CACZOnAgAaNu2LXr27AkA2LFjB0pL\nS9GlSxeYmppi4sSJ0l9FIpGoygf2xb+1bdsWhw4dwpo1a2BmZoavvvoKhw4dgqmpqUz5hnp53cGD\nB+OLL77A+PHjYWVlhbS0NOzdu1emzJgxY9CjRw94eXlh1KhRmD17NgBg+fLluHTpEtq0aYPRo0dj\n/PjxMtsXiUSYNm0a/P394eDgACcnJyxbtqzO1/Hi/tDT08PSpUvRv39/mJqa4sKFCzLLDQ0Ncfz4\ncezduxfW1tawtLTEkiVLUFpaCkBy8OzYsSPatGmD77//Hrt3765x3/j6+qKgoEB6ZdPLz1euXImR\nI0fWun89PDxgaGgIJycnbNmyRdrUWKm2z8aECROwdOlSTJ06FUZGRhg3bhxyc3Or1HHs2DG4u7vD\n0NAQ7777Lvbu3SttEnxxn0ZERCA9PR1WVlYYN24cPv/8cwwaNKjKPn5xv9fntZmammLnzp2IioqC\nsbFxnXVNnz4dHh4esLe3x/DhwxEUFFRrXS/GNnz4cCxatAiDBg1C586dMXjwYJl1N27ciE8//RRG\nRkb44osvpD9W6npNM2bMwNWrVxuVINWJiBT5M/ElMTExWLRoEcRiMebOnSttHqkUGxuLMWPGoFOn\nTgCA8ePHy3zRGWNMne3cuRObNm2q95m7utNS1obFYjFCQkJw4sQJWFtbo1evXggICICrq6tMOV9f\nXxw4cEBZYTDGmFIUFhZiw4YNCAkJEToUhVFak1FCQgIcHR1hb28PbW1tBAUFVXvThhJPUBhjTCmO\nHTuGdu3awdLSElOnThU6HIVRWkLIysqSuUzLxsamyuVjIpEIv//+Ozw8PDBy5EiZOxYZY0xdDRs2\nDAUFBYiKiqrSEd+UKa3JqD4dlt27d0dmZib09PRw9OhRBAYGIjU1VVkhMcYYq4XSEoK1tTUyMzOl\nzzMzM6tcu2xoaCh9PGLECLz55pvIycmRuRIGkFwvXdPlgowxxqrn4OBQr3tSpJR1C3RZWRl16tSJ\n0tLSqKSkhDw8PCgpKUmmzIMHD6iiooKIiC5cuEB2dnbVbkuJYbZIdQ1ZweqP96Vi8f5ULHmPnUo7\nQ9DS0kJYWBiGDRsGsViMOXPmwNXVFeHh4QCA+fPn46effsJ3330HLS0t6OnpVblunTVT/9xngYsX\nhY2DMSZDaQkBkDQDjRgxQuZv8+fPlz5euHAhFi5cqMwQmDriRMCYWmo+3eOs3vz8/IQOodngfalY\nvD+FpdQ7lRVFJBLx/QqMMSYneY+dSm0yYqxa3IfQbJmamlY7bhJTLhMTE+lseo3BZwiMMYXh76ow\natrv8r4f3IfAGGMMACcExhhj/+CEwFSvZ8//70dgjKkNTghM9S5e5A5lpjbCw8Px7rvvqqSu2NhY\nDBw4sF5lw8LC8K9//UvJEcnihMAYa/bs7e2hp6cnneN61qxZeP78OUpLS/Hvf/8bixcvVkg9ZWVl\nmDBhAjp27AgNDQ2cOXOmwduaN28edu/eLZ3mVBU4ITDGmj2RSIRDhw7h2bNnuHTpEi5evIgVK1Yg\nOjoaLi4usLS0VFhdPj4+2LVrF9q3b9+oaWpbt26NESNGYMeOHQqLrS6cEJjqcR8CE5CVlRVGjBiB\na9euISYmRubu6ODgYHz99dcAJHO6aGhoYOPGjQCA27dvo23btrVuW1tbG2+//Tb69+8PTU3NWsuW\nlpbCy8sLYWFhACSzTPbv3x8rVqyQlvHz88Phw4cb8jIbhBMCUz3uQ2ACqLwePzMzE0eOHIGXlxeu\nXr0KZ2dnaRk/Pz/ExsYCAM6cOYNOnTpJ50s+c+YMfHx8FBZPq1atsGvXLnz66adISUnBqlWrQERY\nunSptIyLiwv++usvhdVZF04IjDGVEYkU809eRITAwECYmJjA29sbfn5++Pjjj/H06VOZeVl8fHzw\n22+/gYgQFxeHxYsX49y5cwAkCcHX11dRuwIA4ObmhmXLlmHMmDH4+uuvsXPnTplmJkNDQ+Tl5Sm0\nztpwQmCMqQyRYv7JSyQSITo6Grm5uUhPT0dYWBh0dHRgYmKC/Px8aTkHBwfo6+vj8uXLiIuLw6hR\no2BlZYXU1FScPXtW4QkBAGbMmIGMjAyMHDkSDg4OMsuePXuGNm3aKLzOmnBCYKrHfQhMTXTr1q3K\ntL2+vr748ccfUVZWBisrK/j6+mLbtm3Izc2Fp6enwmN48803MWrUKMTExEjPRiolJycrpc6acEJg\nqsd9CExNjBw5ssqlob6+vggLC5P2F/j5+SEsLAze3t71umqopKQExcXFVR5XZ+fOnUhMTMT27dux\nfv16BAcH4/nz59LlZ86cqTKnjDJxQmCMtVijRo1CSkoKsrOzpX/z8fFBQUGBNCH0798fRUVF9e5Q\ndnZ2hp6eHu7fv49hw4ZBX18fGRkZVcplZGTg3XffxY4dO6Cnp4cpU6agZ8+eeO+99wAAxcXFOHr0\nKIKDgxXwSuuHRztljClMU/yubtq0CUlJSfjmm2+UXldsbCw+++wznD59us6yYWFhuHfvHlatWlVn\nWUWNdsrzITDV4/kQmBqZN2+e0CFUKyQkROV1cpMRUz3uQ2BN2MqVK2FoaFjl36uvvlrnuiKRqFF3\nLysbNxkxxhSGv6vC4AlyGGOMKRQnBKZ6fB8CY2qJm4wYYwrD31VhcJMRY4wxheKEwBhjDAAnBCYE\n7kNgaqSkpARubm54+PChSurz8/OTaya1Pn36ICkpSYkR/T9OCEz1+D4Epka+//57+Pr6wsLCQiHb\n++CDD9C5c2cYGRnB1dUVO3fulFn+4r0IiYmJaNOmDW7fvi1d/ueff8LExEQ63MUHH3yATz/9VCGx\n1YUTAmOsRQsPD8f06dMVtj0DAwMcOnQI+fn52L59O9555x2cP3++2rJeXl4ICQmR3i1dVlaG2bNn\n44svvkCHDh0AAKNHj8bp06dVcgbDCYEx1uzZ29tj1apVcHNzg6mpKWbPno2SkhJkZGTgzp076NOn\nDwAgLS0NJiYm0vXmzZsnc+Ywffp0rFu3rta6QkND0blzZwBA79694e3tXWNCAIDly5cjOzsb33//\nPVauXAkjIyOZYSt0dHTQo0cPHDt2rEGvXR6cEJjqcR8CE8CePXtw/Phx3L59G6mpqVixYgWuXr2K\nTp06QUNDcijs2LEjjIyMkJiYCAA4e/YsDA0NkZKSIn3+4hzMdSkqKsIff/wBd3f3Gsu0atUKmzdv\nxuLFi/H1119j8+bNVcq4urqqZCpNHtyOqR73H7RYos8UM44PLZfvXgeRSISQkBBYW1sDAJYuXYq3\n3noLrq6uMlNoApL5EGJjY2FpaQmRSIQJEybgzJkzaN26NfLz8+Hh4VHvehcsWABPT0/4+/vXWs7N\nzQ3a2tpwcXGRnl28yNDQUGaIbmXhhMAYUxl5D+SKZGtrK33coUMH3L9/HyYmJnj27JlMOV9fXxw4\ncAA2Njbw8fGBr68vdu7cCR0dHXh7e9e7vg8//BBJSUn1Gur6/fffh6+vLy5evIjIyEhMnjxZZnl+\nfr5MU5aycEJgjLUIL05Sk5GRAWtra3Tr1g1paWmoqKiQNhv5+vriww8/hI2NDfz8/DBgwAAsWLAA\nOjo69W4uWr58OY4dO4YzZ87AwMCg1rInTpzAwYMHkZycjAsXLmDWrFnw9/eXSQDJycmYMWOG/C9a\nXtQENJEwWX316CH5x5oddf2u2tnZUbdu3ejevXv05MkT6t+/Py1dupSIiLp160a///67THlLS0sy\nMjKie/fuERFRz549ycjIiC5evFhnXStXriQnJyd68OBBtcv9/PzozJkzRERUUFBAHTt2pD179kiX\nv/baaxQcHCx9XlRURKamppSdnV1jnTXtd3nfD+5UZqrH9yEwFROJRJg6dSr8/f3h4OAAJycnLFu2\nDAAwf/78KvcK+Pn5wczMTNrnUHlm0L179zrrWrp0KTIzM+Ho6CidK6GmWc8+/vhjdOnSBVOmTJH+\nbe3atTh69ChOnjwJADh48CAGDhyI9u3by/265SZX+pDT0aNHydnZmRwdHWnVqlU1lktISCBNTU36\n+eefq12u5DAZYwqirt9Ve3t7OnnyZLXLSkpKqEuXLjX+ole0F88Q6qNPnz50/fr1WsvUtN/lfT+U\n1ocgFosREhKCEydOwNraGr169UJAQABcXV2rlPvoo48wfPhwHiWRMaZyrVq1wvXr14UOo0bx8fEq\nq0tpTUYJCQlwdHSEvb09tLW1ERQUhOjo6Crlvv32W0yYMAHm5ubKCoWpG74PgTVxBgYG1U6jee7c\nOaFDaxSlnSFkZWXJXOZlY2ODCxcuVCkTHR2NU6dO4Y8//lDruUaZAnH/AVOxtLQ0hW6voKCgwevW\n5zJUoSgtIdTn4L5o0SKsWrVKOolDbU1GoaGh0sd+fn5y3S3IGGMtQWxsLGJjYxu8vtJmTIuPj0do\naChiYmIAAF9++SU0NDTw0UcfSct06tRJmgQeP34MPT09bNq0CQEBAbJB8ixMjDUJ/F0VhqJmTFNa\nQigvL4ezszNOnjwJKysr9O7dGxEREVU6lSvNmjULo0ePxrhx46oGyR+y5qWy/4Cbjpod/q4KQ1EJ\nQWlNRlpaWggLC8OwYcMgFosxZ84cuLq6Ijw8HIDk2l/WQnEiaLZMTEy4L1AAihrWQmlnCIrEvzoY\nY0x+8h47+U5lxhhjADghMCHwfQiMqSVuMmKMsWaKm4wYY4w1CCcExhhjADghMCFwHwJjaon7EBhj\nrJniPgTGGGMNwgmBMcYYAE4ITAjch8CYWuI+BMYYa6a4D4ExxliDcEJgjDEGgBMCEwL3ITCmlrgP\ngTHGminuQ2CMMdYgnBAYY4wB4ITAhMB9CIypJe5DYIyxZor7EBhjjDUIJwTGGGMAOCEwIXAfAmNq\nifsQGGOsmeI+BMYYYw3CCYExxhgATghMCNyHwJha4j4ExhhrprgPgTHGWINwQmCMMQaAEwITAvch\nMKaWuA+BMcaaKe5DYIwx1iCcEJoYTU1NeHl5oVu3bhg3bhwKCgqky4YPHw4TExOMHj1awAhblpre\nj8uXL6Nfv35wd3eHh4cH9u3bJ3CkjNWNE0ITo6enh8TERFy5cgVGRkYIDw+XLlu8eDF27twpYHT1\n1Iz6EGp6P/T19bFz505cu3YNMTExWLRoEfLz8wWOlrHacUJowvr27Yvbt29Lnw8aNAgGBgYCRlRP\nFy9K/jUzL74fTk5OcHBwAABYWlqiXbt2ePTokZDhMVYnpSaEmJgYuLi4wMnJCatXr66yPDo6Gh4e\nHvDy8kKPHj1w6tQpZYbTrIjFYhw/fhzu7u5Ch8JQ+/uRkJCAsrIyaYJgTG2RkpSXl5ODgwOlpaVR\naWkpeXh4UFJSkkyZgoIC6eMrV66Qg4NDtdtSYphNjqamJnl6epK5uTn16tWLxGKxzPLTp0/TqFGj\nBIqu5anr/bh//z45OzvThQsXBIqQtWTyHjuVdoaQkJAAR0dH2NvbQ1tbG0FBQYiOjpYpo6+vL31c\nUFAAMzMzZYXTbOjq6iIxMRF3796Fjo5OlX0qEokEikwOzagPobb3Iz8/H6NGjcLKlSvRu3dvAaNk\nrH6UlhCysrJga2srfW5jY4OsrKwq5fbv3w9XV1eMGDEC69evV1Y4zY6uri7Wr1+PpUuXylxnTE3h\nfo1m2Ifw8vtRWlqKsWPHYsaMGRg3bpzQ4TFWL0pLCPX9pRoYGIjk5GQcPHgQ06dPV1Y4zcaL+9XT\n0xOOjo7SSxq9vb0xadIknDx5Era2tvj111+FCrPFqO79iIyMxI8//oi4uDhs27YNXl5e8PLywpUr\nVwSMlLG6aSlrw9bW1sjMzJQ+z8zMhI2NTY3lvb29UV5ejidPnqBt27ZVloeGhkof+/n5wc/PT5Hh\nNhkvX7p44MAB6eO4uDhVh9Pi1fZ+TJs2TdXhsBYuNjYWsbGxDV5faUNXlJeXw9nZGSdPnoSVlRV6\n9+6NiIgIuLq6Ssvcvn0bnTp1gkgkwqVLlzBx4kSZyyilQfLQFc1LZf9BM2s2YkzdyHvsVNoZgpaW\nFsLCwjBs2DCIxWLMmTMHrq6u0ht35s+fj59//hk7duyAtrY2DAwMsHfvXmWFw9QJJwLG1BIPbscY\nY80UD27HGGOsQTghMNVrRvchMNaccJMRY4w1U9xkxBhjrEE4ITDGGAPACYEJgfsQGFNL3IfAGGPN\nFPchMMYYaxBOCIwxxgDIkRCKi4tRUlKizFhYS8F9CIyppRr7ECoqKrB//35ERETg999/R0VFBYgI\nmpqa6Nu3L6ZNm4bAwECVTMjCfQiMMSY/eY+dNSYEHx8feHt7IyAgAJ6enmjdujUAoKSkBImJiThw\n4AB+++2roCDFAAAgAElEQVQ3nD17VjGR1xYkJwTGGJObwhJCSUmJNAnUpD5lFIETAmOMyU9hVxlV\nHuiXLVuGX3/9Fc+fP6+xDGNy4T4ExtRSnfchbNmyBXFxcYiPj4eBgYG0KSkwMFBVMfIZAmOMNYDC\nmoxe9uDBA0RGRuKrr75Cbm4uCgoKGhykvDghMMaY/BSeEObMmYPk5GRYWFhgwIAB8Pb2hpeXF7S1\ntRsdbH1xQmCMMfkp/E7lnJwclJeXw9jYGKampjAzM1NpMmDNEPchMKaW6t1klJycjJiYGKxduxZi\nsRj37t1TdmxSfIbAGGPyk/fYqVVXgYMHDyIuLg5xcXF4+vQpBg0aBG9v70YFyRhjTP3UeYawcOFC\n6ZVFVlZWqopLBp8hMMaY/BTWqUxEdQ5LUZ8yisAJoZmp7D+4eFHYOBhr5hTWqezn54f//ve/SE1N\nrbLsxo0bWL16NXx9fRsWJWvZLl7kZMCYGqp16Irdu3cjIiIC165dg6GhIYgIBQUFcHd3x7Rp0zB1\n6lS0atVK+UHyGQJjjMlNKTemicViPH78GABgZmYGTU3NhkfYAJwQGGNMfgq7yqioqAj/+9//cOvW\nLXTr1g1z5syBlladFyUxVjfuQ2BMLdV4hjBp0iS0atUKAwYMwNGjR2Fvb49169apOj4AfIbAGGMN\nobAmo65du+Lq1asAgPLycvTq1QuJiYmKiVJOnBAYY0x+CrvK6MXmIW4qYoyx5q/GMwRNTU3o6elJ\nnxcVFUFXV1eykkiE/Px81UQIPkNodrgPgTGVUNrw10LihMAYY/JT+GinjDHGWgZOCIwxxgBwQmBC\n4PkQGFNL3IfAGGPNFPchMMYYaxClJ4SYmBi4uLjAyckJq1evrrJ89+7d8PDwQLdu3dC/f39cuXJF\n2SExxhirhlKbjMRiMZydnXHixAlYW1ujV69eiIiIgKurq7TM+fPn0aVLF7Rp0wYxMTEIDQ1FfHy8\nbJDcZNS88H0IjKmEwqfQbIyEhAQ4OjrC3t4eABAUFITo6GiZhNC3b1/p4z59+qh0rmYmEE4EjKkl\npTYZZWVlwdbWVvrcxsYGWVlZNZbfvHkzRo4cqcyQGGOM1UCpZwjyTK95+vRpbNmyBefOnVNiRE3T\ns2fA998DZ84ArVsDAQHA1KmAiqelYC84nXYaO67swMOCh+hm0Q1v9noTHdp0EDosxhpFqQnB2toa\nmZmZ0ueZmZmwsbGpUu7KlSuYN28eYmJiYGJiUu22QkNDpY/9/Pzg5+en6HDV0l9/AWPGAH37AjNn\nAs+fA+Hhkn9RUYC5udARNkAT7kMoE5dh4ZGFOHHnBN595V3YG9vj7N2z6B7eHd+9+h0muk0UOkTW\ngsXGxiI2NrbhGyAlKisro06dOlFaWhqVlJSQh4cHJSUlyZS5e/cuOTg40Pnz52vcjpLDVFvXrxO1\na0e0d6/s38VioiVLiNzdiZ4+FSa2lkhcIaagn4JoxK4R9KzkmcyyxOxEslpjRfuu7RMoOsaqkvfY\nqfQb044ePYpFixZBLBZjzpw5WLJkCcLDwwEA8+fPx9y5cxEVFYUOHSSn29ra2khISJDZRku8yujZ\nM8DLC/jkEyA4uOpyIiAkBMjMBKKjATla51gDrf5tNfbf2I/Twaeho6VTZfnlB5cxdOdQnA4+Dfd2\n7gJEyJgsHu20mZg/HygvBzZvrrlMaamkKWnhQmD2bNXF1hJdeXgFQ3YMwcXXL9baV7D50mZ8m/At\nLr5+EVoaPI8IExYnhGYgMREYMQJISQGMjWsv++efwKhRkrJt2qgmvkZrYn0IRITBOwZjQpcJeLPX\nm3WWHbh9IKa4T8H8nvNVFCFj1eOE0MQRAQMHAlOmSM4S6mP2bEnncjU3gjMFiE6JxtJTS3F5weV6\n/epPzE7EiN0jkBKSAmOdOjI6Y0rECaGJO3gQ+PhjyVlCfWcuzc4G3N0l63TgKx8VSlwhRpeNXfDt\niG/h7+Bf7/XmHpgLMz0zrBqySonRMVY7HtyuiVu1StKRLM801paWkktS165VWlgt1i/Jv6CtblsM\n7TRUrvWW+SzDpkubkFecp6TIGFM8Tghq5LffgAcPgPHj5V/33XeBbduAnByFh6V4TWQ+BCLC6nOr\n8VH/j+S6yRIA7I3tMdxxOML/DFdSdIwpHicENfKf/wAffNCwO5BtbCR3MH/3neLjUriLF5tEh/Lp\n9NMoKC3AaOfRDVr/w34fYt2FdSgpL1FwZIwpBycENXHnDnD+vKTpp6E++ADYsEFyuSprvHUX1uG9\nvu9BQ9Swr4lne090Me+Cn5J+UnBkjCkHJwQ18cMPwIwZgK5uw7fh7g506gQcPqy4uFqqrPwsnL17\nFlO7Tm3Udhb0WIBNlzYpKCrGlIsTghooKwO2bgXmzWv8tl5/XTIQnlprAn0IWy9vxWS3yTBoZdCo\n7QQ4ByDlcQpuPL6hoMgYUx5OCGrg4EGgc2fAxaXx25o4EYiPBzIyGr8tpVHzPgRxhRg/XPoBr/d4\nvdHb0tbUxizPWXyWwJoETghqYPNmYO5cxWxLV1cyNPa2bYrZXkt0Ku0U2uq1RXfL7grZ3tzuc7Hj\nrx0oE5cpZHuMKQsnBIE9egScOweMHau4bU6bBuzZI7nrmclvz7U9eK3rawrbnoOpAxxMHXDizgmF\nbZMxZeCEILCffpKMW2TQuKZqGX36SAa+S0xU3DYVSo37EIrLixGdEo3J7pMVut2p7lOx59oehW6T\nMUXjhCCwPXskTTyKJBJJthkRodjtKowa9yEcuXkEXpZesDK0Uuh2J7lNwqHUQygsK1TodhlTJE4I\nAsrIAJKTgWHDFL/tyoRQUaH4bTdne67uwRT3KQrfroWBBXpZ9cKh1EMK3zZjisIJQUB790qGqWjV\nSvHb7tIFMDMD4uIUv+3mKq84D7/e+RXjXRswdkg9TO06FXuucrMRU1+cEASkjOaiF02ZIqlD7ahp\nH8L+lP0YaD8QJrrVz+vdWGNdxuJ0+mnkFuUqZfuMNRYnBIEkJwOPHwPe3sqrIygI+PlnyY1vakVN\n+xAirkUopbmoUhudNhjSaQiiUqKUVgdjjcEJQSBRUZJLTTWU+A7Y2QEODsDZs8qro7l4WvwUv2f+\njlc7v6rUeia4TsAvyb8otQ7GGooTgkAqE4KyjR0L/MLHnzoduXkEvva+jR6qoi4jnUbi7N2zyC/J\nV2o9jDUEJwQBZGZKRjf18VF+XePGSZKPWl1tpIZ9CFEpURjrovwM3UanDQZ0GIAjN48ovS7G5MUJ\nQQDR0cCoUfLNitZQnTsDJiZAQoLy66o3NetDKCorwvHbxzG6c8PmPZDXONdx3I/A1BInBAGoqrmo\n0rhx3GxUmxN3TsCzvSfM9c1VUl+AcwCO3TqG4vJildTHWH1xQlCxJ08kP4796z9fe6ONHStJQjy2\nUfVU1VxUqZ1+O3i09+CxjZja4YSgYocPA4MGAXp6qqvTy0ty6em1a6qrs1Zq1IdQXlGOg6kHEegS\nqNJ6x7mM46uNmNrhhKBiqm4uAiRjG6nV1UZq1IdwLuMcbI1sYW9sr9J6A10CceDGAZRX8HynTH1w\nQlChwkLg5ElJh7KqVV5txGSpurmokp2xHeyN7RF3l8cWYeqDE4IKHT8O9OoFmJqqvu5+/YDsbOD2\nbdXXra6ISJIQXFWfEADJUBbcbMTUCScEFRKiuaiSpiYwZgywf78w9ctQkz6ExAeJ0NbQhpu5myD1\nj3Mdh/039oO4t5+pCU4IKlJWBhw6JDkoCyUwUE2ajdSkDyEqWdJcJBKJBKnfxcwFetp6uHhf+H3B\nGMAJQWXi4oBOnQBbW+FiGDxYcqXRw4fCxaBO9t/YL1hzEQCIRCKMdRmL/SnqcNrGGCcElRGyuahS\n69bA8OHAgQPCxqEObuXcwuPCx3jF5hVB4xjrMpbvWmZqgxOCChBJ2u4DVXupe7UCA9WgH0EN+hCi\nkqMwxnkMNETCfgV6WffC0+KnuPH4hqBxMAZwQlCJP/+U3Ijm6ip0JMDIkZLmq3whB9tUgz4EoS43\nfZmGSAOBLoHcbMTUAicEFahsLhKo71KGkREwYABw9KjQkQgn+1k2Uh6nYGDHgUKHAoCbjZj64ISg\nAlFR6tFcVEktmo0EtD9lP0Y4jUArTSVMZt0Avva+SH2SivvP7gsdCmvhlJoQYmJi4OLiAicnJ6xe\nvbrK8pSUFPTt2xc6OjpYs2aNMkMRzI0bQF4e0Lu30JH8vzFjgJgYoKREoAAE7kOISonCOJdxgtX/\nslaarTDSaSSiU6KFDoW1cEpLCGKxGCEhIYiJiUFSUhIiIiKQnJwsU6Zt27b49ttv8cEHHygrDMH9\n/LPyp8qUl4UF4OYGnDolUAAC9iHkFuUi/l48hjsOF6T+mnCzEVMHSjtMJSQkwNHREfb29tDW1kZQ\nUBCio2V/AZmbm6Nnz57Q1tZWVhiC++UXYPx4oaOoqqU2Gx1KPYSBHQdCv5W+0KHIGOY4DPH34vG0\n+KnQobAWTGkJISsrC7Yv3IVlY2ODrKwsZVWnltLTgbt3AW9voSOpauxYycxtYrHQkaiWujUXVTJo\nZQA/ez8cTj0sdCisBVPaJI6KHg4gNDRU+tjPzw9+fn4K3b4yREVJ2utVMVWmvBwcgHbtgPh4oH9/\nFVde2X+g4majwrJCnEw7iR8CflBpvfVV2Ww0rds0oUNhTVRsbCxiY2MbvL7SDlXW1tbIzMyUPs/M\nzISNjU2Dt/diQmgqfv4ZWLpU6ChqVtlspPKEIFD/wbFbx9DLqhdMdQUYbrYeRnUehUXHFqGorAi6\n2rpCh8OaoJd/LH/22Wdyra+0JqOePXvi5s2bSE9PR2lpKSIjIxEQEFBt2eY42mN2NnD9umR2NHXV\n0qbWVJeb0Wpirm8Or/ZePLUmE4zSEoKWlhbCwsIwbNgwdOnSBZMnT4arqyvCw8MRHh4OAHjw4AFs\nbW3xzTffYMWKFejQoQMKCgqUFZJK7d8PvPqqZPwgdeXpCZSXq9HUmkpUJi7D4ZuHVT5Vprz4aiMm\nJBE1gZ/nIpGoyZ1FDBkCvPmmZKYydfb++4CBASDnmWXjCNCHEHMrBp+d+Qzn55xXWZ0NkZGXge7h\n3XH//ftqc+Mca7rkPXaq0dXxzceTJ8Aff0hGFlV3kycDe/equNlIgPsQ9l7biyC3IJXW2RAd2nSA\ns5kzNxsxQXBCUILoaGDoUMmAduquVy/J5D1//SV0JMpTUl6CAzcOYKLbRKFDqZfJbpMReT1S6DBY\nC8QJQQn27AGmTBE6ivoRif7/LKG5irkVg24W3WBlaCV0KPUysctEHLhxAMXlxUKHwloYTggKlp0t\nGe565EihI6m/yZOByEgVNhupeCyjyOuRmOw2WWX1NZaloSU823si5laM0KGwFoYTgoJFRkqu79dt\nQpeRe3hIroZKSFBRhSrsQygsK8SRm0cwvosajh9SiyC3IOy91oxP25ha4oSgYLt3A1OnCh2FfJpz\ns9Hh1MPobd0b7fTbCR2KXMZ3GY+jt47ieelzoUNhLQgnBAVKTQUyM4GB6jHvilyCgiRnN+XlQkei\nWHuu7UGQu/pfXfQyMz0z9LPth+gbPCQ2Ux1OCAoUESH5pa2OYxfVxdUVsLUFjh9XQWUq6kP4+/nf\niE2PxcQuTePqopcFewRj6+WtQofBWhBOCApC1DSbi140axawVRXHHxX1Iey+shsBzgEwbG2o9LqU\nIdAlEJeyLyEjL0PoUFgLwQlBQc6elZwZqNPMaPIKCgJ+/VVyY11TR0TYenkrZnnOEjqUBtPR0sFk\nt8nYfnm70KGwFoITgoJs2gTMmyfpoG2qjI0ll8vu2SN0JI13KfsSCkoL4GPnI3QojTLTcya2/bUN\nFVQhdCisBeCEoAA5OcChQ8D06UJH0ngqaTZSQR/C1stbEewRDA1R0/6I97LqBR0tHcTdjRM6FNYC\nNO1vi5rYtUvyy9rMTOhIGm/QIODxYyUPZaHkPoTi8mLsvbYXwZ7BSqtDVUQiEWZ5zuLOZaYSnBAa\niej/m4uaA01NYO5cYONGoSNpuB+v/4jult1hb2wvdCgKMcNjBqJvRONx4WOhQ2HNHCeERrpwASgu\nBprAjJ71Nn8+sG+fpCmsKQr7Iwxv9X5L6DAUpp1+O4xxHoNNf24SOhTWzHFCaKRvv5UcQJtyZ/LL\nLCyAgADJmY9SKLEPISErAX8//xsjnZrQYFL18E6fd7Dhjw0oE5cJHQprxniCnEa4dw/o1g24c0dy\nhU5zcumSZEymO3ea1o12M6JmoGu7rviw/4dCh6JwPlt9ENI7BJPcJgkdCmsieIIcFQoLA2bMaH7J\nAAC6dwfs7CRTgTYVmXmZOJR6CHO6zxE6FKV4p887WHdhndBhsGaME0IDPXsG/PAD8PbbQkeiPG+/\nDXzzjYpnU2uEr89/jVmes2Cqayp0KEoxxmUM7uXfQ0KWqoalZS0NJ4QG2rBBMitap05CR6I8Y8cC\njx4BsbEK3rAS+hCeFD7B9r+2492+7yp0u+pES0MLH/T9ACvOrhA6FNZMcR9CAxQUAA4OwOnTQJcu\nQkejXDt2AFu2KCEpKNgnpz7B/Wf3sXnMZqFDUari8mI4rHfAwSkH0d2yu9DhMDXHfQgqsHGjZIjr\n5p4MAMlgfVlZ6p0Q/n7+NzZe3IhPfD8ROhSl09HSweJ+i/H5mc+FDoU1Q3yGIKecHMDFRXKAbAkJ\nAQB27pQkwd9/V8/LaxfFLEIFVWD9iPVCh6ISRWVF6BzWGfsm7ENf275Ch8PUGJ8hKNkXXwDjx7ec\nZAAA06YBpaWSCXQUQoF9CGm5adh5ZSeWei9VyPaaAl1tXfx70L/x7rF3edA7plB8hiCHmzeBvn2B\npCSgXdOakbHRzpwBgoOB5GT1mi96zN4x6GPdBx97fyx0KCpVQRXotakX3u/7PqZ2bcKTcDCl4jME\nJSEC3nwT+Ne/Wl4yAABfX6BXL2CFGl3gcij1EJIfJeP9vu8LHYrKaYg0sG74Onz464d4WvxU6HBY\nM8FnCPW0davkRrQLF5rWnbuKlJ0NeHhIJtHx8BA2lvySfHj8zwP/e/V/GOY4TNhgBLTg0AKIK8TY\nFMDjHLGq5D12ckKoh3v3JHfuHj8OeHoKFoZa2LJFcg/G+fNAq1YN3Ehl/0EjhsCeHT0bmiLNFn8g\nzCvOg/t37tgSsAVDHYYKHQ5TM5wQFKy8XHKJ6YgRwMctq5m6WkSSG9Y6dpTcxSyEX5J/wYe/fojL\n8y832fmSFenknZOYHjUdl+ZfQnuD9kKHw9QI9yEo2LJlgL6+pO+ASS473bpVMsbRzz+rvv6kR0mY\nf2g+IsZHcDL4x+BOg/F6j9cx9eepPBoqaxROCLXYvBn48UfJdfgavKekTEwk++WNN4AEFQ6r87jw\nMcbsHYOvhn6F3ta9VVdxE/CJzyfQ1dbFG4ffELy/jTVdfJirwcGDwNKlwNGjgLm50NGon549Jf0J\nY8YAKSkNWFnO+xCeFj/FsF3DMMF1QrOYGlPRNDU0ETkhEpcfXManpz/lpMAahPsQqrFvH/DWW8Ch\nQ5JLLVnNdu4EFi+WJE5ldbg/ev4IoyJGoY91H6wbvg4idbxdWk08LHiIITuHYKTjSKwasor3VQvH\nfQiNQAT85z/AokWSK4o4GdRt+nRg/XrA31+SQBXtxuMb6LelHwbZD8La4Wv5AFcHCwMLxAbH4lT6\nKUyPmo7CskKhQ2JNCCeEf/z9t2RIih9/BOLjhb/OvimZOFHSybxgAbBkiWSO6cYiImy7vA0Dtg7A\nR/0/wpdDvoSGiD+u9dFWry3OzDwDAqHf5n64+vCq0CGxJkKp37CYmBi4uLjAyckJq1evrrbM22+/\nDScnJ3h4eCAxMVGZ4VSrrEwyd3DXrpIhrePigA4dVB5Gk9evn+S2ghs3AC8vICamlol16uhDSHqU\nBP9d/vj6/Nc4NeMU5nafq5ygmzE9bT3sGrsLIb1DMGjHIHx88mPkFecJHRZTd6Qk5eXl5ODgQGlp\naVRaWkoeHh6UlJQkU+bw4cM0YsQIIiKKj4+nPn36VLstZYSZk0O0fj2RoyPRoEFEFy8qvAq1dfr0\naaVuPyqKyMWFqH9/or17iYqL616noqKCzmWco4n7JpLZf8xoXfw6Ki0vVWqciqDsfakI9/Lu0cz9\nM8n8P+a09ORSSstNEzqkGjWF/dmUyHvsVNoZQkJCAhwdHWFvbw9tbW0EBQUhOjpapsyBAwcQHCy5\nYqRPnz54+vQpHj58qKyQkJ0NbN8OBAVJbqz6/XfJNJgnTwI9eiitWrUTq+TJDQIDgatXJR3z338P\n2NpKmpP27wfy8/+/XHF5Mc6kn8GyU8vg+K0j5hyYg1dsXkHaO2l4u8/b0NbUVmqciqDsfakI1kbW\n2DpmK+JmxaGgtAA9v++JoTuHYm38WqQ8TlGrK5Kawv5szpQ2Kk9WVhZsbW2lz21sbHDhwoU6y9y7\ndw8WFhZy10ckabt++lQyZ8G9e8Ddu5J/168DiYmSeZCHDAGGDQO+/ZYvJ1UmLS1g0iTCiMBniL+e\njegTD/DpvmxMWnsPenbJ0LK8jme612DTyg29LQbiq94/on8nLxgbixo+JAarlbOZM9YOX4svB3+J\nIzeP4NjtY/j6/NcoLCuEl6UXurXrho4mHdGhTQfYGtnCXN8cxjrG0NfW5878FkJpCaG+H6CXf53U\ntJ5pyChUEEAVQAXRP/+XJIKKCkLZPzdoamtL/unoEnR1AB1dwGAAYDeSoKsH5AP4EcC+Y1V/Fb0c\nC0H+MtX92lJEmYbEUlOZzEuZOLb5mEJjEVeIUVRehMKyQum/orIi6GnrwdLQEpbmlnAZ2x4D9a2x\n+O0TQJku1k7PxoNbhsiIAT7MAvLyJAm9VSvAyAho3VryWFtb8v/Kx1pakjumK/8BDXuuCDduAH/+\nqZhtqY4ugPEAxsMDQLF2NvL0EnFE9yqKWiWjqFUMilploEwrB2WaT1GhUQwtcRtoivWhQdrQoFYQ\nUasXHmtDRBoAKneqCCKI/v85vfT8n8cikn0OAAXnb+C7vCa3Q5sNpSUEa2trZGZmSp9nZmbCxsam\n1jL37t2DtbV1lW05ODjg9obD9aq39J9/zxsUdcuRdTBLJfU8x3Pc+ue/StJ5zf5tVO065eVAYRO6\nWvLmzc+EDkHpypCDMuSopK7CCzdVUk9L4ODgIFd5pSWEnj174ubNm0hPT4eVlRUiIyMREREhUyYg\nIABhYWEICgpCfHw8jI2Nq20uunXrVpW/McYYUyylJQQtLS2EhYVh2LBhEIvFmDNnDlxdXREeHg4A\nmD9/PkaOHIkjR47A0dER+vr62Lp1q7LCYYwxVocmMXQFY4wx5VPrWz/rc2Mbqz97e3t069YNXl5e\n6N2bRwuV1+zZs2FhYYGuXbtK/5aTk4OhQ4eic+fO8Pf3x9OnPJ1lfVW3P0NDQ2FjYwMvLy94eXkh\nJiZGwAibjszMTAwcOBBubm5wd3fH+vWSnjp5P59qmxDEYjFCQkIQExODpKQkREREIDk5WeiwmjSR\nSITY2FgkJiYiQZXjVjcTs2bNqnKAWrVqFYYOHYrU1FQMHjwYq1atEii6pqe6/SkSifDee+8hMTER\niYmJGD58uEDRNS3a2tr45ptvcP36dcTHx2PDhg1ITk6W+/OptgmhPje2MflxC2HDeXt7w8TEROZv\nL95cGRwcjP379wsRWpNU3f4E+DPaEO3bt4fnP8MNGxgYwNXVFVlZWXJ/PtU2IVR301pWlmoulWyu\nRCIRhgwZgp49e2LTppY9F7GiPHz4UHplnIWFhVLvtG8pvv32W3h4eGDOnDncBNcA6enpSExMRJ8+\nfeT+fKptQuA7IxXv3LlzSExMxNGjR7FhwwbExcUJHVKzIhKJ+HPbSG+88QbS0tJw+fJlWFpa4v33\n3xc6pCaloKAA48ePx7p162BoKDvFbH0+n2qbEOpzYxuTj6WlJQDA3NwcY8eO5X4EBbCwsMCDBw8A\nANnZ2WjXrp3AETVt7dq1kx645s6dy59ROZSVlWH8+PGYPn06AgMDAcj/+VTbhPDijW2lpaWIjIxE\nQECA0GE1WYWFhXj27BkA4Pnz5zh+/LjM1R2sYQICArB9+3YAwPbt26VfRNYw2dnZ0sdRUVH8Ga0n\nIsKcOXPQpUsXLFq0SPp3uT+fChplVSmOHDlCnTt3JgcHB1q5cqXQ4TRpd+7cIQ8PD/Lw8CA3Nzfe\nnw0QFBRElpaWpK2tTTY2NrRlyxZ68uQJDR48mJycnGjo0KGUm5srdJhNxsv7c/PmzTR9+nTq2rUr\ndevWjcaMGUMPHjwQOswmIS4ujkQiEXl4eJCnpyd5enrS0aNH5f588o1pjDHGAKhxkxFjjDHV4oTA\nGGMMACcExhhj/+CEwBhjDAAnBMYYY//ghMAYYwwAJwTWzNnb2yMnRzVTP9bX/fv3MXHixFrLxMbG\nYvTo0dUuU8fXxJoHTghMLRGRQka9VLexhcrLy2FlZYUff/yxwdtQt9fEmg9OCExtpKenw9nZGcHB\nwejatSsyMzPx5ptvolevXnB3d0doaKi0rL29PUJDQ9GjRw9069YNN27cAAA8efIE/v7+cHd3x7x5\n82SSytdff42uXbuia9euWLdunbROFxcXzJo1C87Ozpg2bRqOHz+O/v37o3Pnzvjjjz+qxNm3b18k\nJSVJn/v5+eHSpUv4448/0K9fP3Tv3h39+/dHamoqAGDbtm0ICAjA4MGDMXToUNy9exfu7u7S+n18\nfNCjRw/06NED58+fl243Pz8fo0aNgouLC954441qE+SuXbvQp08feHl5YcGCBaioqJBZnpeXBxcX\nF2ksU6ZMwebNm+V6X1gLovR7qhmrp7S0NNLQ0KALFy5I/5aTk0NEROXl5eTn50dXr14lIiJ7e3sK\nCwsjIqKNGzfS3LlziYjorbfeoi+++IKIiA4fPkwikYiePHlCFy9epK5du1JhYSEVFBSQm5sbJSYm\nUqoupbQAAAQBSURBVFpaGmlpadG1a9eooqKCevToQbNnzyYioujoaAoMDKwS5zfffEPLly8nIqL7\n9++Ts7MzERHl5+dTeXk5ERH9+uuvNH78eCIi2rp1K9nY2EiHDUhLSyN3d3ciIiosLKTi4mIiIkpN\nTaWePXsSEdHp06dJR0eH0tLSSCwW09ChQ+mnn36SvvYnT55QUlISjR49WlrnG2+8QTt27KgS76+/\n/kp9+/aliIgIGjFihDxvCWthtIROSIy9yM7OTmZ6z8jISGzatAnl5eXIzs5GUlKS9Nf1uHHjAADd\nu3fHL7/8AgCIi4tDVFQUAGDkyJEwMTEBEeG3337DuHHjoKurK103Li4OAQEB6NixI9zc3AAAbm5u\nGDJkCADA3d0d6enpVWKcNGkS/P39ERoain379kn7A54+fYoZM2bg1q1bEIlEKC8vl67j7+8PY2Pj\nKtsqLS1FSEgI/vrrL2hqauLmzZvSZb1794a9vT0AyS/73377DePHjwcgaVI7efIk/vzzT/Ts2RMA\nUFRUhPbt21epY8iQIdi3bx9CQkJw5cqVWvc/a9k4ITC1oq+vL32clpaGNWvW4OLFi2jTpg1mzZqF\n4uJi6fLWrVsDADQ1NWUOvlRN04pIJJL5OxFJ2+IrtwMAGhoaaNWqlfTxi9utZGVlhbZt2+Lq1avY\nt28fwsPDAQCffPIJBg8ejKioKNy9exd+fn7SdfT09Kp9vd988w0sLS2xc+dOiMVi6OjoyMT8Yrwa\nGlVbeIODg7Fy5cpqt12poqICycnJ0NfXR05ODqysrGotz1ou7kNgais/Px/6+vowMjLCw4cPcfTo\n0TrX8fHxwZ49ewAAR48eRW5uLkQiEby9vbF//34UFRXh+fPn2L9/P7y9vRvccT158mSsXr0a+fn5\n0jOW/Px86cF269at9X6Nlb/qd+zYAbFYLF2WkJCA9PR0VFRUIDIyEgMGDJAuE4lEGDx4MH766Sc8\nevQIgGRC9YyMjCp1fPPNN3Bzc8Pu3bsxa9asapMcYwAnBKZmXvxV7OHhAS8vL7i4uGDatGkyB8SX\n16lcb/ny5Th79izc3d0RFRUFOzs7AICXlxdmzpyJ3r1745VXXsG8efPg4eFRpc6Xn9d0Rc+ECRMQ\nGRmJSZMmSf+2ePFiLFmyBN27d4dYLJauW91MVZXP33zzTWzfvh2enp64ceMGDAwMpMt79eqFkJAQ\ndOnSBQ4ODhg7dqzMuq6urlixYgX8/f3h4eEBf39/6WQolW7cuIHNmzdjzZo1GDBgAHx8fLBixYpq\nXxNjPPw1Y4wxAHyGwBhj7B+cEBhjjAHghMAYY+wfnBAYY4wB4ITAGGPsH5wQGGOMAeCEwBhj7B+c\nEBhjjAEA/g+XL5v2vscQnQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Classifying some random example data\n", "\n", "[back to top]
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Note on generating univariate random data from a Normal Distribution\n", "\n", "We can generate random samples drawn from a Normal distribution via the `np.random.randn()` function. Its default is a standard Normal distribution with $ \\mu = 0 $ and $ \\sigma^2 = 1 $. In order to draw random data from $ N(\\mu, \\sigma^2) $, we use \n", "`sigma * np.random.randn(...) + mu`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Parameters\n", "mu_1 = 4\n", "mu_2 = 10\n", "sigma_1_sqr = 1\n", "sigma_2_sqr = 1\n", "\n", "# Generating 10 random samples drawn from a Normal Distribution for class 1 & 2\n", "x1_samples = sigma_1_sqr**0.5 * np.random.randn(10) + mu_1\n", "x2_samples = sigma_1_sqr**0.5 * np.random.randn(10) + mu_2\n", "y = [0 for i in range(10)]\n", "\n", "# Plotting sample data with a decision boundary\n", "\n", "plt.scatter(x1_samples, y, marker='o', color='green', s=40, alpha=0.5)\n", "plt.scatter(x2_samples, y, marker='^', color='blue', s=40, alpha=0.5)\n", "plt.title('Classifying random example data from 2 classes')\n", "plt.ylabel('P(x)')\n", "plt.xlabel('random variable x')\n", "plt.legend(['w_1', 'w_2'], loc='upper right')\n", "plt.ylim([-0.1,0.1])\n", "plt.xlim([0,20])\n", "plt.axvline(7, color='r', alpha=0.8, linestyle=':', linewidth=2)\n", "plt.annotate('R1', xy=(4, 0.05), xytext=(4, 0.05))\n", "plt.annotate('R2', xy=(10, 0.05), xytext=(10, 0.05))\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n/zLcgIyGXAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Calculating the empirical error rate\n", "\n", "[back to top]
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "w1_as_w2, w2_as_w1 = 0, 0\n", "for x1,x2 in zip(x1_samples, x2_samples):\n", " if x1 >= 7:\n", " w1_as_w2 += 1\n", " if x2 < 7:\n", " w2_as_w1 += 1\n", " \n", "emp_err = (w1_as_w2 + w2_as_w1) / float(len(x1_samples) + len(x2_samples))\n", " \n", "print('Empirical Error: {}%'.format(emp_err * 100))\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Empirical Error: 0.0%\n" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }