Skip to content

Instantly share code, notes, and snippets.

@bburns
Created October 17, 2016 17:55
Show Gist options
  • Save bburns/974e4a30f38970b22388e605d9d24971 to your computer and use it in GitHub Desktop.
Save bburns/974e4a30f38970b22388e605d9d24971 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exploring Regression\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook explores linear regression by fitting polynomials of varying degrees to samples of a sine function.\n",
"\n",
"It shows **learning curves** for increasing number of training points,\n",
"and **complexity curves** for increasing model complexity,\n",
"and diagnoses problems of **high bias / underfitting** and **high variance / overfitting**. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Import Libraries"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import math\n",
"import random\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# allow inline plots\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Set parameters"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# random seed\n",
"seed = 6\n",
"random.seed(seed)\n",
"np.random.seed(seed)\n",
"\n",
"# default plot size, in inches (for my small laptop screen...)\n",
"figsize = (math.pi, 1.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define Population"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# say the function we're trying to approximate is sin from 0 to pi\n",
"# so our dataset will come from this, randomly\n",
"\n",
"# range\n",
"fxmin = 0.0\n",
"fxmax = math.pi\n",
"\n",
"def f(xs):\n",
" \"\"\"\n",
" Function defining a population.\n",
" Pass in a list or array of x values, returns array of y values.\n",
" \"\"\"\n",
" return np.sin(xs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sample Data from Population"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[2.805002892434413], [1.0429453174743482], [2.5799673799124725], [0.13099381305792829], [0.33821343479670457]]\n",
"[-0.05980593 1.34169626 0.46919433 -0.55368691 0.94104259]\n"
]
}
],
"source": [
"# Sample the function at random points\n",
"\n",
"def getSample(f, noise=0.0, npoints=100, xmin=fxmin, xmax=fxmax):\n",
" \"Return a random sample of the population defined by f, with optional noise\"\n",
"\n",
" # it seems that you need to do this in each block you use np.random (?)\n",
" np.random.seed(seed)\n",
"\n",
" # get random x points\n",
" xs = xmin + (xmax - xmin) * np.random.random_sample(npoints)\n",
" \n",
" # get function at those points, plus some normally-distributed noise\n",
" ys = f(xs) + noise * np.random.standard_normal(len(xs))\n",
"\n",
" # sklearn uses X for features and Y for outcomes.\n",
" # values in X should be arrays of the form [feature1, feature2, ...],\n",
" # but since we just have one feature, x, we just say [x].\n",
" X = [[x] for x in xs]\n",
" Y = ys\n",
"\n",
" return X,Y\n",
"\n",
"noise = 0.5 # stddev\n",
"npoints = 50\n",
"X,Y = getSample(f, noise, npoints)\n",
"\n",
"print X[:5]\n",
"print Y[:5]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nRK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x82f43c8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# show random sample and the source function\n",
"\n",
"def plotSample(X,Y,f=None):\n",
" \"plot the function f and random sample X,Y\"\n",
" plt.figure(figsize=figsize)\n",
" plt.scatter(X,Y, color=\"g\", label=\"Random Sample\")\n",
" if not f is None:\n",
" xs = np.linspace(fxmin,fxmax,10)\n",
" plt.plot(xs,f(xs), color=\"b\", label=\"Source Function\")\n",
" plt.ylabel(\"x\")\n",
" plt.xlabel(\"y\")\n",
" plt.legend(bbox_to_anchor=(2, 1.1))\n",
" plt.grid()\n",
" plt.show()\n",
" \n",
"plotSample(X,Y,f)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linear Regression Model"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# do simple linear regression on the random sample\n",
"\n",
"from sklearn import linear_model\n",
"\n",
"reg = linear_model.LinearRegression()\n",
"reg.fit(X,Y)\n",
"\n",
"mse = np.mean((reg.predict(X) - Y) ** 2)\n",
"variance = reg.score(X,Y)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Linear regression\n",
"\n",
"coefficients [-0.00820935]\n",
"mean squared error 0.339275412807\n",
"variance 0.000135116657331\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATkAAACiCAYAAAA6N7rFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJztnX+UFdW15z+bHhXRUaEh4Es0aNMQRg0KGkEUVJBfWd2a\n4OATjaImj4ioY5biciZPTcbxB77EqIh5I2pU0j15bxw0Y4BGVCI8NWgD6uSBzQ9FXxQEmqdZNKA2\ne/6ous29t++tW1W3ft57PmvVgj51qr5n1627b9XZ5+wjqorBYDBUKj3iboDBYDCEiXFyBoOhojFO\nzmAwVDTGyRkMhorGODmDwVDRGCdnMBgqGuPkDAZDRWOcnMFgqGiMkzMYDBWNcXIGg6GiCdXJicht\nIrJaRD4Xke0iskhEBpc4ZqyIHMjbOkXka2G21WAwVCZhP8mdAzwMnAmMBw4BlonI4SWOU6AeGGBv\nx6rqp2E21GAwVCYS5QR9EekLfAqMUdVVReqMBV4Geqvq55E1zmAwVCRR98kdg/WU1l6ingDrRORj\nEVkmImeF3zSDwVCJRPYkJyIC/F/gP6rqWId6g4GxwFvAYcCPgB8A31HVdQXq1wITgQ+AfcG33GAw\nREhPYCDQoqq7gjhhlE7uUSxnNFpVP/F47Apgq6peWWDfdOC3gTTSYDAkhctUtSmIE/2HIE5SChGZ\nB0wBzvHq4GxWA6OL7PsAYOHChQwdOtRfA8vgpptu4oEHHqga3Ti1q003Tu24dNevX8/ll18O9vc6\nCEJ3craDuxAYq6of+jzNqUAx57gPYOjQoQwfPtzn6f1z9NFHV5VunNrVphundpw22wTW9RSqkxOR\n+cClQCOwR0T627s+U9V9dp27ga9nXkVF5EbgfeDPWO/nPwLOAy4Is60Gg6EyCftJ7sdY0dQVeeVX\nAU/b/z8WOC5r36HAL4C/ATqAd4BxqvpqqC31yerVq6tKN07tatONUztOm4MmVCenqiWHqKjqVXl/\n3w/cH1qjAuaEE06oKt04tatNN07tOG0OGjN3tUxuuOGGqtKNU7vadOPUjtPmoIl0xkMYiMhwoLW1\ntTXujlKDwVAma9asYcSIEQAjVHVNEOeMZAiJwZAk2na1sbl9M4P6DKK+tj7u5hhCxryulslzzz1X\nVbpxaper2763nUkLJzFk3hCmNE1h8LzBTFo4id17d4eqWw5pvdZJwji5Mmlubq4q3Ti1y9Wd/ux0\nlm9ZnlO2fMtyLn320lB1yyGt1zpJmD45Q1XQtquNIfOGFN8/u828uiaAMPrkEpc00z7uXBFpFZF9\nItImIt3mrBoMXtjcvtlx/6b2TRG1xBA1iUuaKSIDgReAl4BhwIPAAhExMx4MvqnrU+e4f1CfQRG1\nxBA1YQ8GnpL9t4jMwEqaOQIomDQTuBbYoqpz7L/fE5GzgZuAF0NqqqHCGVw7mIl1E1m+ZTmd2tlV\nXiM1jD9xvHlVrWCSmDRzJLA8r6wFGBVWo8rhqquuKl2pgnTj1C5Xt3lqM+NPHJ9TNv7E8TRPde5k\nN9c63UQ2Ts5OmvkrYJWq/qtD1QHA9ryy7cBRInKYqu4Pq41+mDBhQlXpxqldrm7vw3uz9PKlbNy1\nkU3tm1yPkzPXOuWoaiQb8CiwBWtRGqd67wG35pVNBjqBwwrUHw5o//79taGhIWcbOXKkLlq0SLNp\naWnRhoYGzWfWrFm6YMGCnLLW1lZtaGjQHTt25JTffvvteu+99+aUbd26VRsaGnT9+vU55Q899JDe\nfPPNOWV79uzRhoYGXblyZU55U1OTzpgxo1vbpk2bZuwwdlScHU1NTXryySdrXV1d13d2zJgxivW2\nN1wD8j2RDCGxc8o1YCXNdMwpJyJ/BFpV9SdZZTOAB1S1d4H6ZgiJwVAhpG4ICeQkzTyvlIOzeR0Y\nl1c2wS43GAwGT4Q9Tm4+cBkwHTtppr31zKpzt4g8lXXYr4ETReQ+ERkiIrOAi4FfhtlWv6xaVSxI\nXJm6cWpXm26c2nHaHDRhP8n9GDgKK2nmx1nbtKw6OUkzVfUD4LtY4+rWYQ0duUZV8yOuiWDu3LlV\npRundrXpxqkdp81BY6Z1lUlHRwe9evWqGt04tatNN07tuHRT2SdX6cR188elG6d2tenGqR2nzUFj\n8skZDC4wOejSi3FyBoMD7Xvbmf7sdFo2t3SVTaybSPPUZnof3m1EkyGBmNfVMrnllluqSjdO7Th0\npz87nWWPLsspc5ODLiiq6VqHhXFyZXL88cdXlW6c2lHrtu1qo2VzC3p0bnCuUztp2dzCxl0bQ29D\ntVzrMAk1uioi5wC3YGUdORa4SFV/71B/LPBKXrFiTQX7tMgxZsaDIRSWbFzClKYpRfcvnr6YyfWT\nI2xR5ZPG6OoRWGPdZmE5KzcoUI81UX8ADg7OkD7adrWxZOOSSJ6CyiWIHHRpsrdSCTuf3FJgKXRl\nIXHLDlX9PJxWGeIgjR345eSgS6O9lUoS++QEWCciH4vIMhE5K+4GObFhw4aq0vWr7XcRmXJ1/ZJ5\nArvrvLsY2XNkzj43OeiCsBeq8/4KmqQ5uU+AmcBU4PvAR8AKETk11lY5MGfOnNKVKkjXj3amAz/7\naQi8d+BHYXP+soVnLDiDtv/Vxps/fJPF0xfTNruNpZcvdXwaC8peqM77K2gS5eRUtU1VH1PVtar6\nhqpeA7yGNX/VkSlTptDY2JizjRo1qtv6kcuWLaOxsbHb8ddddx2PP/54TtmaNWtobGxk586dOeV3\n3HEH9913HwDz5s0D4MMPP6SxsbHbL+DDDz/cLRzf0dFBY2Njt0nQzc3NBTOyXnLJJd3smDZtWqB2\nZHBjR8Zmt3Z0LSLzz8D6vAZvgjPOP6Pb2qeF7Jg5c2agdmTItiPnCexd4DnYde4ufvrKT5lcP5n6\n2vqCn0f2fZWzaM4fgLzu86Url7q247bbbov0vsrYkfmMM4RxXzU3N3PKKacwaNCgru/sTTeV/Kp7\nJrK5qyJygBLR1SLHzQVGq+roIvtNdDXhlFoOsAc9uKDuApZevjTCVnUnqGULzfKH/kljdDUITsV6\njTUkiCCjhgc4ENm4MyeCWrYwE7CokZqc8hqpYWLdROPgIibsfHJHiMiwrD61E+2/j7P335OdS05E\nbhSRRhGpE5GTRORXwHnAvAKnN8RAfp/V4HmDmbRwUrfXzWxKOY8Mca99GuSyhX4XzTEET9hPcqcD\na4FWrPFvv8DqofiZvX8AWbnkgEPtOu9g5aA7BRinqitCbqdv8vseKl13+rPTWfaUt2lOpZxHhlJO\nJGybiz2BySrx/ASWWTSnbXab64BFIart/gqDUJ2cqv5RVXuoak3edrW9/ypVPT+r/v2qWq+qR6hq\nP1Udp6qvhtnGcuno6Kga3a5pTl96m+ZUzHlkcPsaF4XNhZ7ATjzyRM9PYJnXeaArYOGHarq/wsIk\nzTS4ppxpTrv37qaxuZFVH3VPq53EQbJely3MYAYBl0cYgQeTasngGr99VpkvfraDO/3Y07ll9C2c\nNuC0RHbE19fW+2qX0yDguKPH1UoaoquGhOA3aljoi79221qeWPtEIh2cX0oNAn5x84sxtay6MU6u\nTPIHQla6bvPUZsb0G5NT5hQ1DHL0f9Kvdako8oSFExj39DjHSLRf7aCJSzcMjJMrk6uvvrqqdHsf\n3psjlxzpOmoY1NgzSP61dhNFfuX9VzzNX026zWnAOLkyufPOO6tKN6NdX1tPXZ86NrVvcnwa89OP\nV2ygcdKvdakoMoCinp5gk25zGgh7MPA5IvJ7EfmLiBwQke6TLbsfc66ItIrIPhFpE5Erw2xjucQV\n0Y0zkjxw6EDXA4K99OOVGmichmvdPLWZYQOGlazn9gk2DTYnnUQlzRSRgcALwEvAMOBBYIGIXBBe\nEw1e8ZpGyO3o/6DSE8VJ78N7uxpT52X2hKE8kpY081pgi6pm8ry8JyJnY2UhMaGpBJAJJOSTHUjI\nj5hmRv87jT3zc94k0r63nRuW3FB0vyBMqJuQClsqhaT1yY0ElueVtQCjYmiLK/LTz5SDl0nvQep6\nYXP75m6pg7Jxeg2rr60vOvrfTYAiLJtLXXcvuoWeRrP5dv9vc9d5d7k+X1yfc1y6YZA0JzcA2J5X\nth04SkQOi6E9JVmzpvxB2X4mvQehC96zidT1qXPMCeP3NcxNgCIomzO4ve5udYsNl8nm7e1vc8aC\nM0p+vl61gyYu3TBImpPzTVxJMx955BGgvKSZXb/+dpJGyO2LKpTc8MILLyzLjva97Qz63iCG/G3u\nF/zdtncd7RhcO5iJN9iBhC+AJmBrbiDBT5LGbgEKO9lk9nmvueaaQJNmdl33LDuyr3vGjsxnXMqO\nK6Zd0c3mQkkz+Rha7mph6m+mlrTj1ltvjSVpZr7N2fdV5ofxuZefM0kzc4RcJM0UkT8Crar6k6yy\nGcADqlpwIFba566GnWCxbVcbm9s3d+sHm7RwUtEFWkpNP9q9dzeXPntpTh/a2cedzfVnXl/WNK1C\n5w1r3mcY173UOYPSiYso5uVWw9zV14H8Gd4T7PKKxE1flJ8vgdMNuaNjR1md/NmBhLWfrGXem/NY\n+eHKrrmpfm98NwGKoAjjuhdb3StonbhI67zcRCXNBH5t17lPRIaIyCzgYuCXYbYzToJM1JiN0w0Z\n1CyE+tp6nlj3BK999FpBHa8ElZ7IDWFd90LDZcrRye8zjWsd1yCn50VNopJmquoHwHeB8Vjj624C\nrlHV4uGqmCnUL+YFv5PenXRL3ZB7vtjj2KZSX7yMdlA3vtsAQCmbvXz5vVx3L59xoWSZfj7frmty\n1sFr0nduX0/BqXLItznI6XlRk6ikmXbZq6o6QlUPtxNoPhNmG8tl9uzZZZ/DT6psJ91SN+Q9/3IP\nQuFhi26SV2a0g7rx3Q4CLmRzIQc54n+O4K2/vFVS1+119/MZZw+X8fP5dl2T7xws27V3V06dMAdK\n59sc1pNvFJikmQkiqL4oPx3gGd784Zuc/vXTA9Ep1KmeHwgpNwBQKICSwW3fYBR9gF50vH5+UQUv\nyglWuaVaV+uqGpwGy3rB6VVs+ADnH4IdHTsC0XE7L3XdtnWOGk5Pg6XGpb24+UVXTzpBXfegdNwu\n/JMhqlfFtC7Ok7ToamWxYgX87newfz88+WSk0oV/VztxnK4AcGfx9Ob06gXHHGNtffrA/v28sK+D\ndzuPZiPt7OwFO3tB7cDBXHniNFi6FPr1g699jctfvoblW1/OOd3yLcvZ86X//sFSziB7qcO0RDDB\n/cI/GaJ6VYwy+h0oqprqDRgOaGtrq8bBokWLiu+E0LZFIZ47qdrVpptom99/P5TvU2trqwIKDFcN\nxkeYJ7kyaW5u5qKLLiq8c/du2LoVOjth3Tro6IAvvoCvvrK2DRtgyxbrSW/fvoP/fvml9f/dxSNn\nzUAR1dCJS7vadOPULqm7di0MHBhNY8okksCDiFwH3Iw1ZORt4HpVfbNI3bHAK3nFChyrqp8WqF8x\ngYeoieq1w21wwU97Cs2SyBB0p3g+xWaTBEn+NSl1jdK+WlgYgYfQnZyIXAI8BfwdsBpr7Nt/Bgar\nardE8raTexkYDPw1U17Iwdn1jZNLAWFH5t76y1vMfGEma7Yd/F64/XJ7dVZJdiRRREDDJK1O7g3g\nT6p6o/23AB8BD6nq3AL1M06ut6p+7uL8xsmlgKjmpWaedGqkhk7tdHRcfp1VUh1J2POgoyB1c1dF\n5BBgBHB3pkxVVUSW45wjToB1ItIT+H/Anar6mkN9Q8IpFJlTlDf+7Y1AX/dqe9Vy/ZLrXTkuP3Mx\n407u6fTUGdY86LQT9ji5vkANhXPEDShyzCfATGAq8H2sp74VWfNfE0WhFDaVrFuudn1tPWd+40yu\nX3K95ylKbnTdzp7wMiUtWzfq6U0ZbTdT34KclVDsWsc1d7YcEjcYWFXbVPUxVV2rqm+o6jXAa1h9\neYljwoQJVaXrVtvpy+B3LYdSul4clxdnla0b9fSmjLaba+Z3HrSTbgY/iV2TQthObifWCNT+eeX9\ngW0ezrMacLx74kqaeeml1k1WTtLMDF6SG9bW1gZqRwY3dmRsLmRH+952hl03jCHju38ZLrnkEuY/\nMz/XEW0Cmro7okJ2DBkyxNGOHMf179Z5yZrAsal9U5cdOc4qK2lmhkF9BnV9Hhl7wXIkA5YMoMeG\n3K9Oj8096Pd8v26OxO3n0barjctmX8Ytd+TeK6NHj+b8SefT8kae8/4TdLbkXrOOjg6kWRjx5Yic\nc5y0/ST6tPQhH6ekmdk2A5zacCrL/nlZTtmLq15kyOghJmlmkcDDh1iBh/tdnmMZ8LmqXlxgnwk8\nJIhSnfJLNi5hSlPxWRWLpy9mcn1+SkF3eO149xtACDKI4ib44eeaBTk8KMqARuoCDza/BH4jIq0c\nHELSC/gNWDnlgL9R1Svtv28E3gf+DPQEfgScB5hlCROOm075MF/3iiWtzDiu/C9i89Tmbs7KzVzM\ncqY35QcO3AQ//Fyz+tr6wBxP2gMaoffJqeo/YQ0E/jlWbrlvAxNVNfMikZNTDjgUK+/cO8AK4BRg\nnKquCLutfsh/5ax0XSdtN1+GcvqN3NjsZRJ5odxvSy9f2u1prJiul4n9hfq0znninJJ9iKtWrQq0\nr80t2TanOc0SRBR4UNX5qjpQrRxxo1T1rax9OTnlVPV+tfLIHaGq/VR1nKq+GkU7/TB3brehfhWt\n66Tt9svgN5uFG5vdOq5sSjmrIK51oSe2/IzK+Wxq39SlHXUGkGyb43CyQWLyyZVJR0cHvXr1qhrd\nUtpe+rm8vu6l9Vr7ze/XNruNrx/+9RztqKbivf3R23y87+MunagGc6e1T66iicvRxKVbSttLP5fX\nfqO0XutSr/E9pAcH9EDX38X6ECHYvrZsMn2FfXv15e9f+fuCziyVaZYwTs4QMKnNORYipV7jRx83\nmpUfruz62+k1NOikAIWiu/lkB0LCcrJhYpycIRTS+GUIi1JRXzc/CmElBSjUV5hPVFPWwiJxMx7S\nRv5A30KEMRXGjW5YxKWdZt1SgYNiwY+Mtt9ZIk44po9f1r0oyStyOWGe5Mrk+OOPL7ovzJQ8Trph\nE5d2mnX9vsYff/zxoSUFcOwrPLp7UdKHihQjcUkz7frnYo2VOwlrdsT/UNWnitRN7IyHpKbkMURH\nEH1oYc0ScRv1jfKeTeVqXXbSzF8AdwCnYTm5FhHpW6T+QOAF4CVgGPAgsEBEUjXjIc0rjhvKJ8gJ\n7WENxi02/i1/Td40rMjlRBR9cjcB/6iqT6vqBuDHQAdwdZH61wJbVHWOqr6nqo8A/5uEZiEpRppX\nHDeUT5B9aGEOxi3UVzihbgJv/vBN14Opk06oTi4raeZLmTK13o+dkmaOtPdn0+JQP1bys3VkCHsq\nTDHdKIhLOy26QT7FZ7TLmfHgFPgqNkPkyL8eGclatFGQxKSZA4rUP0pEDgu2eeUzZ86cguVhT4Up\nphsFcWmnRTfIp/iMtp/pal5emfOju3HeX0FTMUNI4sonN2/ePKBIvqypzdRvqs8Jx48/cTyPT36c\nxsZGmv7QlPML6yWf3LRp02LLJ5exOYi8eF4+j5kzZwZqR4ZSdmTsdWtHzlP8H+i2nvf+j/a7tuO2\n227LsSPjjJY2LS1pR9cr87uA3dzsV2YnO/JtDuO+qoh8cvbragcwVVV/n1X+G+BoVf1egWP+CLSq\n6k+yymYAD6hqt5+tJEdXM+QPG0jyak+GYIg7sp7WRW1SF11V1S+BVmBcpsxOmjkOK6V5IV7Prm8z\nwS5PJfmvAmEM7DQki6izhuRjAl8HSVzSTODXwHUich/wBJbDuxgoPlAoRcS92pMhGuKew5v2HHBB\nkrikmar6AfBdYDywDsspXqOqzhPsYiK/76EUQf3CetUNkri006jrJbFmkNrlBr7ivL+CJpJpXao6\nH5hfZF+3Hmo7SeaIAtUTR0dHh6f6Qf3CetUNkri0q023XG2/6d2ddIPOghIFJmlmDMTdKW2oLoJ4\nZY4qWJa6wIOhMHF3Shuqi3JfmSHdwTKThSQG4u6UNsRL2l750h4sM09yZZI/ENIL5fzClqNbLnFp\np13Xz6T9JNic9uEoxsmVydVXF8szUJm6cWqnXdfPK18SbE77cBTj5MrkzjvvrCrdOLXTrOt30n4S\nbE77koShOTkR6S0ivxWRz0Rkt4gsEJEjShzzpIgcyNsWh9XGIIgrohtnJLnabA5C1+8rX1JsTnOw\nLMzAQxPQH2vGwqFYMxz+Ebi8xHFLgBnQlblvfzjNMxiiI+2vfGkOloXi5ETkW8BErLEua+2y64E/\niMjNqrrN4fD9WbMhDIaKoNSKXWlxGGlchS2s19VRwO6Mg7NZDihwZoljzxWR7SKyQUTmi0ifkNoY\nCPnpZ7IJY5UuN7phE5d22nX9vPKl3eYkEJaTGwB8ml2gqp1AO8WTZYL1qnoFcD4wBxgLLLYzlySS\nNWu6D8oOMr+/F92oiEs77bp+El+m3eZEoKquN+Ae4IDD1gkMBm4D1hc4fjsw04PeCfZ5z3OoMxzQ\n/v37a0NDQ842cuRIXbRokWbT0tKiDQ0Nms+sWbN0wYIFOWWtra3a0NCgO3bsyCm//fbb9d57780p\n27p1qzY0NOj69et14jMTteZnNcqdKJNRzkJrflajE5+ZqKqqe/bs0YaGBl25cmXOOZqamnTGjBnd\n2jZt2rRY7MjmoYce0ptvvjmnzNhh7CjHjqamJj355JO1rq6u6zs7ZswYxXrjG64efJPT5mnuqojU\nArUlqm0BfgD8g6p21RWRGmAfcLGqPu9B81Pgv6nqY0X2J2rualqTFRoMSSCMuaueAg+qugvYVaqe\niLwOHCMip+nBfrlxWBHTP7nVE5FvYDnVT7y0M07cDBVw6+TSNv3HYEgioURXVXWDiLQAj4nItVhD\nSB4GmjUrsioiG4BbVfV5ewzdHcCzwDZgEHAf0Ia1WlcqCGKogEmPbjAER5gzHqYDG7Ciqi8ArwIz\n8+rUA0fb/+/ESqj5PPAe8BjwJjBGrTTqiSR/EZYgRoe7mf5TaPGXqIhLu9p049SO0+agCW0wsKr+\nOyUG/qpqTdb/9wGTwmpPWMyePbtbWTnJCt1mfCikGxVxaVebbpzacdocNCZpZoj4GR2+ZOMSpjQV\nX85i8fTFTK6fHFQTDYZEEXvgweANP6PD0z79x2BIGiYLScJIe8YHgyFpGCdXJvkrkAeBm+k/Yei6\nJS7tatONUztOmwMnqFHFcW3YMx5aW1s1DkaOHBnaudt2tunitsXatrMtUt1SxKVdbbpxasel29ra\nGviMhzDzyf1XEfkXEdkjIu0ejvu5iHwsIh0i8qKIJLoTql+/fqGd2yk9epi6pYhLu9p049SO0+ag\nCfN19RDgn4BH3R4gIrcCs4G/A74D7AFaROTQUFpoMBgqnjDHyf0MQESu9HDYjcB/V9UX7GOvwJrU\nfxGWwzQYDAZPJCbwICInYKVheilTpqqfY811HRVXuwwGQ7pJ0ji5AVgdjtvzyrfjnIOuJ8D69etD\napYzq1evjiX3Vly6cWpXm26c2nHpZn2PewZ2Ui9RClzmk8s75kqg3cW5R9nH988r/x3WxP5ix03H\nco5mM5vZKmebHlR01euT3D8AT5aos8XjOTNsw0rF1J/cp7n+wNqCR1i0AJcBH2DlqzMYDOmlJzCQ\nADMPhZJPzg+q+r6IbMPKO/cOgIgchbUmxCMl2tQURpsMBkMsvBbkycIcJ3eciAwDvgnUiMgwezsi\nq84GEbkw67BfAT8VkQYROQV4Gvg3rPRLBoPB4JkwAw8/x1qUJkOmF/M8rNxykJtPDlWdKyK9sNZn\nPQZYCUxW1S9CbKfBYKhgUp9qyWAwGJxIzDg5g8FgCAPj5AwGQ0WTSicnIr1F5Lci8pmI7BaRBdkB\njSLHPCkiB/K2xS60rhOR90Vkr4i8ISJnlKh/roi0isg+EWnzOK3Nl66IjC1gW6eIfM2j5jki8nsR\n+Yt9jpKJ/gO015N2EDaLyG0islpEPheR7SKySEQGuziubJv9aAdk849F5G37u/OZiLwmIo7LDgT4\nGXvSDuq+TqWTwxoyMhRruMl3gTFYwYpSLMEadzfA3i51qiwilwC/wFpF7DTgbayEAX2L1B+ItWjP\nS8Aw4EFggYhc4KJtvnVtFCuQk7HtWFX91IsucASwDphln69UOwcSgL1+tG3KtfkcrFXkzgTGYyWV\nWCYihxc7IECbPWvblGvzR8CtWCnKRgAvA8+LyNBClQP+jD1p25R/Xwc1qjiqDfgW1uyK07LKJgJf\nAQMcjnsS+D8etd4AHsz6W7CGtMwpUv8+4J28smZgcci6Y7FmixwV4HU+ADSWqBOIvT61w7C5r619\ndgw2u9EO3Gb7vLuAq6K016V2IPam8UluFLBbDy5aDdayh4r1q+jEufarwQYRmS8ifYpVFJFDsH5t\nshMGqK1VLGHASHt/Ni0O9YPSBcsRrhMrF98yETnLrWYZlG1vmQRt8zFY95FT/sOwbHajDQHaLCI9\nRORvgV7A60WqhWKvS20IwN40OrkBQM7jqqp2Yt0cThP5l2CN2zsfmIP1K7FYRKRI/b5ADd4SBgwo\nUv8oETnMoW3l6n6CtabtVOD7WK8FK0TkVJeafgnCXr8EarN9H/wKWKWq/+pQNXCbPWgHYrOInCwi\nfwX2A/OB76nqhiLVA7XXo3Yg9iYmC4mI3IP1vl4MxeqH84WqZuej+7OIvAtsBs4FXvF73iSgqm1A\nW1bRGyJSB9yElSCh4gjB5vnAfwJGB9C8ULQDtHkDVv/a0cDFwNMiMsbB2QSJa+2g7E2Mk8P95P9t\nQE50RURqgD72PleoNVd2JzCIwk5uJ3ZWlLzy/g4624rU/1xV97tsmh/dQqwm/C9sEPYGiS+bRWQe\nMAU4R1U/KVE9UJs9ahfCs82q+hUHE2msFZHvYCWsvbZA9UDt9ahdCM/2JuZ1VVV3qWpbie0rrPf3\nY0TktKzDx2G9u//JrZ6IfAOoxXokLtSeL4FW+9yZY8T+u9gE4tez69tMwLnPIQjdQpxKEdsCpGx7\nA8azzbYAwp7wAAABmElEQVSTuRA4T1U/dHFIYDb70C5EEJ9zD6DYq2fYn7GTdiG82xtklCaqDVgM\nvAWcgeXV3wOeyauzAbjQ/v8RwFyswMQ3sT60t4D1wCEOOtOADqy+vG9hDVPZBfSz998DPJVVfyDw\nV6yI1BCs4RBfAOM92udV90agEagDTsLq3/kSONej7hFYrxKnYkX6/ov993Fh2utTu2ybsV4Td2MN\n5+iftfXMqnN3SJ+xH+0gbL7b1vwmcLJ9Xb8Czo/gM/aqHcx97bWhSdiwIlELgc/sG+UxoFdenU7g\nCvv/PYGlWI/e+7Aelx/FdholtGZh5arbi/XrdXrWvieBl/Pqj8F6EtsLbAR+4NNG17rALbbWHmAH\nVmR2jA/NsRxMfpq9PRGBvZ60g7C5iF7XfROmzX60A7J5gX3/77W/D8uwnUwEn7En7aDuazNB32Aw\nVDSJ6ZMzGAyGMDBOzmAwVDTGyRkMhorGODmDwVDRGCdnMBgqGuPkDAZDRWOcnMFgqGiMkzMYDBWN\ncXIGg6GiMU7OYDBUNMbJGQyGiub/A45guGB3nQ5/AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x5ca40f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plot the sample and regression line\n",
"\n",
"print 'Linear regression'\n",
"print\n",
"print 'coefficients', reg.coef_\n",
"print 'mean squared error', mse\n",
"print 'variance', variance\n",
"\n",
"plt.figure(figsize=figsize)\n",
"plt.scatter(X,Y,color='g')\n",
"plt.plot(X, reg.predict(X), color='r')\n",
"plt.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linear Polynomial Regression Model"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"# fit a polynomial of arbitrary degree to the random sample\n",
"\n",
"from sklearn.linear_model import Ridge\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.pipeline import make_pipeline\n",
"\n",
"degree = 2\n",
"\n",
"# need a Pipeline object to handle polynomial fitting\n",
"# see http://scikit-learn.org/stable/auto_examples/linear_model/plot_polynomial_interpolation.html\n",
"poly = make_pipeline(PolynomialFeatures(degree), Ridge())\n",
"poly.fit(X, Y)\n",
"Ypredict = poly.predict(X)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nWRKVAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x15b6f6a0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# show the polynomial that was fit to the random sample X, Y\n",
"plt.figure(figsize=figsize)\n",
"plt.scatter(X,Ypredict)\n",
"plt.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Learning Curves"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# define a plotting fn\n",
"\n",
"def plotLearningCurves(trainSizes, trainScores, testScores):\n",
" \"plot learning curves for training and testing scores as fn of number of training points\"\n",
" \n",
" # learning_curve runs each case 3 times (the default for the cv parameter), \n",
" # so need to take average of them for plotting\n",
" trainScoresMean = np.mean(trainScores,axis=1)\n",
" testScoresMean = np.mean(testScores,axis=1)\n",
" trainScoresStd = np.std(trainScores,axis=1)\n",
" testScoresStd = np.std(testScores,axis=1)\n",
"\n",
" #. could also plot the stddev for each curve, but what does that indicate? \n",
" \n",
" # make the plot\n",
" plt.figure(figsize=figsize)\n",
" \n",
" plt.plot(trainSizes, trainScoresMean, 'o-', color=\"r\", label=\"Training score\")\n",
" plt.plot(trainSizes, testScoresMean, 'o-', color=\"g\", label=\"Cross-validation (test) score\")\n",
" \n",
" plt.fill_between(trainSizes, trainScoresMean - trainScoresStd,\n",
" trainScoresMean + trainScoresStd, alpha=0.1,\n",
" color=\"r\")\n",
" plt.fill_between(trainSizes, testScoresMean - testScoresStd,\n",
" testScoresMean + testScoresStd, alpha=0.1, color=\"g\")\n",
" \n",
" plt.ylim(-0.1, 1.2)\n",
" plt.ylabel(\"Score\")\n",
" plt.xlabel(\"Training Points\")\n",
" plt.legend(bbox_to_anchor=(2.5, 1.1))\n",
" plt.grid()\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scoring mean_squared_error\n",
"degree 2\n",
"noise 0.5\n",
"npoints 50\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApwAAAC3CAYAAAC/v455AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzsnXd809X6x9/nm6STLoYge1QoiFcFUUBAhgIW2ovKVFTA\nAS4UUUBRhoIMGQKCCxQE4YIMZVyGKMpVUX/CdV0KgkABQaClhe6mzfP7I23aNEkXLU3xvH19X8n3\nOetzvsH0yRnPUSKCRqPRaDQajUZTXhgVLUCj0Wg0Go1Gc2WjHU6NRqPRaDQaTbmiHU6NRqPRaDQa\nTbmiHU6NRqPRaDQaTbmiHU6NRqPRaDQaTbmiHU6NRqPRaDQaTbmiHU6NRqPRaDQaTbmiHU6NRqPR\naDQaTbmiHU6NRqPRaDQaTbmiHU6NRqPRaDQaTbniFQ6nUqqjUmqjUupPpZRNKRVdRP67lFI7lFJn\nlVIXlFLfKqW6Xy69Go1Go9FoNJriY65oATkEAj8BS4D1xcjfCdgBvAAkAsOATUqpm0Xk53JTqdFo\nNBWMUqo+UL2idWg0Gk0+4kTkeGEZlIhcLjHFQillA/qIyMYSlvsN+JeITCkfZRqNRlOxKKXqG4Zx\n0Gaz+VW0Fo1Go8nFMIx0m83WrDCn01tGOC8JpZQCgoDzFa1Fo9FoypHqNpvNb8WKFTRv3ryitWg0\nGg0xMTEMHjzYD/vMy5XtcALPY5+WX+Mpg1KqGtADOAakXx5ZGo2mHPADGgLbRSS+grVUCM2bN6dV\nq1YVLUOj0WiKTaV3OJVS9wIvA9EiEldI1h7AR5dHlUajuQzcB6ysaBEajUajKZpK7XAqpQYC7wJ9\nRWRXEdmPAXjDVNSoUaOYO3duhWrIRWtxj9bivTpypm8g5/9pjUaj0Xg/ldbhVEoNAhYDA0RkWzGK\npIN3TEWFhIRUuIZctBb3aC3eqyMfemmMRqPRVBK8wuFUSgUC4YDKMTVWSl0PnBeRE0qpaUBtEXkw\nJ/+9wFJgJPB/SqmaOeXSROTi5VWv0Wg0Go1GoykMrwj8DtwE/BfYCwgwG9gHTM5JrwXUy5f/EcAE\nLARO5bveuEx6NRqNRlNJOXjwIIZhsGaNx32mHsnIyMAwDGbOnFkOyjSaKxevGOEUka8oxPkVkaEF\n7ruUu6hy5IcffqhoCQ60FvdoLa54iw7NlYdhFD32oZRi165ddOrUqUzatEfTK33ZSymv0fwd8QqH\n8+/G0KFDi850mdBa3KO1uOItOjRXHitWrHC6X7ZsGTt37mTFihXkP5ykrDZ8NmvWjLS0NHx8fEpc\n1tfXl7S0NCwWS5lo0Wj+LnjdSUPlhVKqFbB379693rbxQaPRlIB9+/bRunVrgNYisq+i9VxOSvM9\nJiLlNhpXXnU/9dRTLFq0iOzs7GLlT09Px89PH750OdDPWlOQ4n4ne8saTo1Go9GUEUlJSUwcOZLb\nGzWiT7163N6oERNHjiQpKcmr6y4O27dvxzAMNmzYwNixY6lTpw5VqlQhMzOTuLg4Ro0aRcuWLalS\npQqhoaFERUWxf/9+pzrcreEcOHAgNWrU4MSJE/Tu3ZugoCBq1qzJ+PHjncq6W8M5btw4DMPgxIkT\nDB48mNDQUKpWrcrw4cPJzMx0Kp+amsrjjz9OtWrVCA4Opm/fvsTGxhZ7XeicOXNo0aIFgYGBVK1a\nlVtuuYX169c75Tlx4gRDhgzh6quvxt/fn/DwcJ566imn0eLDhw9z9913ExYWRmBgILfeeiufffZZ\nsZ81wPnz53nyySepV68evr6+NG3alDlz5hTZB83fEz2lrtFoNFcQSUlJ3NOuHc/GxDDJZkNh34m5\nfeFC7vniC9bt2UNQUJDX1V1SXn75ZQIDAxk7diwpKSmYTCYOHjzItm3b6Nu3Lw0aNOD06dO8/fbb\ndO7cmf3791O9enWP9SmlsFqt3HHHHXTu3JlZs2axbds2pk+fTtOmTXnwwQcLLauUok+fPjRt2pQZ\nM2bwww8/sHjxYmrXrs3EiRMdeQcNGsTmzZsZNmwYrVu3ZufOnfTp06dYI8ULFizgueee47777uPZ\nZ58lLS2Nn376ie+//567774bsDubbdq0IS0tjeHDh9O0aVOOHz/OmjVrsFqt+Pj48Oeff9KuXTts\nNhvPPPMMISEhvP/++0RGRrJp0yZ69uxZ5LNOTk6mQ4cOnD9/nhEjRlCnTh12797Nc889R1xcHK+9\n9lqR/dH8zRCRv8UFtAJk7969UtFs2LChoiU40Frco7W44i069u7dK9j9nFbiBd8tl/MqzvfYhKee\nkq2GIQIu178NQyaOHFnCJ3556s7Pk08+KYZhuE3btm2bKKWkRYsWYrVandIyMjJc8h86dEh8fHxk\n1qxZDtuBAwdEKSWrV6922AYOHCiGYcjs2bOdyl977bXSsWNHx316eroopWTGjBkO27hx40QpJU89\n9ZRT2cjISKlXr57j/ttvvxWllIwfP94p36BBg8QwDKc63dGzZ09p06ZNoXn69+8vPj4+8ttvv3nM\nM2LECDGZTE7/ji5cuCB169aV5s2bO2yFPevx48dLaGioHD9+3Mk+atQo8fX1lbNnzxaqU3PlUNzv\nZD2lXgGsWrWqoiU40Frco7W44i06NIXzzaZN9LDZ3Kb1tNn4Zu1a2LevVNc3a9cWXvfGjeXZNSeG\nDRuG2ew8SZd/E1B2djbnz58nNDSURo0asW9f8Zb7Pvroo073HTp04MiRI0WWU0oxfPhwJ1vHjh05\ndeoUVqsVgG3btqGU4rHHHnPKV3C62xOhoaEcO3aMn3/+2W16VlYWmzdvpm/fvlx77bUe69m6dSsd\nO3Z0WgccHBzMww8/zMGDB1366+5Zr127lq5duxIQEEB8fLzjuv3228nMzOTrr78usj+avxd6Sr0C\nWL16dUVLcKC1uEdrccVbdGg8IyIEWq14mpxVQMCpU0jr1h7zeKwbCITC67ZaESm/TUr5adiwoYvN\nZrMxa9Ys3nnnHWJjY7HlOMdKKcLDw4usMzQ0lCpVqjjZwsLCSEhIKJam+vXru5QVERITE6lRowax\nsbH4+vpSp04dp3zF0Qbw4osvsnv3bm688UaaNm1Kjx49uO+++7j55psBOHXqFGlpaYU6myLCiRMn\nXKbNIS8KQGxsLI0bN3bY3T3rw4cPc+jQITZs2OCSppTi7NmzxeqT5u+DVzicSqmOwPNAa+BqoI+I\nFPpTWSnVGXuA+GuB48BUEVlWzlI1Go3Ga1FKkWKxILh3DAVIufpq1ObNJa8bSOndGzl92nPdFstl\ni0/p7+/vYpswYQKvvfYaI0aMoEuXLoSFhWEYBo899pjD+SwMk8nk1l6c0ceyKF8U1113Hb///jub\nN29m27ZtrFmzhgULFjBt2jTGjh1bJm24o+Czzu1Pr169eOaZZ9yWiYiIKDc9msqJVzic2H84/wQs\nAdYXkRelVENgM7AIuBe4HVislDolIp8VUlSj0WiuaG6NimL7woX0dONgbTMMOvTrB6UMDXdr376F\n1x0dXap6y4p169YRGRnJokWLnOznz5+nSZMmFaQqjwYNGpCRkcGff/7pNMp56NChYtcRGBjIgAED\nGDBgAFarlV69ejF58mTGjBlD7dq18ff357fffvNYXilFvXr1OHjwoEtaTEyMQ2dhKKVo2LAhqamp\ndO3atdjaNX9vvGINp4hsE5EJIvIpnmds8vMYcERExojIQRFZCKwFRpWrUI1Go/Fynps6lTnNm7PV\nMMgdVxNgq2Ewt3lzRk+Z4pV1lwRPo6gmk8llNHH58uXEx8dfDllF0qNHD0TExSFesGBBsUaGz58/\n73RvsViIiIggOzsbq9WK2WwmKiqKdevWFep0RkZG8p///IeffvrJYbt48SKLFy8mIiLCaTrdk67+\n/fvz5Zdfsnv3bpe0hISEMhvV1Vw5eMsIZ0lpC+wsYNsOzK0ALSVm6NChfPDBBxUtA9BaPKG1eK8O\nTeEEBQWxbs8eZr/0EnM2biTAaiXVYuHW6GjWTZlySWGLyrPukuDJmenduzevv/46jz76KG3atOHn\nn39m9erVbtcgVgTt27enV69eTJ8+nb/++oubbrqJzz//nKNHjwJFH7d522230aRJE9q2bctVV13F\nr7/+yjvvvMPdd9/t2DA1Y8YMvvzyS9q3b8/w4cNp1qwZJ0+eZM2aNfz000/4+Pgwfvx41q5dS7du\n3Rg5ciTBwcG8//77/PXXXyxevNipTU/P+sUXX2TLli3ccccdDBs2jBtuuIGkpCR++eUX1q9fz9mz\nZwkICCiDp6a5UqisDmct4EwB2xkgWCnlKyIZFaCp2HTv3r2iJTjQWtyjtbjiLTo0RRMUFMSkefNg\n3rwy38RTnnXnp7B6PaVNmjSJjIwM1qxZw6pVq2jTpg07duzgiSeecCnjrg5P9borW5z63LF69Wqe\ne+45Vq9ezdq1a+nevTvLly+nZcuWRZ7g89hjj/Gvf/2LOXPmkJycTL169RgzZgwvvviiI0+DBg34\n/vvvefnll/nwww9JSkqibt269O7d23EcZ506dfj2228ZO3Ysb7zxBpmZmdx4441s3bqV22+/vVj9\nqlKlCt988w1Tpkxh3bp1LF26lJCQEJo1a8a0adPcrrHV/M0pLGZSRVyADYguIs9BYGwB251ANuDr\noUwrQGrWrClRUVFOV9u2bV1iDG7fvl2ioqJc4k09/vjjsnjxYpcYVFFRUXLu3Dkn+4QJE2T69OlO\nttjYWImKipKYmBgn+/z58+W5555zsqWkpEhUVJT85z//cbKvXLlShgwZ4qKtf//+uh+6H1dUP1au\nXClRUVHSsmVLadKkiURFRUmnTp10HE4viCesKTv27NkjSilZv359RUvRaEpMceNwet1Z6kopG0Xs\nUldKfQXsFZFn89mGAHNFJMxDGX2WukZzBaDPUtffY5UZd2eRDxo0iPXr13Py5Elq1KhRQco0mtJR\n3O/kyjqlvgf7iGZ+uufYNRqNRqPxSl599VUOHDhAp06dUEqxefNmPv/8c55++mntbGquaLxil7pS\nKlApdb1S6oYcU+Oc+3o56dOUUvljbL6dk2eGUqqZUupxoC8w5zJLLxXedAKD1uIercUVb9Gh0VRm\nOnTowF9//cUrr7zCmDFjiI2NZerUqcyePbuipWk05YpXOJzATcB/gb3Y1wHMBvYBk3PSawH1cjOL\nyDGgF/b4mz9hD4f0kIgU3LnulcycObOiJTjQWtyjtbjiLTo0msrMnXfeyTfffEN8fDzp6ekcPHiQ\ncePGXbaA+RpNReEVU+oi8hWFOL8iMtSNbTf2k4kqHf/6178qWoIDrcU9Wosr3qJDo9FoNJUPbxnh\n/FvhTbHJtBb3aC2ueIsOjUaj0VQ+tMOp0Wg0Go1GoylXtMOp0Wg0Go1GoylXtMNZATz//PMVLcGB\n1uIercUVb9Gh0Wg0msqHdjgrgPr161e0BAdai3u0Fle8RYdGo9FoKh9ed9JQeaFP6NBorgz0SUP6\ne0yj0XgPxf1O1iOcGo1Go9FoNJpyxWscTqXUE0qpo0qpNKXUd0qpNkXkv08p9ZNSKkUpdUoptUQp\nVfVy6dVoNBqN5nIxadIkDMP5T3bDhg0ZNmxYkWWXLl2KYRgcP368zPTExsZiGAYffvhhmdVZUiIj\nIxk+fHiFtV+Q7du3ExQURHx8fEVL8Uq8wuFUSg3AfrrQROBG4Gdgu1Kquof8twLLgPeAFtiPtbwZ\nePeyCL5EDhw4UNESHGgt7tFaXPEWHZormyNHjjB8+HCaNGmCv78/ISEhdOjQgfnz55Oenl7R8ioM\npZTLaUSGYRTrhCJ3ZYvLqlWrmDdvnsd6K4pvvvmGnTt3Mm7cOIctJiaGyZMnl6lj7Y633nqLZcuW\nudh79OhBeHg406ZNK9f2Kyte4XBiP5ryHRH5UEQOACOAVMDTT7e2wFERWSgisSLyLfAOdqfT6xkz\nZkxFS3CgtbhHa3HFW3RoSkZ5rtMv67q3bNnCddddx9q1a4mOjubNN99k+vTpNGjQgDFjxvDMM8+U\naXuVnYMHD/Luu+U7zrJy5Uq3DmeDBg1IS0vj/vvvL9f2PTFr1iy6detGo0aNHLb9+/czefJkjh07\nVq5tL1q0yK3DCTB8+HDeeecdUlJSylVDZaTCHU6llAX7EZWf59rE/i22E2jnodgeoJ5S6s6cOmoC\n/YAt5au2bHjzzTcrWoIDrcU9Wosr3qJDUzRJSUmMHDOSRq0aUe/mejRq1YiRY0aSlJTktXUfO3aM\nQYMG0ahRI2JiYpg7dy4PPfQQjz32GB999BH79+/n2muv9VheRMjIyLgkDZUNi8WCyWSqsPZ9fHwq\nZJTz3LlzbNmyhQEDBjjZRaTCz6S/5557SE9P5+OPP65QHcUlNTX1srVV4Q4nUB0wAWcK2M8AtdwV\nyBnRHAysVkplAqeBBODJctRZZnhTeBmtxT1aiyveokNTOElJSbTr3o6FpxdyLPoYf/b+k2PRx1j4\n10LadW93SY5hedY9Y8YMUlJSWLJkCVdddZVLeuPGjXnqqacc94ZhMHLkSFauXEnLli3x8/Nj+/bt\ngP2P6OjRo6lfvz5+fn5EREQwe/Zslzo/++wzOnbsSFhYGEFBQURERDB+/HinPAsWLKBly5YEBgZS\ntWpV2rRpw7/+9a9C+zJ79mwMw+DEiRMuaS+88AK+vr5cuHABgK+//pr+/fvToEED/Pz8qF+/Ps8+\n+2yxlg+4W8O5f/9+unbtSkBAAPXq1WPq1KnYbDaXshs3bqR3797UqVMHPz8/wsPDmTJlilPeLl26\nsGXLFsd6TcMwaNy4MeB5DecXX3xBx44dqVKlCmFhYfTp08dlOU7uetQ//viDIUOGEBYWRmhoKMOG\nDStWvzdv3kx2djbdunVz2JYtW0b//v0B6Ny5M4ZhYDKZ2L17tyPP1q1b6dSpE1WqVCE4OJjevXuz\nf/9+p7rPnDnD0KFDqVevHn5+ftSuXZs+ffo4pukbNWrE//73P7788kvHM+nataujfI0aNfjHP/7B\np59+WmQ/imorv+7bbruN4OBgQkJCuPnmm1m1apVTno8//pibbrqJgIAAatSowf3338+pU6ec8gwZ\nMoSgoCCOHDlCZGQkwcHBDB482JH+/fff07NnT0JDQwkMDKRz5858++23RfajuHiDw1lilFItgHnA\nJKAV0ANohH1avVAiIyOJjo52utq1a8cnn3zilG/Hjh1ER0e7lH/iiSdYsmSJk23fvn1ER0cTFxfn\nZJ84cSIzZsxwsh0/fpzo6GiX/wEXLFjgElg7NTWV6Ohovv76ayf7qlWrGDp0qIu2AQMG6H7oflxR\n/Vi1ahXR0dFcd911hIeHEx0dzahRo1za1eQx/tXxxITHYAu3Qe5gjwJbExsx4TG8NOUlr6x78+bN\nNG7cmFtuuaXYZT7//HOeffZZBg4cyLx582jYsCEAUVFRzJs3j8jISObOnUtERATPP/88o0ePdpTd\nv38/UVFRWK1WXn31VebMmcM///lPpz+w7733Hk8//TQtW7Zk3rx5vPLKK9x44418//33herq378/\nSinWrFnjkvbxxx/Ts2dPQkJCHPdpaWk8/vjjvPnmm/Ts2ZMFCxbw4IMPFtn/gqN5Z86coXPnzvzy\nyy+8+OKLjBo1iuXLl7udEl+6dClBQUGMHj2a+fPnc9NNNzFhwgReeOEFR56XXnqJG264gerVq/PR\nRx+xYsUK3njjDY96du7cSc+ePYmLi2Py5MmMHj2ab7/9lg4dOjg5Ubm6+/fvT0pKCtOnT2fAgAEs\nW7aMyZMnF9nvPXv2UK1aNerVq+ew3XbbbYwcOdKhe8WKFSxfvpzmzZsDsHz5cnr37k1QUBAzZ85k\nwoQJxMTE0LFjRydtd999N59++ikPPfQQb731Fk8//TTJycmOPPPmzaNu3bo0b97c8UwK/khp3bp1\nsRy1otoC++fUu3dvEhMTefHFF5kxYwY33nij48dVbp4BAwZgsViYPn06jz76KOvXr6djx45cvHjR\n6blnZWXRo0cPatWqxezZs7nnnnsA+w+F2267jeTkZCZNmsS0adO4cOECXbt25ccffyyyL8VCRCr0\nAiyAFYguYF8KbPBQ5kNgTQHbrYANqOmhTCtA9u7dKxqNpvKyd+9eAQRoJRX8/XW5r+J8jzW8saEw\nEWGSm2siUvv62rL31N5SXVf/4+pC627YqmEJP007Fy9eFKWU3HXXXcUuo5QSs9ksBw4ccLJ/8skn\nopSSadOmOdn79esnJpNJjhw5IiIib7zxhhiGIefPn/fYRp8+feS6664rQU/yaN++vbRp08bJ9sMP\nP4hSSj766COHLT093aXs9OnTxWQyyYkTJxy2SZMmiWEYTvkaNmwoQ4cOddw/88wzYhiG/Pjjjw5b\nXFychIaGimEYEhsbW2i7I0aMkCpVqkhmZqbD1rt3b2nUqJFL3mPHjolSSpYtW+aw3XDDDVKrVi1J\nTEx02H755RcxmUwyZMgQp74opeSRRx5xqvPuu++WGjVquLRVkI4dO7o8WxGRtWvXimEY8tVXXznZ\nk5OTJSwsTEaMGOFkP3v2rISGhsrw4cNFRCQxMVGUUjJ79uxC22/ZsqV06dLFY/q0adPEMAw5d+6c\nxzzFaevChQsSHBws7du3l4yMDLd5rFar1KxZU66//nqnPFu2bBGllEyaNMlhGzJkiBiGIePHj3ep\np2nTphIZGelkS09Pl8aNG0uPHj08ahQp/ndyhY9wiogV2As4xsaV/edPN8DTT4QAIKuAzYa9wxW7\ngKMYFBzVqUi0FvdoLa54iw6NZ0QEq8nq+VtQwan0U7R+pzWt3y3h9U5rTmecLrRuq2Et1Uai3FGY\noKCgEpXr3LkzzZo1c7Jt3boVs9nsNP0OMHr0aGw2G1u3bgUgNDQUgA0bNnjUHBoaysmTJ0s1wjNg\nwAD27t3L0aNHHbbVq1fj5+fnNDvg6+vreJ+amkp8fDzt2rXDZrPx3//+t0Rtbt26lbZt2+YG4Qag\nWrVq3HfffS5587ebnJxMfHw8HTp0IDU1tVQRKf766y9+/vlnhg4d6hi9Bbjuuuu44447+Pe//+2U\nXynlEtKoY8eOxMfHk5ycXGhb8fHxhIWFFVvbZ599xoULFxg4cCDx8fGOSynFLbfcwq5duwDw9/fH\nx8eHL7/8ksTExGLXX5BcbQVndfJTnLY+++wzkpOTGTduHD4+Pm7z/Pjjj5w9e5bHH3/cKU9kZCQR\nERFs2eK6tWXEiBFO9z/99BOHDh1i0KBBTs8nKSmJbt26OS1LuBTMZVLLpTMHWKqU2gv8gH3XegD2\nUU6UUtOA2iKSO8ewCXhXKTUC2A7UBuYC34vIX5dZe4m5nIt0i0JrcY/W4oq36NB4RimFJdvi+ae3\nwNW+V7N5+OZS1d97Q29OiwenU8CSbSnVpo3g4GCAEq8BzZ1Cz09sbCy1a9cmMDDQyZ47tRobGwvY\nHcIlS5bwyCOPMG7cOLp168bdd99N3759HX0YO3Ysn3/+OTfffDPh4eF0796de++9l/bt2wNgtVo5\nf/68Uzs1atTAMAz69evHs88+y+rVqx2he9auXUtkZCRVqlRx5D9x4gQvv/wymzZtIiEhwWFXSjnW\neRaX2NhY2rZt62Iv6JSDfUnB+PHj2bVrl8u0a0nbzW0boGnTpi5pzZs3Z8eOHaSlpeHv7++wF1wX\nnuuoJSQkOD0jd5Tkh82hQ4cQEbp06eKSppRy/Pvz8fFhxowZPPfcc9SsWZO2bdvSu3dvHnjgAWrW\nrFns9nK1Ffb/QnHa+uOPPwAK3SwXGxuLUsrtc4+IiOCbb75xspnNZurWretkO3ToEAAPPPCA2zYM\nw+DChQtOPyRKg1c4nCKyJifm5itATeAnoIeInMvJUguoly//MqVUFeAJYBaQiH2X+zgqAcVZo3K5\n0Frco7W44i06NIUTdXsUC48sxNbEdaOI8YdBv579aHV16Y7F7Nujb6F1R9/huq63OAQFBVG7dm1+\n++23EpXL77yUFD8/P3bv3s2uXbvYsmUL27ZtY/Xq1XTr1o0dO3aglCIiIoKDBw+yefNmtm3bxvr1\n61m0aBETJ05k4sSJfPvtt3Tp0gWllGOH9NGjR6lfvz5XX301HTt2ZM2aNYwbN449e/Zw/PhxXn/9\ndYcGm83G7bffTmJiIi+88ALNmjUjMDCQP//8kwcffNDtZp+y4MKFC3Tq1InQ0FCmTJlC48aN8fPz\nY+/evYwbN67c2i2Ipx32RTmT1apVc3LOi8Jms6GUYsWKFW4dR7M5zxV6+umniY6O5pNPPmH79u1M\nmDCBadOmsWvXLq6//vpitZerrXp1t6HEy7StkpJ/ZDuX3M979uzZHtst6gdAcfAKhxNARBYBizyk\nuexkEJGFwMLy1qXRaDSViakvT+WL7l8QIzF2x1ABYncImx9uzpRFU7yy7t69e/Pee+/x/fffl2jj\nUEEaNGjA559/TkpKitMoZ0xMjCM9P126dKFLly7MmjWLadOm8dJLL7Fr1y7HzmN/f3/69etHv379\nyMrK4q677mLq1Km88MILXH/99ezcudOpvlq18oKrDBgwgCeeeIJDhw6xevVqAgMD6d27tyP9119/\n5dChQyxfvtxp2rtgnSXpe+5oVX4KTpF/+eWXJCQk8Omnn3Lrrbc67Lkjavkp7oh17nM9ePCg2/ar\nV69+ST8Q8hMREcH69etd7J60NmnSBBGhRo0aTjvKPdGoUSNGjRrFqFGj+OOPP7j++uuZPXu2Y0d+\nUc/k6NGjVK9enWrVql1SW7m6f/vtN0d0gII0aNAAEeHgwYN07tzZKe3gwYMu/97d0aRJE8D+w684\nz6e0lHoNp1LKrJS6XSk1XCkVlGOrnTPyqNFoNJoKICgoiD079vBk7SdpuKkhdTbXoeGmhjxZ+0n2\n7NhT4nWSl6vuMWPGEBAQwMMPP8zZs2dd0v/44w/mz59fZD2RkZFkZWW5xI2dO3cuhmFw5513Argd\nIbv++uuRfPE8C06Xm81mmjdvbl8ra7USGhpK165dna786+juueceDMNg5cqVrF27lt69ezs5Xbkj\nfAVHFN87fMtqAAAgAElEQVR4441SLU2IjIzku+++c1pzeu7cOVauXOmUz2QyISJO7WZmZrJokeuY\nT2BgYLGm2GvVqsUNN9zAsmXLnKbof/vtN3bs2EGvXr1K3B9PtGvXjoSEBJcA74GBgYiIy5rIHj16\nEBwczGuvvUZWVsHtH3lrLdPS0lxiuTZq1IigoCAne2BgYKFrPPfu3Uu7dp7CiFPstrp3705QUBDT\npk3zGGP2pptu4qqrruLtt9/GarU67Fu3biUmJsbpB44nWrduTZMmTZg1a5bbgPWFrUUtCaUa4VRK\nNQC2AfUBX+AzIAkYm3M/wnNpTVxcXJFD7ZcLrcU9Wov36tAUTVBQEPNmzGMe8xxTvd5ed+PGjVm5\nciUDBw6kefPmPPDAA7Rs2ZLMzEy++eYb1q5d6zZsV0GioqLo0qUL48eP5+jRo1x//fVs376dTZs2\nMWrUKMfJNK+88gq7d++mV69eNGjQgDNnzvDWW29Rv359OnToANj/4NeqVYtbb72VmjVrsn//fhYu\nXEjv3r1d1oi6o0aNGnTp0oU5c+aQnJzsEqg8IiKCJk2aMHr0aE6ePElwcDDr1q0r9YaVMWPGsHz5\ncnr06MHTTz9NQEAA7733Hg0bNuSXX35x5Gvfvj1hYWE88MADjlBCK1ascPtZtm7dmjVr1jB69Gja\ntGlDlSpVPDoxr7/+OpGRkbRt25aHHnqI1NRU3nzzTcLCwpg4cWKp+uSOXr16YTKZ2LlzJw8//LDD\nfsMNN2AymZgxYwaJiYn4+vrSrVs3qlevzltvvcUDDzxAq1atGDhwIDVq1OD48eNs2bLFcXTq77//\nTrdu3ejfvz8tWrTAbDazfv16zp49y6BBg5yeydtvv83UqVMJDw/nqquucqwPPXfuHL/88ovLprWC\nFKetoKAg5s6dyyOPPEKbNm249957CQsL4+effyYtLY0PPvgAs9nMjBkzGDZsGJ06dWLQoEH89ddf\nzJ8/n8aNGxfrdC6lFIsXLyYyMpJrr72WoUOHUqdOHf7880927dpFSEhIseKKFklhW9g9XcAnwHLA\nB7uj2TjH3hk4VJo6y/vCi8IiRUVFVbQEB1qLe7QWV7xFhw6L5B3fY+XF4cOHZfjw4dK4cWPx8/Nz\nhIVZsGCBU9gXwzBk5MiRbutISUmR0aNHS926dcXX11eaNWsmc+bMccqza9cuueuuu6Ru3bri5+cn\ndevWlcGDB8vhw4cded577z3p3Lmz1KhRQ/z9/eWaa66RcePGSVJSUrH7s3jxYjEMQ0JDQ92Gtjlw\n4IB0795dgoOD5aqrrpIRI0bIr7/+KoZhOIUcmjRpkphMJqeyjRo1kmHDhjnZfvvtN+nSpYsEBARI\nvXr15LXXXpP333/fJSzSnj17pH379hIYGCh169aVF154QT777DOXsEIpKSkyePBgqVq1qhiG4QiR\ndOzYMReNIiJffPGFdOzYUQIDAyU0NFT69OnjEroqN8RTfHy8k33p0qUuOj3xz3/+U+644w4X+5Il\nSyQ8PFwsFotLX7766iu58847JSwsTAICAuSaa66RYcOGyb59+0REJD4+Xp566ilp0aKFBAUFSVhY\nmLRr107WrVvn1MaZM2ckKipKQkJCxDAMpxBJb731llSpUkWSk5ML1V/ctkRENm/eLB06dHA807Zt\n28rq1aud8nz88cfSunVr8ff3l+rVq8sDDzwgp06dcsozZMgQCQ4O9qjp559/lr59+zr+vTdq1EgG\nDhwou3btKrQvxf1OVlLE4lx3KKXigfYiclAplQRcLyJHlFINgf0iElB6F7h8UEq1Avbu3buXVq1K\nt2C+rNi3b1+Fa8hFa3GP1uLdOnLCvrQWkX0Vredy4k3fYxpNRfL111/TpUsXDhw44FiD6A20atWK\nrl27MmvWrIqWctko7ndyaddwGtiPoyxIXewjnppC8KY/FFqLe7QWV7xFh0aj0XTo0IHu3bszc+bM\nipbiYPv27Rw+fNgRBkvjTGl3qe8AngEezbmXnM1Ck4F/eyyl0Wg0Go1GUwa4C2pekfTo0cNpw5TG\nmdI6nKOB7Uqp/YAfsBK4BogDBhVWUKPRaDQajUbz96JUU+oichK4HpiK/YSf/2IPun6jiLjGsygG\nSqknlFJHlVJpSqnvlFJtisjvo5SaqpQ6ppRKV0odUUoNKU3bpSXNmsbFjItYs61FZ87HkiVLyklR\nydFa3KO1uOItOjQajUZT+Sixw6mUsiil3gfqichHIjJGRB4XkcUiklYaEUqpAcBsYCJwI/Az9hHU\nwmKwfAx0AYYCTbGPrLpGnC1H0rLSOJZ4jGOJxziddJrkzGSybdlFltu3z3v2OWgt7tFaXPEWHRqN\nRqOpfJR2l/oF4AYROVomIpT6Dvs56E/n3CvgBDBfRFxWBCulemKfxm8sIsUKWFYeuzvPp53ndNJp\nAiwBpGWlISL4mf0I8Q0hwCcAf7N/mca/02g0epc6epe6RqPxIsp7l/onQJ9SlnVCKWUBWmM/Cx0A\nsXvBOwFPofqjgB+BsUqpk0qpg0qp15VSfmWhqaT4mn0J9Qsl1C8UgDMpZziWcIzYxFgS0hLIyHJ/\nQoBGo9FoNBrN34HSbho6BExQSt0K7AWczkISkaLPH8ujOvYQS2cK2M8AzTyUaQx0BNKxO77VgbeA\nqsBDJWj7kig4OqyUwt/ij7/Fn2xbNulZ6fyZ9CcWw0IVnyoE+Qbhb/bHYrJcLokajUaj0Wg0FU5p\nHc6HgETsI5OtC6QJUBKHszQYgA24V0SSAZRSzwIfK6UeFxGPQ4qRkZHcfPPNTrZz584xduxY+vTJ\nG7TdsWMHb775Jhs3bnTK+8gjj3DkxBGOnD1ChpGBylLcdO1NJJ1LYv6786larSoAJsPEW6+/hX+A\nP4+OfJSkzCQS0hM4f/o8U1+YymvTX+OGljdgMuzhTBcsWMDx48d5/fXXHW2lpqYycOBAxowZ4zhq\nDWDVqlXs2LGDDz74wEnbgAEDGDRoULH68cQTT9CqVSseeijPP9+3bx+TJk3i/fffdzrCcOLEiQQE\nBDB27FiH7fjx4zz55JPMnDmTiIgIh133Q/ejLPuxatUqVq1axdGjR0lLS6NFixbFOtf5SicmJqai\nJWg0Gg1Q/O+jUq3hLEtyptRTgXtEZGM++1IgRETuclNmKfaTjprms0UA/wOaisgfbspc8tqnpKQk\n2nVvR0x4DLYmNlCAgHHEIPxgOJs2bKJKUBWP5UWEjOwMHhr0EAuXL8TX5EuIbwiBPoH4mf0qZL1n\ndHS0i9NQUWgt7vEWLd6i42++hrO+YRgHbTZbhSwf0mg0GncYhpFus9maichxT3lKO8LpIGeDT+66\nyxIjIlal1F6gG7AxX53d8DxS+g3QVykVICKpObZm2Ec9T5ZGR3EY/+p4u7MZbsszKrA1sXFYDjNz\n1kxemfyKx/JKKfzMfjw64lGCfYPJyMrgTMoZjFSDAEsAIX4h+Jv98TX7llcXXHjyyScvW1tFobW4\nx1u0eIuOvzMiclwp1Qz7MiKNRqPxCmw2W1xhziZcwginUuoB4HnsAd8BfgdeF5HlpairP7AUGAH8\nAIwC+gIRInJOKTUNqC0iD+bkDwT2A98Bk4AawHvALhEZ4aGNSx7hbNSqEceij9lHNgsiUO/Teny3\n+7sS15tlyyI9K53M7Ex8DB8CfQIJ8g0iwBKA2bjk3wQazRXF33mEU6PRaCorpfJmctZLvgq8iX20\nEaAD8LZSqrqIzC1JfSKyJifm5itATeAnoIeInMvJUguoly9/ilLqDmAB8H9APLAaeLk0/SmmRqwm\nq3tnE0CB1WRFREo8NW42zFTxsU/FZ2ZnkpSZRGJ6Ir4mX4J8g6jiUwV/iz+GKm1QAY1Go9FoNJqK\no7TDZ08Bj4nIh/lsG5VS/8M+4lgihxNARBYBizykDXVj+x3oUdJ2SotSCku2xb4lysMI59nEs8ze\nM5tBLQdRJ7hOqdrxMfngY/JxrPeMT40nLjUOf4u/Pb6nJaDC1ntqNBqNRqPRlIbSDpldDXzrxv5t\nTtoVSdTtURhH3D8y4w+Da264hvf2vccti2/h/g33s/3wdrJsWS55t23eVmRbues9Q/1DCfELwSY2\n/kr+i9jEWE5cPEFieiKZ2ZmX3KdPPvnkkusoK7QW93iLFm/RodFoNJrKR2kdzsNAfzf2AdhjdF6R\nTH15Ks0PNcc4bNhHOsG+S/2wwTW/X8PG+RvZ9+g+Xr/jdRLSEhi2cRi3vHcLM7+ZycmLeXuZPllb\nsj/chrJvKgrzDyPAJ4A0axonL57kWMIxTl08RVJGklvHtjisWrWqVOXKA63FPd6ixVt0aDQajaby\nUdqjLe/BvmZyJ3lrOG/FvrO8v4hsKDOFZURZHQmXlJTES1NeYuPOjWQYGRhWg55dezLmuTEuIZF+\nO/sbH/36Eetj1pOSmUKXhl247x/30a1RtzIJ/p6RlUF6VjrZko2/2Z8g3yACLYF6vafmikZvGtJo\nNJrKx6XsUm+NfTd58xxTDDBbRP5bRtrKlPI4gzg+NZ6/kv8izD+s0Hyp1lQ2HtzIil9W8N+//kvN\nwJoMaDmAe1veS72QeoWWLQ4iQnpWOulZ6Sjspx2F+NnXe/qafPV6T80VhXY4NRqNpvJR4YHfLxfl\n4XCeTzvP6aTTRTqc+fnfuf/x0S/2Uc/kzGRua3Abg/8xmNsb314mo565R2pmZGdgVmYCfQIJ9g0m\nwBKgj9TUXBFoh1Oj0WgqH6Wad1VKRSqlXHaIK6V6KKXuvHRZVy7X1riW17q9xr7h+5jdfTYXMy/y\n8KaHuXnxzUz/ejrHLxQaN7VITIaJQJ9AqvpXxd/iT6o1lRMXT3As8Rink06TnJlMti27jHqj0Wg0\nGo1GUzSlXeg33YNdFZKmyWHUY6MIsAQwoOUANg3axGf3f0ava3qx7OdltFvSjnvX3cuW37dgzbZe\nUjsWk4Ug3yCq+lfFbJhJSE8gNjGWY4nHiEuJI9WaytChLhGnKgytxT3eosVbdGg0Go2m8lFah/Ma\n4KAb+wEgvDQVKqWeUEodVUqlKaW+U0q1KWa5W5VSVqXUZZ9aUzkBOS+kXyjRLvHbut7mdN+iRgum\ndJ3Cvkf3MafHHJIzk3l086O0ea8N0/4zjdjE2EvW6mv2JdQvlFC/UADOpJzhWMIxbrz1Rs6lnONC\n+gVSraml3u1eFnTv3r3C2i6I1uKKt+jQaDQaTeWjtLvU/wLuFZEvCthvB1aKyFUlrG8AsAx4lLyj\nLfsBTUUkrpByIcBe7KGYaoqIx8WZ5bGG0yY2UjJTuJhxkaSMJPtucYs/fma/S6475lwMK39dydqY\ntVzMuEinBp2477r76N6kOz4mnzJQn7fe02rLOSEJhcVkwWJYCPCxbzjKvTcbZr35SOMV6DWcGo1G\nU/korcP5DtAOuEtE/sixhQPrgP8TkYdLWN93wPci8nTOvQJOAPNFZGYh5VZhP8PdBvzzcjucueTu\nEk/KTOJC+gUysjLws/jhZ/a75PBEadY0Nh/azIpfVvDjqR+pHlCdAdcOYFDLQTQKa1RGPbBjExtZ\ntiys2VasNis2sdmdUMOC2WQmwByAn8UPi2FxOKLaCdVcbrTDqdFoNJWP0h5tOQbYBhxQSuVGNK8H\n7AaeK0lFSikL0Bp4LdcmIqKU2ondqfVUbijQCLiPcjxDvTgoZQ9F5G/xJ9QvlJTMFBLSE0hMT8Rs\nmAmwBGA2Sveo/S3+9GvRj34t+nEg7gArf13Jil9WsPD/FtKhfgcG/2MwPZr0KJNRT0MZjqM1cxER\nrDYrWbYsEtITyE7LRqEwG2YsJgv+ZvuIbq4DajFZdAxQjUaj0Wg0TpTKMxCRC0B7oBf2889nA11E\npKuIJJawuuqACThTwH4GqOWugFLqGuwO6n0iYithe+WKj8mHMP8wGoQ0oEFIAwItgXYHNC2BjKwM\nAH7Y80Op6o6oHsErXV5h76N7mddzHpnZmYzYPIKb3r2JqbuncjThaInrLEqLUgofkw8BlgBC/EKo\n6l+VUL9Q/Mx+iAgXMi5wKumUYzPS0YSj/HnxT86nnScpI4mMrAxsxfyIvv766xLrLy+0Fle8RYdG\no9FoKh8lcjiVUu2UUr3BPgopIjuAs9hHNdcppd5VSvmWg878GgzgI2Bi7nQ+UOx53cjISKKjo52u\ndu3auZwTvWPHDqKjo13KP/HEEyxZssTJtm/fPqKjo4mLy1tuajJMzHptFh+99RENQhtQPaA6WbYs\n/nfofzwy+BEOHXQ+AfT9t9/n1ZdedbKlpaYxZMAQF6dw+yfb+WbBN2wYsIEvHviCPhF9WPnrSjpE\ndqDbC9349OCnDuf2q8+/YsiAIS79ePHZF1n14SoWvbHIYfv1p18ZMmAI5+PPO+WdNXUWC+cudNwr\npTh76iyPDX6Ms7FnCfMPI8w/DH+LPx+++yETXpzA6aTTHL9wnKMJR9n/537uuPMOtuzcQlJGkv10\nJFs2q1atctr5PHOmffXEgAEDyvzzAJg4cSIzZsxwsh0/fpzo6GgOHDjgZH/sscd4/vnnnWypqalE\nR0e7OF4F+5FLWfXj1Ved/12UpB8LFiwos37kfj6l7UdpPo9Vq1YRHR3NddddR3h4ONHR0YwaNcql\nXY1Go9F4NyVaw6mU2gp8KSIzcu6vw75pZxn2k4aeB94RkUklqNMCpAL3iMjGfPalQIiI3FUgfwiQ\nAGSR52gaOe+zgO4i8qWbdsptDWdxyczOJCUzhT/j/0T5KMd0u8kwXXLdadY0/n3o33z060d8/+f3\nVPWvSv8W/bn3H/fSJKyJx3KpKakEBAZccvueyLZlk5mdSZYtiyxbFoJgUiYshgUfsw8B5gB8zD5Y\nDAvWDCvBVYLLTUtJSE1NJSCg/J5LSfAWLd6iQ6/h1Gg0mspHSR3O00CUiPyYcz8VuE1EOuTc9wMm\ni0iLEolwv2noOPZNQ68XyKvIO04zlyeALsA9wDERSXPTRoU7nLlk27JJsaZwIf0CSRlJgH2tpq+5\nbAaHD8UfYsWvK1j7v7UkZiTSvl57Bl83mJ7hPfE1+5KclMyM12ew48sdZJmyMGeb6d65O2OfH+ty\nHnx5kG3LdqwLtWZbEQQD+/pRi8lCgCXA8T53XahGk4t2ODUajabyUVKHMx24RkRO5Nx/DWwVkak5\n9w2BX0UkqEQilOoPLAVGkBcWqS8QISLnlFLTgNoi8qCH8hOpwF3qpUVESMtK42LGRS6mXyTTlunY\nhFMWu7/Ts9Lto56/fMR3f35HmF8YfRr1YdfMXRxvfhxbE5t9XFjAOGIQfjCcTRs2XRansyA2sWHN\nznFC3YRpyg03pcM0abTDqdFoNJWPkm6dPoN9Z/gJpZQP0AqYmC89CCjx8TgiskYpVR14BagJ/AT0\nEJFzOVlqYd8Ff0WhlCLAEkCAJYAwvzCSM5NJTE8kIT3BHgvzEqfb/cx+3N38bu5ufjeHzx/mo18/\nYuncpWRGZDqH51dga2LjsBxm5qyZvDL5lUvvXAkxlIGv2Rdf8kZ5c8M0ZdmyiE+L12GaNBqNRqOp\npJR0l/q/gelKqY7ANOxrL/+TL/0fwB/uChaFiCwSkYYi4i8i7XKn7XPShopI10LKTi5sdNPbKLiJ\nA+wnAVULqEaD0AbUC66Hn9mPpIwkEtMTyczOvOQ2w6uGM/G2idSIr+HsbO7Ie2trYmPVv1cxYdcE\n5n8/n5W/rmTHHzvYd3ofxy8cJ9Waesk6CqPgpqncME0BlgBC/UIdO+R9zD7YxEZCegInL5507I4/\nknCE00mnSUhLIDkzmYysDLJt2djE5nSJiMcrF3efUUXhLVq8RYdGo9FoKh8lHeF8GVgPfAUkAw+K\nSH5vaBhOLozGHfXr1/eYZjbMhPiFEOwbTKo11T7dnnGR5MzkS55uFxGyzdnOe/pD8r1XYDVZ2R27\nm/i0eBLSEhCcl1z4m/2pHlDd6aoWUI3qAdWpEVDD/t7fbq/qX7VEI7R16tYpMk9umCYfkw9Y8vqV\nOxJ6IeMC59Psu+zNhhmTMhX7eeXPF1A9gCMJR/LScv7zVM5TG57K5eZ3V65gmdCrQjmXcg5DGfa2\nUGXyWlIK+3er0Wg0Gk1hlPakoRAgWUSyC9ir5tgvfUiujPHGNZzFJT0rneSMZC5kXCAtK80x6lea\nAOu3dLqFk/886T6QlEDdT+vy/e7vAezB3tMSOJd6jrjUOOJT44lLiyMuNY64lDji0nJsqXGcSz1H\nela6U3UKRVX/qoU6pdUCqlEjoAbVA6oTYAkokylxx6aoXTuwmq2Ys8zcftvtPDv6WQKrBJa4voJO\nt8NeyP87nsoUt1xKcgpvzHmDXbt3YTVZsWRb6NyxM0+NeqrQPuQ6q0U5mkopDAwMw/D4ejkcWxEp\n8Weu13BqNBpN5aNUx9/kBH53Zz/vzq65NPzM9mMyQ/1DHUHkL2ZcBCDQEliiXdzdO3dn6ZGl9g1D\nBTD+MOjRpYfj3myYqRFYgxqBNYpVd0pmit0ZTY0jPi3PEc11SuNS4/g97nfOpZ7jfNp5F6fMz+xn\nHzX1r071wOouTmmu05o7euru9KbkpGSi7oricNPD2PrkbYpafmQ5e/rtqbBNUSUhOSmZewfc69KH\nVUdW8X+D/q/QPuQ6s0LOMgFPryJkkYVkec5TFCVxbJVSGMrAUAapyalOURJ8bD5E3x7N1JenEhRU\nov2GGo1Go6kklGqEszJSmUc4C2ITm326Pf0iSZlJZNmyHE5pUaNFyUnJ9P5nbw43PYRcg8OZUYcg\n/Pdr2Pzp5ssWGikhPcHhiOa/ckdSz6WccziuBdePKhRh/mF2h9Q/zxH9+V8/81/Tf5FrXP9dG4cN\nogOjeez5x8q9f05aSziCt3DGQjambkTC3ffh/qr38+orr5ZJ/NZLoVCHNp/Tmt+WlJTEwP4DOdLs\niEuUhOaHmrNnx54inU49wqnRaDSVj9Kepa65BA4cOEBERESpyxvKoIpPFar4VHFMt+fubvc1+eJv\n8S90ur3mRaH5evjFH1LNEJAF/0iD8/Uv348Pk2FyOIm5HP79MOGtwt3mT7WmEp8a7zq9nxJHXI7t\ncPwhDv7wO3K/+37Ymtj4ZPknfHL1J27TnTgHFG9gt+z5DHjAvRZbExvLli9jWdVlmJQJX7MvPiYf\n/Ex++Jjta1t9Tb6O19x0H5OPPQqAyX7l5vUz+dnTzT55aTl585fxMflw5tgZwpuFO+XLzWNSxXN+\nZ8ybYXc2w/ONsOdESYiRGF6a8hLzZswrqyep0Wg0Gi9BO5wVwJgxY9i4cWPRGYtB7shmiF8IKdYU\nEtMSuZB+AUMZBFgCXKbb33llBi8ePsKdNiAdooFcJf8+fIR3X53JszPLICySSNFXgXxTXpjE0g8W\nueaz2Qiw2QiwWagntcCvJvjYINgG2dlgy3m1ZtGMaJJVuntNCvyVD+vbzEIZBhgKVO6rcprgn/TS\nQiZNeaLobhayVtN9/iLSRei3/GnSVL5l0J8B9+b1wdewMPXG0WRKFpk2Kxlitb/mXJliJcOWmWez\nZpCUnkK8LZOM7Ex7Wrb9fe5rRnYGmdmZZDsvy3ZmZT4dBbAYFifn1pMD/N2W77Dd67qcA+xO56ef\nfqodTo1Go7kC8RqHUyn1BPYz2WsBPwNPicj/ech7F/AYcAPgC/wPmJRztrvX8+abb5Z5nRaThVBT\nqGN3e+4pRsmZyY6g6QD7tu5gli3vD35+JXfabMxesZrgzExUdrbDmbO/txW4z3P0lOO9DWwF720o\nm81xr2zZYBN7eRF7XhHItvG2NZOarTrZ8+ZcSiSvLZvk1ZVbbwGywrB7dR42Rcn5THr2Gun2GYpS\nkOOINkdRr9dI+70y7PXlvBcjL1+uwyq5+XLTVI4tx5ktOp/9PYaBJGQ69yHSuQ/qfBYjVhxAzCYw\nmxGz2f5qMoE5IO/ebAKTKcduRixm51c/M2KxgMVit1nMWE0GGSbIMEGmCdJN2WQYQroJTraMI/Sq\nEDLESoZkkSlZzo5ttv29/T6DjGwrmbY8xzY9OwOrynT/2WDv7/mUuFJtJNJoNBqNd+MVDqdSagAw\nG3iUvJOGtiulmopInJsinbCHX3oBSMQejmmTUupmEfn5MskuNeUZXiZ3uj3QEki6fzpJmUlcSL/A\n+dTz+Jh8CEzPcPp7n1+JAgLT0vDZ/Q2YjDxny8jvZOVznPI5SnanxgSGBZvJAMNkTzMZ9jRTTl1m\nk72sye4MOcoaBjVMBqkqX/7c8ionv5GbNy89vw4xFLVeeYXjv1uxNXPzbH6HWtkWzs+agBIco6dI\nPkc2xxZiE5JsNhC7o+spn8MJFpvdSczvKOek2+uwoRzvxWM+yc7m6l8NYn+35fUh1LkPV6eB+X8x\nGDmjuspqhawsVFaW/T4rC2XNstuyCxmxLAW5n7Pkd3TNZocNi6WAI2yyO7U591XjbGQX8oPAmpiu\nnU2NRqO5AvEKhxO7g/mOiHwIoJQaAfTC7kjOLJhZREYVMI1XSv0TiMI+Ovq3RymFv8Uff4s/YZZg\n0jd/ivHOO6SfPVfYACBJV9ci7otNzlPeua+573NHFgu+Fpa34Oa0gvU7vRenF3KDsudsPLGbbM7V\n5Njr+IcSuOkcMYCtKXmbUn6H5psgNDCUhA43ObfpcHDyv8/3hJSy1+/00NylO9ucu+shPf9Ufo7p\n6h4/EbDprMc+hITU4Pjqd/J2ghf4NJ3sNhsqy4bKysLIsjuhRla2/dWaDVar3XHNtVvz8uV3YLFa\n7a9ZWShrds5rPkc318nNny8rC6zZqFxbZiZXpylifxePPwiutvnpEU6NRqO5Aqlwh1MpZQFaA6/l\n2kRElFI7gXbFrENhP1ZTh2XKz6lT8O67WJYswXLyJBIRwS03tWLbvp+408109FbD4MZed5AZFODY\nVQyucSML2vPfe07LdU7z1SKCEnsepZR9lC8nzek1x+5wBSXHqco5bz1/Wqs7u3HbstXsXi9sDACr\nH7kidVkAABRUSURBVFjSIToVOmYqvu7bDWpela8z+fpmsx+daXeY82z2+u0Or1Iqb3Q0Xzo5fbH3\nI9+zzVd/bsggZ+db8vok9l607dyR9qvXe+zDt71vxSc9C8l5vq7P3N1nBBggPgb4GIiYnT+fgp+1\nw99Tzh+Jwy4e7M5OsMOvzrm/OnoIAYX8IKhetZp2NjUajeYKpMIdTqA6YMJ+Tnt+zgBuxkHc8jwQ\nCKwpQ13lxowZMxg7dmz5VG6zwdat8Pbb9lcfH+jRA2bPRt1yC+N8fLjnjjuQmBjutNmYCYzB7mzO\naNqEN8aNxJptzecw5P3xz31vYA8KbpgMxz2QFyw8Nx6jctxhGPY8BevNfz931lyefe5Zt2lF3ee+\nn/zGIvr/3y+MijnAGwl5jt9Ww2Bui+asnfc2QUFBLqOC+VFKld1nVOhIrvv0SW+24J5fYhh1wN6H\nGcBYYJthMLd5BOsWvOsSOsid81/W93PnzueZUU+5pLsr4zguNPe/nPu20ZG0X/yhW2e6U6bi12F9\nivdcNRqNRlOp8AaH85JQSt2L/cjNaA/rPb2O1NRyOJM8ZzSTDz6A48fhmmvg+eehXz+oUweCg8HP\njyClWLdnD7Nfeom5GzdyPD6Oz6pVo11UFBtemUxwcDBQtLNXHtgybQT5Xlrg77CQMNbv+c7RvwCr\nlVSLhVujo1k/ZUqxA4uX2WeUb+q8uARVq8a67+x9mLNxI8fj4/m8WjVujY5mnYc+uFkIUOZk2xTB\nwZcWK2rS7AXc8+2PjIqJcfpBsC3nB8G6KVMuVaZGo9FovBHHSEQFXdhPxLZidxjz25cCG4ooOxD7\nme49i9FOK0Bq1qwpUVFRTlfbtm1lw4YNkp/t27dLVFSUFOTxxx+XxYsXO9n27t0rUVFRcu7cOSf7\nhAkTZPr06U622NhYiYqKkpiYGCf7/Pnz5bnnnnOypaSkSFRUlPznP/9xsq9cuVKGDBkikpUlsnmz\nSHS0iNks/Q1DNtx0k8jy5SKHDomcPy/bN28utB82m63i+1GA/v37l9nnkb9/lbUfZ8+edbJX1n7k\n/ru6ePGiTBw5UhqFhEjz4GC5vWFDmThypFy8eNGlHytXrpSoqChp2bKlNGnSRKKioqRTp072VQPQ\nSv6/vfuPs6qu8zj+emOjCAImGFiZSK5W6vqr3EYrKUsR15tmG2atqZtmYilmtS4+hCw0M8sfiW4r\noW7Kro/NTFwNzK1Q81eiPqygzRgVU1CyFWRARuazf3zP5J2ZO8MMM+fcM8P7+Xich9xzzj3nfb+M\nzsfv93y/t87//fLmzZs3bz3bSvFNQ5IeAB6MiDOz1wKeAa6IiEu6eM8ngWuBKRFxew/uMWi+aYhn\nn4U5c1Jv5tNPw4QJ8LGPpe0tb4Htt4fhw9PMbrMSi/B3qZuZbQnKMqT+HeA6SY/w+rJIw0i9nEi6\nCHhzRHwme318duyLwMOSxmbXWRcRq4uNXpCWFli4MA2b33lnGqL9yEdg5kx473th1Kg0bD5sWK+G\nb83qyROEzMy2DKUoOCPiZkljgAuAscBjwOER8WJ2yjhg56q3nEKaaHRVtrW5nrSUUqmtWrWKMWPG\nbPrE1lZYvhyuuw6uvx6ammDXXeGss6BSgXHjUm/mdtvB0KH5ZimAs9RWlixlyWFmZgNP11+4XbCI\nmB0R4yNi24hojIhfVx07KSI+VPX6gxGxVY2t9MUmwMkndxMzAtatg9tvh2OOSZN/Zs2CPfdMhedt\nt8Hpp8Nee8H48TBmzGYXm5vMUjBnqa0sWcqSw8zMBp5S9HBuaWbOnNl554YNaab53Lnwwx/CsmWp\noPzSl+DII2H06DRkPnJkej5zSP/8v0LNLHXiLLWVJUtZcpiZ2cBTiklDRSjlpKGNG6G5Ge6+O/Ve\n3nln6uE87DCYMgX23Tf1XrYVmkOH+vlM2+J50pCZ2cDjHs6itQ2ZP/cc3HADzJsHTz4Jb3sbnH02\nHHVUKi633TY9nzliRFq83czMzGyAcsFZlFdfhbVr4Re/SIXmggXw2mupN/P882G//dIw+fDh8MY3\nelkjMzMzGzRKM2loUGppgdWrYcmSNPGnsRGOPZY5ixbBmWfCPffAt74FBx6YntHcZZfU0zlyZGHF\n5pw5cwq5T084S21lyVKWHGZmNvC44OyDms+/trbCK6/AihVpRvmJJ8IBB8CFF6YF2m+4gcVHHAGf\n/nSaYT52bCo0d9op9WoW/Izm4sXleQTOWWorS5ay5DAzs4HHk4Z6ac2aNXx7+nTumz+f4S0trG1o\n4OCjjuKc885jxJAh8Kc/wS23wM03w9Kl8OY3w/HHwyc+kZ7H3LgxLc7eNmze0NB/H9JsC+BJQ2Zm\nA09pnuGUNBU4h7TI++PAFyLi4W7OnwhcCuxJ+hrMWRFxfZ4Z16xZw7GNjZy9ZAkzW1sR6QudF1x1\nFcfeeis/2n9/Rtx1F6xfD4ceCueeCwcdlJ7fHDIkLdA+alS/LmtkZmZmVnalKDglTSEVj6fy+ldb\nLpC0e0SsqnH+eOB2YDZwPPBh4FpJz0XEXXnl/Pb06Zy9ZAmTWltfzwJMam0lli/n0lWrmPn5z8Nx\nx8EOO6TZ6K2taejcyxqZmZnZFqos3WzTgH+NiBsiYilwGtBM119T+XlgWUR8JSJ+HxFXAf+VXSc3\n982fz+FVxWa1ScB9o0fDqaemJY0gPZc5fnx6TnPbbV1smpmZ2Rap7gWnpAbgAODutn2RHiz9GdDY\nxdvemx2vtqCb8/ssIhje0kJXJaOAYRs2ENtsk2aajx+fZp7XWEOzUqnkFbPXnKU2Z+msLDnMzGzg\nKcOQ+hhgK2Blh/0rgT26eM+4Ls4fKWmbiHi1fyOCJNY2NBBQs+gMYO3QoWiXXTbZk3nGGWf0d7zN\n5iy1OUtnZclhZmYDT917OAeSg486igVdTPb56ZAhvO/oo3s0bH7YYYf1d7TN5iy1OUtnZclhZmYD\nTxkKzlXARmBsh/1jgRVdvGdFF+ev3lTv5uTJk6lUKu22xsZGbr311nbnLVy4sNMQ4jmzZnHKqFGc\nJdG2mFQAV0qcMHw4J05r/wjpjBkzuPjii9vte+aZZ6hUKixdurTd/iuvvJIvf/nL7fY1NzdTqVS4\n99572+2fN28eJ510UqfPNmXKlB59DoCpU6d2Wsh78eLFVCoVVq1qP0/Ln8Ofo16fY968eVQqFfbe\ne2922203KpUK06bl+qi2mZnloBTrcEp6AHgwIs7MXou01NEVEXFJjfO/CRwREftU7bsJ2D4iJndx\nj35bh/PS887jvttuY1hLC80NDRxcqfClb3yDESNGbPZ1zaxnvA6nmdnAU4YeToDvAKdIOkHSO4Br\ngGHAdQCSLpJUvcbmNcAESRdL2kPS6cDHs+vkasSIEcy8/HLuamri1uXLuaupiZmXX96rYrNjb1E9\nOUttztJZWXKYmdnAU4qCMyJuJi36fgHwKPC3wOER8WJ2yjhg56rznwKOJK2/+RhpOaR/ioiOM9dz\npc1c5qjjMGI9OUttztJZWXKYmdnAU4ZZ6gBExGzSQu61jnV6sCwiFpGWUxpwdtxxx3pH+Ctnqc1Z\nOitLDjMzG3hK0cNpZmZmZoOXC04zMzMzy5ULTjMzMzPLVWme4SzAUIAlS5bUOwcPPfQQixeXYzUX\nZ6nNWcqbo+rf4aH1zGFmZj1XinU4iyDpeODGeucws37zqYi4qd4hzMxs07akgnM0cDjwFLC+vmnM\nrA+GAuOBBRHx5zpnMTOzHthiCk4zMzMzqw9PGjIzMzOzXLngNDMzM7NcueA0MzMzs1y54DQzMzOz\nXG0RBaekqZKaJK2T9ICk99QhwwxJrR223xV07/dLuk3Sn7L7Vmqcc4Gk5yQ1S7pL0m71yCJpbo12\nuiOHHOdKekjSakkrJf1Y0u41zsu9XXqSpcB2OU3S45JezrZfSZrU4Zwi2qTbHEW1h5mZ9Y9BX3BK\nmgJcCswA9gMeBxZIGlOHOL8BxgLjsu19Bd13OPAYcDrQaVkCSV8FzgBOBQ4E1pLaaOuis2TupH07\nfTKHHO8HrgT+Dvgw0AAslLRt2wkFtssms2SKaJflwFeB/YEDgP8BfiLpnVBom3SbI1NEe5iZWT8Y\n9MsiSXoAeDAizsxei/TL7IqI+FaBOWYAH42I/Yu6Zxc5WoGjI+K2qn3PAZdExHez1yOBlcBnIuLm\ngrPMBUZFxMfyum8XWcYALwAfiIh7s331apdaWerSLtm9/wycExFz69UmNXLUrT3MzKz3BnUPp6QG\nUu/I3W37IlXYPwMa6xDpb7Kh5D9K+qGkneuQoR1Ju5J6h6rbaDXwIPVpI4CJ2dDyUkmzJe1QwD23\nJ/W4vgR1b5d2WaoU2i6Shkg6DhgG/KpebdIxR9WhevycmJnZZhjs36U+BtiK1ANTbSWwR8FZHgBO\nBH4P7ATMBBZJ2isi1hacpdo4UnFTq43GFR+HO4EfAU3A24GLgDskNUZO3fFZr/dlwL0R0fZcbV3a\npYssUGC7SNoLuJ/0jT5rgGMi4veSGimwTbrKkR0u/OfEzMw232AvOEsjIhZUvfyNpIeAp4FPAHPr\nk6p8OgzL/lbSE8AfgYnAz3O67WzgXcDBOV2/N2pmKbhdlgL7AKOAjwM3SPpAP99js3NExNI6/ZyY\nmdlmGtRD6sAqYCNpYkG1scCK4uO8LiJeBv4XyGU2eC+sAEQJ2wggIppIf495zZr/HjAZmBgRz1cd\nKrxdusnSSZ7tEhGvRcSyiHg0IqaTJtqdScFt0k2OWufm+nNiZmZ9M6gLzohoAR4BDm3blw1ZHkr7\nZ8EKJ2k70i/HbguLvGW/qFfQvo1GkmZM17WNsixvBUaTQztlBd5HgQ9GxDPVx4pul+6ydHF+bu1S\nwxBgmxL8rAwBtql1oOD2MDOzXtoShtS/A1wn6RHgIWAaafLBdUWGkHQJMJ80jP4W4GtACzCvgHsP\nJxW3ynZNkLQP8FJELCc9M3iepCeBp4CvA88CPykyS7bNID2btyI772JST/CCzlfrU47ZpGV0KsBa\nSW29di9HxPrsz4W0y6ayZG1WVLtcSHo+8hlgBPAp4BDgsOyUotqkyxxFtoeZmfWTiBj0G2nNx6eA\ndaRJCO+uQ4Z5pF/M60i/RG8Cdi3o3ocAraTHC6q3H1SdMxN4Dmgm/dLeregspMkhPyUVEeuBZcDV\nwI455KiVYSNwQofzcm+XTWUpuF2uza6/LrvfQuBDdWiTLnMU2R7evHnz5q1/tkG/DqeZmZmZ1deg\nfobTzMzMzOrPBaeZmZmZ5coFp5mZmZnlygWnmZmZmeXKBaeZmZmZ5coFp5mZmZnlygWnmZmZmeXK\nBaeZmZmZ5coFp5mZmZnlygWn5U7S85JO7cX5h0vaKGnrPHP1B0kXSfpVvXOYmZmVmQtOQ1JrVuC1\n1tg2Sjq/j7fYC7i+F+ffDewUERv6eN9uZYVt9Wd/XtJ/SnpbLy7zdWByL+/bqwLczMxsoHtDvQNY\nKYyr+vNxwNeA3QFl+16p9SZJW0XExk1dPCL+3JswEfEa8EJv3tMHAewCtAB7AHOAHwMH9OjNEc1A\nc27pzMzMBgH3cBoR8ULbBrycdsWLVfubq3oDPyLpUUmvAgdI2kPSfEkrJa2WdL+kQ6qvX92jJ2mb\n7DonZO9bK2mppElV57fda+vs9eeyaxyZnbs6e+/oqvc0SLpa0stZlhmS5km6qQdN8EJErIyIRcAs\nYF9JO2fX3VXS7ZJekfQXSTd2uO9Fku6vej0v286VtELSC5K+K0nZ8fuBscDV2WdszvZPkPTf2T1e\nkfS4pA/17m/SzMysnFxwWm9dCJwFvBNYCmxH6hE8BNgf+CUwX9LYTVxnJjAX2Bv4OXCTpO2qjkeH\n87cHpgJTgImk3shvVh0/HzgG+CTwAWBn4IhefbLk1eyfW0saAtwODAUOAiYBewL/3uE9HbNOAt4E\nvB/4LHAacHx2bDLwIvAVUs/yLtn+7wMbs/vsDUwH1m1GfjMzs9LxkLr1RgDnRsQvq/Y9km1t/lnS\nscCRwA+6udb3I+IWAEn/AnyOVLAu6uL8rYGTI2JF9p6rgS9UHZ8KTI+IO7Ljp9HzgrOt9/GtwDTg\nKWAZ8PfABGBiRLyYnXMS8IikPSPit11cb2VETMv+/AdJC4FDgRsj4i+SWoE1WY9ym52BayNiSfa6\nqYfZzczMSs89nNZb1cUlkkZKukzSkmw4eA0wHtjUxJsn2v4QEX8BNpB6BbvyUluxmXm+7XxJbyL1\ngD5cdc3XgMc2/XEQ8KKkV4Cns33HRkQA7wCWtRWb2XUfJfU8vrObaz7R4fVfs3bjMmCWpEWSzpf0\nrh5kNzMzGxBccFpvre3w+grgcNIQ8fuAfYA/kHoku9PS4XXQ/c9jb8/vqQDeQxrGHhERB0ZETwrV\n7vQ6a0RcDbwduInU07tY0mf7mMPMzKwUXHBaXx1EGgqenw0xv0QaHi5MNjT9f6TCEQBJbwD27eEl\nmiKiKZtxXm0JMCHrQW277v6kZzq7Gk7viQ3AVh13RsTyiLgmIo4GZpOe/zQzMxvwXHBaX/0B+AdJ\ne0vaD7iRNPmlaN8DZkiaLGkPUsE2jM4TenrjDuCPwI2S9pHUSHou9adVz1pujqeAiZJ2krQDgKQr\nJX1Y0nhJ7yZNfPpdH+5hZmZWGi44ra++SHqm8X7gR8AtdC6UOhZ9tYrAvhSGkBZgv4U0JH0PsII0\nAWn95l4wIlpJE4fWA/eSCtAngH/sY9bppGdAm4Bns30NwDWktptPev70rD7ex8zMrBSU5kaYDS7Z\nkkZPAv8WERfVO4+ZmdmWzMsi2aAgaQJpLdB7SEPp00jrXP5HPXOZmZmZh9Rt8AjgFODXpMXnJwAf\njAivZ2lmZlZnHlI3MzMzs1y5h9PMzMzMcuWC08zMzMxy5YLTzMzMzHLlgtPMzMzMcuWC08zMzMxy\n5YLTzMzMzHLlgtPMzMzMcuWC08zMzMxy9f8RrItBkOHF3wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xa0a5908>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a learning curve\n",
"\n",
"from sklearn.learning_curve import learning_curve\n",
"\n",
"# make polynomial model of degree 2\n",
"degree = 2\n",
"poly = make_pipeline(PolynomialFeatures(degree), Ridge())\n",
"\n",
"# learning_curve will run cross-validation tests for an increasing number of training points.\n",
"#scoring = 'r2' # the default\n",
"scoring = 'mean_squared_error'\n",
"trainSizes, trainScores, testScores = learning_curve(poly, X, Y, scoring=scoring)\n",
"\n",
"# must change sign of scores if using mean_squared_error\n",
"if scoring=='mean_squared_error':\n",
" trainScores = -trainScores\n",
" testScores = -testScores\n",
"\n",
"print 'scoring',scoring\n",
"print 'degree',degree\n",
"print 'noise',noise\n",
"print 'npoints',npoints\n",
"plotLearningCurves(trainSizes, trainScores, testScores)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Compare Learning Curves"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true,
"scrolled": true
},
"outputs": [],
"source": [
"# define a higher level plotting function so can compare learning curves for different parameters\n",
"\n",
"from sklearn.linear_model import Ridge\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.pipeline import make_pipeline\n",
"\n",
"from sklearn.learning_curve import learning_curve\n",
"\n",
"def calculateAndPlotLearningCurves(f, noise=0.0, npoints=100, degree=1, scoring='mean_squared_error'):\n",
" \"\"\"\n",
" get a sample of `npoints` from function `f` with noise `noise`,\n",
" fit a polynomial model of degree `degree` to the data,\n",
" obtain scores using given scoring system for increasing number of training data,\n",
" and plot the learning curves. \n",
" \"\"\"\n",
" \n",
" X,Y = getSample(f, noise, npoints)\n",
" \n",
" # define a polynomial model of degree `degree`\n",
" poly = make_pipeline(PolynomialFeatures(degree), Ridge())\n",
"\n",
" # get learning curves\n",
" trainSizes, trainScores, testScores = learning_curve(poly, X, Y, scoring=scoring)\n",
"\n",
" # must change sign of scores if using mean_squared_error\n",
" if scoring=='mean_squared_error':\n",
" trainScores = -trainScores\n",
" testScores = -testScores\n",
"\n",
" print 'scoring',scoring\n",
" print 'degree',degree\n",
" print 'noise',noise\n",
" print 'npoints',npoints\n",
"\n",
" plotLearningCurves(trainSizes, trainScores, testScores)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### polynomial degree 2"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scoring mean_squared_error\n",
"degree 2\n",
"noise 0.1\n",
"npoints 50\n"
]
},
{
"data": {
"image/png": "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\nWzTPfJ75b5dHRETQqlUr77OymZkkJibSrVs3vyXvc3RXX301juMwb948Fi1aRK9evfySrtwevvw9\nik899VSGtXJgAAAgAElEQVSpHk1ISkri888/93vmdO/evcybN8+vnsvlQlX9jnv8+HFmzQrs84mP\njy/WLfbatWtz9tlnM2fOHL9b9N9++y0rV67kiiuuKPH5FKRjx478+uuvARO8x8fHo6oBz0T27NmT\nypUr88gjj5CVlX/4x4lnLTMyMgLmcm3cuDEJCQl+5fHx8YU+47lu3To6dixoGnGKfawePXqQkJDA\n5MmTC5xj9txzz6VmzZo899xzZGZm+sqXLVtGSkqK3xecgrRv356mTZvyxBNPBJ2wvrBnUUuiVD2c\nItIQWA40AKKB94A0YEzO+tCCW5t9+/YV2dVeXiyW4CyW8I3DFC0hIYHpU6Yznem+W73hvu8mTZow\nb948+vfvT6tWrbjhhhto3bo1x48f59NPP2XRokVBp+3KLzk5ma5duzJu3Di2bt1K27ZtWbFiBe+8\n8w4jR470vZnmwQcf5OOPP+aKK66gYcOGpKam8uyzz9KgQQM6deoEeP/Br127NhdeeCG1atVi48aN\nzJw5k169egU8IxpMjRo16Nq1K9OmTePw4cMBE5W3bNmSpk2bMmrUKH766ScqV67MG2+8UeoBK6NH\nj2bu3Ln07NmT22+/nbi4OF544QUaNWrEN99846t3wQUXULVqVW644QbfVEKvvvpq0N9l+/btWbhw\nIaNGjaJDhw5UqlSpwCTm8ccfJykpifPPP5+bbrqJ9PR0nnnmGapWrcr48eNLdU7BXHHFFbhcLlat\nWsXf/vY3X/nZZ5+Ny+ViypQpHDx4kOjoaLp370716tV59tlnueGGG2jXrh39+/enRo0a7Nixg3ff\nfdf36tTvvvuO7t2707dvX84880wiIiJYvHgxe/bsYcCAAX7X5LnnnmPSpEk0a9aMmjVr+p4P3bt3\nL998803AoLX8inOshIQEnnzySf7+97/ToUMHrr32WqpWrcrXX39NRkYGL7/8MhEREUyZMoXBgwdz\n0UUXMWDAAHbv3s3TTz9NkyZNivV2LhHhxRdfJCkpibPOOotBgwZRt25dfv75Z1avXk2VKlWKNa9o\nkQobwl7QAiwB5gJReBPNJjnlXYAtpdlnWS+E0bRIycnJoQ7Bx2IJzmIJFC5x2LRI4fE5Vla+//57\n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\nPOCNwKeAX0i69Bj3Mek4ImJzh74nZmY2SVN6SR34FzBM2lhQNAsYrD+c/4uIvcA/gEp2g5cwCIgu\nHCOAiBgg/R+r2jV/F7AI6I2I7YVTtY9Li1iOUuW4RMSRiNgaERsiYglpo903qXlMWsQxWt1Kvydm\nZtaeKZ1wRsRhYD2woHEsL1ku4NX3gtVO0kzSj2PLxKJq+Yd6kFeP0SmkHdMdHaMcyxnAqVQwTjnB\n+zhwWUQ8XzxX97i0imWM+pWNyyimATO64LsyDZgx2omax8PMzEp6LSyp/xB4QNJ64I/AYtLmgwfq\nDELSD4B+0jL624BbgcPA6hr6fgMpuVU+1CNpHrA7Il4g3TP4XUnPANuA24AXgV/XGUsuy0j35g3m\net8nzQT/9ujW2opjBekxOlcD+yU1Zu32RsTB/LqWcRkvljxmdY3LHaT7I58HTga+CMwHPpqr1DUm\nY8ZR53iYmdkxEhFTvpCe+bgNOEDahHBxB2JYTfphPkD6EV0FnF1T3/OBEdLtBcVyX6HOLcA/gSHS\nj/Y5dcdC2hzyGCmJOAhsBfqAt1QQx2gxDAPXNtWrfFzGi6Xmcbk3t38g9/c4cHkHxmTMOOocDxcX\nFxeXY1Om/HM4zczMzKyzpvQ9nGZmZmbWeU44zczMzKxSTjjNzMzMrFJOOM3MzMysUk44zczMzKxS\nTjjNzMzMrFJOOM3MzMysUk44zczMzKxSTjjNzMzMrFJOOK1ykrZL+lqJ+ldIGpY0vcq4jgVJyyX9\nodNxmJmZdTMnnIakkZzgjYxShiUtbbOLdwM/L1H/d8DpEXGozX5byolt8bNvl/SgpLeXaOY2YFHJ\nfksl4GZmZse7EzsdgHWFtxZefw64FXgnoHxs32gXSTohIobHazwi/l0mmIg4Auwsc00bAjgTOAzM\nAX4GPAxcNKGLI4aAocqiMzMzmwI8w2lExM5GAfamQ7GrcHyoMBv4EUkbJL0CXCRpjqR+STskvSRp\nnaT5xfaLM3qSZuR2rs3X7Ze0WdLCQv1GX9Pz++tzG1flui/la08tXHOSpD5Je3MsyyStlrRqAkOw\nMyJ2RMRa4HbgAkmzc7tnS3pE0j5JeyStbOp3uaR1hferc7lZ0qCknZJ+JEn5/DpgFtCXP+NQPt4j\n6Te5j32S/ibp8nL/STMzs+7khNPKugO4CTgX2AzMJM0IzgcuBJ4E+iXNGqedW4D7gbnAE8AqSTML\n56Op/puAG4HPAr2k2cjvFc4vBT4JfB64FJgNXFnqkyWv5L/TJU0DHgFeB1wCLATOB37ZdE1zrAuB\n04APAdcBNwBfyOcWAbuAb5Fmls/Mx+8BhnM/c4ElwIFJxG9mZtZ1vKRuZQRwc0Q8WTi2PpeGb0u6\nBrgKuK9FW/dExBoASd8BriclrGvHqD8d+EpEDOZr+oCvF87fCCyJiEfz+RuYeMLZmH08A1gMbAO2\nAh8DeoDeiNiV63wZWC/p/Ih4eoz2dkTE4vx6i6THgQXAyojYI2kEeDnPKDfMBu6NiE35/cAEYzcz\nM+t6nuG0sorJJZJOkXSnpE15Ofhl4CxgvI03GxsvImIPcIg0KziW3Y1kM9veqC/pNNIM6J8KbR4B\n/jr+x0HALkn7gOfysWsiIoB3AVsbyWZudwNp5vHcFm1ubHr/v1hbuBO4XdJaSUslnTeB2M3MzI4L\nTjitrP1N738MXEFaIv4gMA/YQpqRbOVw0/ug9fexbP2JCuC9pGXskyPifRExkUS1ldKxRkQf8A5g\nFWmm9y+SrmszDjMzs67ghNPadQlpKbg/LzHvJi0P1yYvTf+HlDgCIOlE4IIJNjEQEQN5x3nRJqAn\nz6A22r2QdE/nWMvpE3EIOKH5YES8EBF3R8QngBWk+z/NzMyOe044rV1bgE9LmivpPcBK0uaXut0F\nLJO0SNIcUsL2eo7e0FPGo8CzwEpJ8yS9n3Rf6mOFey0nYxvQK+l0SW8GkPQTSR+WdJaki0kbn/7e\nRh9mZmZdwwmntesbpHsa1wEPAWs4OlFqTvpGSwLbSQwhPYB9DWlJ+ilgkLQB6eBkG4yIEdLGoYPA\n70kJ6EbgS23GuoR0D+gA8GI+dhJwN2ns+kn3n97UZj9mZmZdQWlvhNnUkh9p9Azw04hY3ul4zMzM\nXsv8WCSbEiT1kJ4F+hRpKX0x6TmXv+pkXGZmZuYldZs6Avgq8GfSw+d7gMsiws+zNDMz6zAvqZuZ\nmZlZpTzDaWZmZmaVcsJpZmZmZpVywmlmZmZmlXLCaWZmZmaVcsJpZmZmZpVywmlmZmZmlXLCaWZm\nZmaVcsJpZmZmZpX6L8ewTW/HQlIhAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x15f21e10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# try fitting a 2nd order polynomial, first with low noise sampling\n",
"\n",
"calculateAndPlotLearningCurves(f, noise=0.1, npoints=50, degree=2)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# so you get a very low error, < 0.1\n",
"\n",
"# what about with higher noise levels?"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scoring mean_squared_error\n",
"degree 2\n",
"noise 0.5\n",
"npoints 50\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApwAAAC3CAYAAAC/v455AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzsnXd809X6x9/nm6STLoYge1QoiFcFUUBAhgIW2ovKVFTA\nAS4UUUBRhoIMGQKCCxQE4YIMZVyGKMpVUX/CdV0KgkABQaClhe6mzfP7I23aNEkXLU3xvH19X8n3\nOetzvsH0yRnPUSKCRqPRaDQajUZTXhgVLUCj0Wg0Go1Gc2WjHU6NRqPRaDQaTbmiHU6NRqPRaDQa\nTbmiHU6NRqPRaDQaTbmiHU6NRqPRaDQaTbmiHU6NRqPRaDQaTbmiHU6NRqPRaDQaTbmiHU6NRqPR\naDQaTbmiHU6NRqPRaDQaTbmiHU6NRqPRaDQaTbniFQ6nUqqjUmqjUupPpZRNKRVdRP67lFI7lFJn\nlVIXlFLfKqW6Xy69Go1Go9FoNJriY65oATkEAj8BS4D1xcjfCdgBvAAkAsOATUqpm0Xk53JTqdFo\nNBWMUqo+UL2idWg0Gk0+4kTkeGEZlIhcLjHFQillA/qIyMYSlvsN+JeITCkfZRqNRlOxKKXqG4Zx\n0Gaz+VW0Fo1Go8nFMIx0m83WrDCn01tGOC8JpZQCgoDzFa1Fo9FoypHqNpvNb8WKFTRv3ryitWg0\nGg0xMTEMHjzYD/vMy5XtcALPY5+WX+Mpg1KqGtADOAakXx5ZGo2mHPADGgLbRSS+grVUCM2bN6dV\nq1YVLUOj0WiKTaV3OJVS9wIvA9EiEldI1h7AR5dHlUajuQzcB6ysaBEajUajKZpK7XAqpQYC7wJ9\nRWRXEdmPAXjDVNSoUaOYO3duhWrIRWtxj9bivTpypm8g5/9pjUaj0Xg/ldbhVEoNAhYDA0RkWzGK\npIN3TEWFhIRUuIZctBb3aC3eqyMfemmMRqPRVBK8wuFUSgUC4YDKMTVWSl0PnBeRE0qpaUBtEXkw\nJ/+9wFJgJPB/SqmaOeXSROTi5VWv0Wg0Go1GoykMrwj8DtwE/BfYCwgwG9gHTM5JrwXUy5f/EcAE\nLARO5bveuEx6NRqNRlNJOXjwIIZhsGaNx32mHsnIyMAwDGbOnFkOyjSaKxevGOEUka8oxPkVkaEF\n7ruUu6hy5IcffqhoCQ60FvdoLa54iw7NlYdhFD32oZRi165ddOrUqUzatEfTK33ZSymv0fwd8QqH\n8+/G0KFDi850mdBa3KO1uOItOjRXHitWrHC6X7ZsGTt37mTFihXkP5ykrDZ8NmvWjLS0NHx8fEpc\n1tfXl7S0NCwWS5lo0Wj+LnjdSUPlhVKqFbB379693rbxQaPRlIB9+/bRunVrgNYisq+i9VxOSvM9\nJiLlNhpXXnU/9dRTLFq0iOzs7GLlT09Px89PH750OdDPWlOQ4n4ne8saTo1Go9GUEUlJSUwcOZLb\nGzWiT7163N6oERNHjiQpKcmr6y4O27dvxzAMNmzYwNixY6lTpw5VqlQhMzOTuLg4Ro0aRcuWLalS\npQqhoaFERUWxf/9+pzrcreEcOHAgNWrU4MSJE/Tu3ZugoCBq1qzJ+PHjncq6W8M5btw4DMPgxIkT\nDB48mNDQUKpWrcrw4cPJzMx0Kp+amsrjjz9OtWrVCA4Opm/fvsTGxhZ7XeicOXNo0aIFgYGBVK1a\nlVtuuYX169c75Tlx4gRDhgzh6quvxt/fn/DwcJ566imn0eLDhw9z9913ExYWRmBgILfeeiufffZZ\nsZ81wPnz53nyySepV68evr6+NG3alDlz5hTZB83fEz2lrtFoNFcQSUlJ3NOuHc/GxDDJZkNh34m5\nfeFC7vniC9bt2UNQUJDX1V1SXn75ZQIDAxk7diwpKSmYTCYOHjzItm3b6Nu3Lw0aNOD06dO8/fbb\ndO7cmf3791O9enWP9SmlsFqt3HHHHXTu3JlZs2axbds2pk+fTtOmTXnwwQcLLauUok+fPjRt2pQZ\nM2bwww8/sHjxYmrXrs3EiRMdeQcNGsTmzZsZNmwYrVu3ZufOnfTp06dYI8ULFizgueee47777uPZ\nZ58lLS2Nn376ie+//567774bsDubbdq0IS0tjeHDh9O0aVOOHz/OmjVrsFqt+Pj48Oeff9KuXTts\nNhvPPPMMISEhvP/++0RGRrJp0yZ69uxZ5LNOTk6mQ4cOnD9/nhEjRlCnTh12797Nc889R1xcHK+9\n9lqR/dH8zRCRv8UFtAJk7969UtFs2LChoiU40Frco7W44i069u7dK9j9nFbiBd8tl/MqzvfYhKee\nkq2GIQIu178NQyaOHFnCJ3556s7Pk08+KYZhuE3btm2bKKWkRYsWYrVandIyMjJc8h86dEh8fHxk\n1qxZDtuBAwdEKSWrV6922AYOHCiGYcjs2bOdyl977bXSsWNHx316eroopWTGjBkO27hx40QpJU89\n9ZRT2cjISKlXr57j/ttvvxWllIwfP94p36BBg8QwDKc63dGzZ09p06ZNoXn69+8vPj4+8ttvv3nM\nM2LECDGZTE7/ji5cuCB169aV5s2bO2yFPevx48dLaGioHD9+3Mk+atQo8fX1lbNnzxaqU3PlUNzv\nZD2lXgGsWrWqoiU40Frco7W44i06NIXzzaZN9LDZ3Kb1tNn4Zu1a2LevVNc3a9cWXvfGjeXZNSeG\nDRuG2ew8SZd/E1B2djbnz58nNDSURo0asW9f8Zb7Pvroo073HTp04MiRI0WWU0oxfPhwJ1vHjh05\ndeoUVqsVgG3btqGU4rHHHnPKV3C62xOhoaEcO3aMn3/+2W16VlYWmzdvpm/fvlx77bUe69m6dSsd\nO3Z0WgccHBzMww8/zMGDB1366+5Zr127lq5duxIQEEB8fLzjuv3228nMzOTrr78usj+avxd6Sr0C\nWL16dUVLcKC1uEdrccVbdGg8IyIEWq14mpxVQMCpU0jr1h7zeKwbCITC67ZaESm/TUr5adiwoYvN\nZrMxa9Ys3nnnHWJjY7HlOMdKKcLDw4usMzQ0lCpVqjjZwsLCSEhIKJam+vXru5QVERITE6lRowax\nsbH4+vpSp04dp3zF0Qbw4osvsnv3bm688UaaNm1Kjx49uO+++7j55psBOHXqFGlpaYU6myLCiRMn\nXKbNIS8KQGxsLI0bN3bY3T3rw4cPc+jQITZs2OCSppTi7NmzxeqT5u+DVzicSqmOwPNAa+BqoI+I\nFPpTWSnVGXuA+GuB48BUEVlWzlI1Go3Ga1FKkWKxILh3DAVIufpq1ObNJa8bSOndGzl92nPdFstl\ni0/p7+/vYpswYQKvvfYaI0aMoEuXLoSFhWEYBo899pjD+SwMk8nk1l6c0ceyKF8U1113Hb///jub\nN29m27ZtrFmzhgULFjBt2jTGjh1bJm24o+Czzu1Pr169eOaZZ9yWiYiIKDc9msqJVzic2H84/wQs\nAdYXkRelVENgM7AIuBe4HVislDolIp8VUlSj0WiuaG6NimL7woX0dONgbTMMOvTrB6UMDXdr376F\n1x0dXap6y4p169YRGRnJokWLnOznz5+nSZMmFaQqjwYNGpCRkcGff/7pNMp56NChYtcRGBjIgAED\nGDBgAFarlV69ejF58mTGjBlD7dq18ff357fffvNYXilFvXr1OHjwoEtaTEyMQ2dhKKVo2LAhqamp\ndO3atdjaNX9vvGINp4hsE5EJIvIpnmds8vMYcERExojIQRFZCKwFRpWrUI1Go/Fynps6lTnNm7PV\nMMgdVxNgq2Ewt3lzRk+Z4pV1lwRPo6gmk8llNHH58uXEx8dfDllF0qNHD0TExSFesGBBsUaGz58/\n73RvsViIiIggOzsbq9WK2WwmKiqKdevWFep0RkZG8p///IeffvrJYbt48SKLFy8mIiLCaTrdk67+\n/fvz5Zdfsnv3bpe0hISEMhvV1Vw5eMsIZ0lpC+wsYNsOzK0ALSVm6NChfPDBBxUtA9BaPKG1eK8O\nTeEEBQWxbs8eZr/0EnM2biTAaiXVYuHW6GjWTZlySWGLyrPukuDJmenduzevv/46jz76KG3atOHn\nn39m9erVbtcgVgTt27enV69eTJ8+nb/++oubbrqJzz//nKNHjwJFH7d522230aRJE9q2bctVV13F\nr7/+yjvvvMPdd9/t2DA1Y8YMvvzyS9q3b8/w4cNp1qwZJ0+eZM2aNfz000/4+Pgwfvx41q5dS7du\n3Rg5ciTBwcG8//77/PXXXyxevNipTU/P+sUXX2TLli3ccccdDBs2jBtuuIGkpCR++eUX1q9fz9mz\nZwkICCiDp6a5UqisDmct4EwB2xkgWCnlKyIZFaCp2HTv3r2iJTjQWtyjtbjiLTo0RRMUFMSkefNg\n3rwy38RTnnXnp7B6PaVNmjSJjIwM1qxZw6pVq2jTpg07duzgiSeecCnjrg5P9borW5z63LF69Wqe\ne+45Vq9ezdq1a+nevTvLly+nZcuWRZ7g89hjj/Gvf/2LOXPmkJycTL169RgzZgwvvviiI0+DBg34\n/vvvefnll/nwww9JSkqibt269O7d23EcZ506dfj2228ZO3Ysb7zxBpmZmdx4441s3bqV22+/vVj9\nqlKlCt988w1Tpkxh3bp1LF26lJCQEJo1a8a0adPcrrHV/M0pLGZSRVyADYguIs9BYGwB251ANuDr\noUwrQGrWrClRUVFOV9u2bV1iDG7fvl2ioqJc4k09/vjjsnjxYpcYVFFRUXLu3Dkn+4QJE2T69OlO\nttjYWImKipKYmBgn+/z58+W5555zsqWkpEhUVJT85z//cbKvXLlShgwZ4qKtf//+uh+6H1dUP1au\nXClRUVHSsmVLadKkiURFRUmnTp10HE4viCesKTv27NkjSilZv359RUvRaEpMceNwet1Z6kopG0Xs\nUldKfQXsFZFn89mGAHNFJMxDGX2WukZzBaDPUtffY5UZd2eRDxo0iPXr13Py5Elq1KhRQco0mtJR\n3O/kyjqlvgf7iGZ+uufYNRqNRqPxSl599VUOHDhAp06dUEqxefNmPv/8c55++mntbGquaLxil7pS\nKlApdb1S6oYcU+Oc+3o56dOUUvljbL6dk2eGUqqZUupxoC8w5zJLLxXedAKD1uIercUVb9Gh0VRm\nOnTowF9//cUrr7zCmDFjiI2NZerUqcyePbuipWk05YpXOJzATcB/gb3Y1wHMBvYBk3PSawH1cjOL\nyDGgF/b4mz9hD4f0kIgU3LnulcycObOiJTjQWtyjtbjiLTo0msrMnXfeyTfffEN8fDzp6ekcPHiQ\ncePGXbaA+RpNReEVU+oi8hWFOL8iMtSNbTf2k4kqHf/6178qWoIDrcU9Wosr3qJDo9FoNJUPbxnh\n/FvhTbHJtBb3aC2ueIsOjUaj0VQ+tMOp0Wg0Go1GoylXtMOp0Wg0Go1GoylXtMNZATz//PMVLcGB\n1uIercUVb9Gh0Wg0msqHdjgrgPr161e0BAdai3u0Fle8RYdGo9FoKh9ed9JQeaFP6NBorgz0SUP6\ne0yj0XgPxf1O1iOcGo1Go9FoNJpyxWscTqXUE0qpo0qpNKXUd0qpNkXkv08p9ZNSKkUpdUoptUQp\nVfVy6dVoNBqN5nIxadIkDMP5T3bDhg0ZNmxYkWWXLl2KYRgcP368zPTExsZiGAYffvhhmdVZUiIj\nIxk+fHiFtV+Q7du3ExQURHx8fEVL8Uq8wuFUSg3AfrrQROBG4Gdgu1Kquof8twLLgPeAFtiPtbwZ\nePeyCL5EDhw4UNESHGgt7tFaXPEWHZormyNHjjB8+HCaNGmCv78/ISEhdOjQgfnz55Oenl7R8ioM\npZTLaUSGYRTrhCJ3ZYvLqlWrmDdvnsd6K4pvvvmGnTt3Mm7cOIctJiaGyZMnl6lj7Y633nqLZcuW\nudh79OhBeHg406ZNK9f2Kyte4XBiP5ryHRH5UEQOACOAVMDTT7e2wFERWSgisSLyLfAOdqfT6xkz\nZkxFS3CgtbhHa3HFW3RoSkZ5rtMv67q3bNnCddddx9q1a4mOjubNN99k+vTpNGjQgDFjxvDMM8+U\naXuVnYMHD/Luu+U7zrJy5Uq3DmeDBg1IS0vj/vvvL9f2PTFr1iy6detGo0aNHLb9+/czefJkjh07\nVq5tL1q0yK3DCTB8+HDeeecdUlJSylVDZaTCHU6llAX7EZWf59rE/i22E2jnodgeoJ5S6s6cOmoC\n/YAt5au2bHjzzTcrWoIDrcU9Wosr3qJDUzRJSUmMHDOSRq0aUe/mejRq1YiRY0aSlJTktXUfO3aM\nQYMG0ahRI2JiYpg7dy4PPfQQjz32GB999BH79+/n2muv9VheRMjIyLgkDZUNi8WCyWSqsPZ9fHwq\nZJTz3LlzbNmyhQEDBjjZRaTCz6S/5557SE9P5+OPP65QHcUlNTX1srVV4Q4nUB0wAWcK2M8AtdwV\nyBnRHAysVkplAqeBBODJctRZZnhTeBmtxT1aiyveokNTOElJSbTr3o6FpxdyLPoYf/b+k2PRx1j4\n10LadW93SY5hedY9Y8YMUlJSWLJkCVdddZVLeuPGjXnqqacc94ZhMHLkSFauXEnLli3x8/Nj+/bt\ngP2P6OjRo6lfvz5+fn5EREQwe/Zslzo/++wzOnbsSFhYGEFBQURERDB+/HinPAsWLKBly5YEBgZS\ntWpV2rRpw7/+9a9C+zJ79mwMw+DEiRMuaS+88AK+vr5cuHABgK+//pr+/fvToEED/Pz8qF+/Ps8+\n+2yxlg+4W8O5f/9+unbtSkBAAPXq1WPq1KnYbDaXshs3bqR3797UqVMHPz8/wsPDmTJlilPeLl26\nsGXLFsd6TcMwaNy4MeB5DecXX3xBx44dqVKlCmFhYfTp08dlOU7uetQ//viDIUOGEBYWRmhoKMOG\nDStWvzdv3kx2djbdunVz2JYtW0b//v0B6Ny5M4ZhYDKZ2L17tyPP1q1b6dSpE1WqVCE4OJjevXuz\nf/9+p7rPnDnD0KFDqVevHn5+ftSuXZs+ffo4pukbNWrE//73P7788kvHM+nataujfI0aNfjHP/7B\np59+WmQ/imorv+7bbruN4OBgQkJCuPnmm1m1apVTno8//pibbrqJgIAAatSowf3338+pU6ec8gwZ\nMoSgoCCOHDlCZGQkwcHBDB482JH+/fff07NnT0JDQwkMDKRz5858++23RfajuHiDw1lilFItgHnA\nJKAV0ANohH1avVAiIyOJjo52utq1a8cnn3zilG/Hjh1ER0e7lH/iiSdYsmSJk23fvn1ER0cTFxfn\nZJ84cSIzZsxwsh0/fpzo6GiX/wEXLFjgElg7NTWV6Ohovv76ayf7qlWrGDp0qIu2AQMG6H7oflxR\n/Vi1ahXR0dFcd911hIeHEx0dzahRo1za1eQx/tXxxITHYAu3Qe5gjwJbExsx4TG8NOUlr6x78+bN\nNG7cmFtuuaXYZT7//HOeffZZBg4cyLx582jYsCEAUVFRzJs3j8jISObOnUtERATPP/88o0ePdpTd\nv38/UVFRWK1WXn31VebMmcM///lPpz+w7733Hk8//TQtW7Zk3rx5vPLKK9x44418//33herq378/\nSinWrFnjkvbxxx/Ts2dPQkJCHPdpaWk8/vjjvPnmm/Ts2ZMFCxbw4IMPFtn/gqN5Z86coXPnzvzy\nyy+8+OKLjBo1iuXLl7udEl+6dClBQUGMHj2a+fPnc9NNNzFhwgReeOEFR56XXnqJG264gerVq/PR\nRx+xYsUK3njjDY96du7cSc+ePYmLi2Py5MmMHj2ab7/9lg4dOjg5Ubm6+/fvT0pKCtOnT2fAgAEs\nW7aMyZMnF9nvPXv2UK1aNerVq+ew3XbbbYwcOdKhe8WKFSxfvpzmzZsDsHz5cnr37k1QUBAzZ85k\nwoQJxMTE0LFjRydtd999N59++ikPPfQQb731Fk8//TTJycmOPPPmzaNu3bo0b97c8UwK/khp3bp1\nsRy1otoC++fUu3dvEhMTefHFF5kxYwY33nij48dVbp4BAwZgsViYPn06jz76KOvXr6djx45cvHjR\n6blnZWXRo0cPatWqxezZs7nnnnsA+w+F2267jeTkZCZNmsS0adO4cOECXbt25ccffyyyL8VCRCr0\nAiyAFYguYF8KbPBQ5kNgTQHbrYANqOmhTCtA9u7dKxqNpvKyd+9eAQRoJRX8/XW5r+J8jzW8saEw\nEWGSm2siUvv62rL31N5SXVf/4+pC627YqmEJP007Fy9eFKWU3HXXXcUuo5QSs9ksBw4ccLJ/8skn\nopSSadOmOdn79esnJpNJjhw5IiIib7zxhhiGIefPn/fYRp8+feS6664rQU/yaN++vbRp08bJ9sMP\nP4hSSj766COHLT093aXs9OnTxWQyyYkTJxy2SZMmiWEYTvkaNmwoQ4cOddw/88wzYhiG/Pjjjw5b\nXFychIaGimEYEhsbW2i7I0aMkCpVqkhmZqbD1rt3b2nUqJFL3mPHjolSSpYtW+aw3XDDDVKrVi1J\nTEx02H755RcxmUwyZMgQp74opeSRRx5xqvPuu++WGjVquLRVkI4dO7o8WxGRtWvXimEY8tVXXznZ\nk5OTJSwsTEaMGOFkP3v2rISGhsrw4cNFRCQxMVGUUjJ79uxC22/ZsqV06dLFY/q0adPEMAw5d+6c\nxzzFaevChQsSHBws7du3l4yMDLd5rFar1KxZU66//nqnPFu2bBGllEyaNMlhGzJkiBiGIePHj3ep\np2nTphIZGelkS09Pl8aNG0uPHj08ahQp/ndyhY9wiogV2As4xsaV/edPN8DTT4QAIKuAzYa9wxW7\ngKMYFBzVqUi0FvdoLa54iw6NZ0QEq8nq+VtQwan0U7R+pzWt3y3h9U5rTmecLrRuq2Et1Uai3FGY\noKCgEpXr3LkzzZo1c7Jt3boVs9nsNP0OMHr0aGw2G1u3bgUgNDQUgA0bNnjUHBoaysmTJ0s1wjNg\nwAD27t3L0aNHHbbVq1fj5+fnNDvg6+vreJ+amkp8fDzt2rXDZrPx3//+t0Rtbt26lbZt2+YG4Qag\nWrVq3HfffS5587ebnJxMfHw8HTp0IDU1tVQRKf766y9+/vlnhg4d6hi9Bbjuuuu44447+Pe//+2U\nXynlEtKoY8eOxMfHk5ycXGhb8fHxhIWFFVvbZ599xoULFxg4cCDx8fGOSynFLbfcwq5duwDw9/fH\nx8eHL7/8ksTExGLXX5BcbQVndfJTnLY+++wzkpOTGTduHD4+Pm7z/Pjjj5w9e5bHH3/cKU9kZCQR\nERFs2eK6tWXEiBFO9z/99BOHDh1i0KBBTs8nKSmJbt26OS1LuBTMZVLLpTMHWKqU2gv8gH3XegD2\nUU6UUtOA2iKSO8ewCXhXKTUC2A7UBuYC34vIX5dZe4m5nIt0i0JrcY/W4oq36NB4RimFJdvi+ae3\nwNW+V7N5+OZS1d97Q29OiwenU8CSbSnVpo3g4GCAEq8BzZ1Cz09sbCy1a9cmMDDQyZ47tRobGwvY\nHcIlS5bwyCOPMG7cOLp168bdd99N3759HX0YO3Ysn3/+OTfffDPh4eF0796de++9l/bt2wNgtVo5\nf/68Uzs1atTAMAz69evHs88+y+rVqx2he9auXUtkZCRVqlRx5D9x4gQvv/wymzZtIiEhwWFXSjnW\neRaX2NhY2rZt62Iv6JSDfUnB+PHj2bVrl8u0a0nbzW0boGnTpi5pzZs3Z8eOHaSlpeHv7++wF1wX\nnuuoJSQkOD0jd5Tkh82hQ4cQEbp06eKSppRy/Pvz8fFhxowZPPfcc9SsWZO2bdvSu3dvHnjgAWrW\nrFns9nK1Ffb/QnHa+uOPPwAK3SwXGxuLUsrtc4+IiOCbb75xspnNZurWretkO3ToEAAPPPCA2zYM\nw+DChQtOPyRKg1c4nCKyJifm5itATeAnoIeInMvJUguoly//MqVUFeAJYBaQiH2X+zgqAcVZo3K5\n0Frco7W44i06NIUTdXsUC48sxNbEdaOI8YdBv579aHV16Y7F7Nujb6F1R9/huq63OAQFBVG7dm1+\n++23EpXL77yUFD8/P3bv3s2uXbvYsmUL27ZtY/Xq1XTr1o0dO3aglCIiIoKDBw+yefNmtm3bxvr1\n61m0aBETJ05k4sSJfPvtt3Tp0gWllGOH9NGjR6lfvz5XX301HTt2ZM2aNYwbN449e/Zw/PhxXn/9\ndYcGm83G7bffTmJiIi+88ALNmjUjMDCQP//8kwcffNDtZp+y4MKFC3Tq1InQ0FCmTJlC48aN8fPz\nY+/evYwbN67c2i2Ipx32RTmT1apVc3LOi8Jms6GUYsWKFW4dR7M5zxV6+umniY6O5pNPPmH79u1M\nmDCBadOmsWvXLq6//vpitZerrXp1t6HEy7StkpJ/ZDuX3M979uzZHtst6gdAcfAKhxNARBYBizyk\nuexkEJGFwMLy1qXRaDSViakvT+WL7l8QIzF2x1ABYncImx9uzpRFU7yy7t69e/Pee+/x/fffl2jj\nUEEaNGjA559/TkpKitMoZ0xMjCM9P126dKFLly7MmjWLadOm8dJLL7Fr1y7HzmN/f3/69etHv379\nyMrK4q677mLq1Km88MILXH/99ezcudOpvlq18oKrDBgwgCeeeIJDhw6xevVqAgMD6d27tyP9119/\n5dChQyxfvtxp2rtgnSXpe+5oVX4KTpF/+eWXJCQk8Omnn3Lrrbc67Lkjavkp7oh17nM9ePCg2/ar\nV69+ST8Q8hMREcH69etd7J60NmnSBBGhRo0aTjvKPdGoUSNGjRrFqFGj+OOPP7j++uuZPXu2Y0d+\nUc/k6NGjVK9enWrVql1SW7m6f/vtN0d0gII0aNAAEeHgwYN07tzZKe3gwYMu/97d0aRJE8D+w684\nz6e0lHoNp1LKrJS6XSk1XCkVlGOrnTPyqNFoNJoKICgoiD079vBk7SdpuKkhdTbXoeGmhjxZ+0n2\n7NhT4nWSl6vuMWPGEBAQwMMPP8zZs2dd0v/44w/mz59fZD2RkZFkZWW5xI2dO3cuhmFw5513Argd\nIbv++uuRfPE8C06Xm81mmjdvbl8ra7USGhpK165dna786+juueceDMNg5cqVrF27lt69ezs5Xbkj\nfAVHFN87fMtqAAAgAElEQVR4441SLU2IjIzku+++c1pzeu7cOVauXOmUz2QyISJO7WZmZrJokeuY\nT2BgYLGm2GvVqsUNN9zAsmXLnKbof/vtN3bs2EGvXr1K3B9PtGvXjoSEBJcA74GBgYiIy5rIHj16\nEBwczGuvvUZWVsHtH3lrLdPS0lxiuTZq1IigoCAne2BgYKFrPPfu3Uu7dp7CiFPstrp3705QUBDT\npk3zGGP2pptu4qqrruLtt9/GarU67Fu3biUmJsbpB44nWrduTZMmTZg1a5bbgPWFrUUtCaUa4VRK\nNQC2AfUBX+AzIAkYm3M/wnNpTVxcXJFD7ZcLrcU9Wov36tAUTVBQEPNmzGMe8xxTvd5ed+PGjVm5\nciUDBw6kefPmPPDAA7Rs2ZLMzEy++eYb1q5d6zZsV0GioqLo0qUL48eP5+jRo1x//fVs376dTZs2\nMWrUKMfJNK+88gq7d++mV69eNGjQgDNnzvDWW29Rv359OnToANj/4NeqVYtbb72VmjVrsn//fhYu\nXEjv3r1d1oi6o0aNGnTp0oU5c+aQnJzsEqg8IiKCJk2aMHr0aE6ePElwcDDr1q0r9YaVMWPGsHz5\ncnr06MHTTz9NQEAA7733Hg0bNuSXX35x5Gvfvj1hYWE88MADjlBCK1ascPtZtm7dmjVr1jB69Gja\ntGlDlSpVPDoxr7/+OpGRkbRt25aHHnqI1NRU3nzzTcLCwpg4cWKp+uSOXr16YTKZ2LlzJw8//LDD\nfsMNN2AymZgxYwaJiYn4+vrSrVs3qlevzltvvcUDDzxAq1atGDhwIDVq1OD48eNs2bLFcXTq77//\nTrdu3ejfvz8tWrTAbDazfv16zp49y6BBg5yeydtvv83UqVMJDw/nqquucqwPPXfuHL/88ovLprWC\nFKetoKAg5s6dyyOPPEKbNm249957CQsL4+effyYtLY0PPvgAs9nMjBkzGDZsGJ06dWLQoEH89ddf\nzJ8/n8aNGxfrdC6lFIsXLyYyMpJrr72WoUOHUqdOHf7880927dpFSEhIseKKFklhW9g9XcAnwHLA\nB7uj2TjH3hk4VJo6y/vCi8IiRUVFVbQEB1qLe7QWV7xFhw6L5B3fY+XF4cOHZfjw4dK4cWPx8/Nz\nhIVZsGCBU9gXwzBk5MiRbutISUmR0aNHS926dcXX11eaNWsmc+bMccqza9cuueuuu6Ru3bri5+cn\ndevWlcGDB8vhw4cded577z3p3Lmz1KhRQ/z9/eWaa66RcePGSVJSUrH7s3jxYjEMQ0JDQ92Gtjlw\n4IB0795dgoOD5aqrrpIRI0bIr7/+KoZhOIUcmjRpkphMJqeyjRo1kmHDhjnZfvvtN+nSpYsEBARI\nvXr15LXXXpP333/fJSzSnj17pH379hIYGCh169aVF154QT777DOXsEIpKSkyePBgqVq1qhiG4QiR\ndOzYMReNIiJffPGFdOzYUQIDAyU0NFT69OnjEroqN8RTfHy8k33p0qUuOj3xz3/+U+644w4X+5Il\nSyQ8PFwsFotLX7766iu58847JSwsTAICAuSaa66RYcOGyb59+0REJD4+Xp566ilp0aKFBAUFSVhY\nmLRr107WrVvn1MaZM2ckKipKQkJCxDAMpxBJb731llSpUkWSk5ML1V/ctkRENm/eLB06dHA807Zt\n28rq1aud8nz88cfSunVr8ff3l+rVq8sDDzwgp06dcsozZMgQCQ4O9qjp559/lr59+zr+vTdq1EgG\nDhwou3btKrQvxf1OVlLE4lx3KKXigfYiclAplQRcLyJHlFINgf0iElB6F7h8UEq1Avbu3buXVq1K\nt2C+rNi3b1+Fa8hFa3GP1uLdOnLCvrQWkX0Vredy4k3fYxpNRfL111/TpUsXDhw44FiD6A20atWK\nrl27MmvWrIqWctko7ndyaddwGtiPoyxIXewjnppC8KY/FFqLe7QWV7xFh0aj0XTo0IHu3bszc+bM\nipbiYPv27Rw+fNgRBkvjTGl3qe8AngEezbmXnM1Ck4F/eyyl0Wg0Go1GUwa4C2pekfTo0cNpw5TG\nmdI6nKOB7Uqp/YAfsBK4BogDBhVWUKPRaDQajUbz96JUU+oichK4HpiK/YSf/2IPun6jiLjGsygG\nSqknlFJHlVJpSqnvlFJtisjvo5SaqpQ6ppRKV0odUUoNKU3bpSXNmsbFjItYs61FZ87HkiVLyklR\nydFa3KO1uOItOjQajUZT+Sixw6mUsiil3gfqichHIjJGRB4XkcUiklYaEUqpAcBsYCJwI/Az9hHU\nwmKwfAx0AYYCTbGPrLpGnC1H0rLSOJZ4jGOJxziddJrkzGSybdlFltu3z3v2OWgt7tFaXPEWHRqN\nRqOpfJR2l/oF4AYROVomIpT6Dvs56E/n3CvgBDBfRFxWBCulemKfxm8sIsUKWFYeuzvPp53ndNJp\nAiwBpGWlISL4mf0I8Q0hwCcAf7N/mca/02g0epc6epe6RqPxIsp7l/onQJ9SlnVCKWUBWmM/Cx0A\nsXvBOwFPofqjgB+BsUqpk0qpg0qp15VSfmWhqaT4mn0J9Qsl1C8UgDMpZziWcIzYxFgS0hLIyHJ/\nQoBGo9FoNBrN34HSbho6BExQSt0K7AWczkISkaLPH8ujOvYQS2cK2M8AzTyUaQx0BNKxO77VgbeA\nqsBDJWj7kig4OqyUwt/ij7/Fn2xbNulZ6fyZ9CcWw0IVnyoE+Qbhb/bHYrJcLokajUaj0Wg0FU5p\nHc6HgETsI5OtC6QJUBKHszQYgA24V0SSAZRSzwIfK6UeFxGPQ4qRkZHcfPPNTrZz584xduxY+vTJ\nG7TdsWMHb775Jhs3bnTK+8gjj3DkxBGOnD1ChpGBylLcdO1NJJ1LYv6786larSoAJsPEW6+/hX+A\nP4+OfJSkzCQS0hM4f/o8U1+YymvTX+OGljdgMuzhTBcsWMDx48d5/fXXHW2lpqYycOBAxowZ4zhq\nDWDVqlXs2LGDDz74wEnbgAEDGDRoULH68cQTT9CqVSseeijPP9+3bx+TJk3i/fffdzrCcOLEiQQE\nBDB27FiH7fjx4zz55JPMnDmTiIgIh133Q/ejLPuxatUqVq1axdGjR0lLS6NFixbFOtf5SicmJqai\nJWg0Gg1Q/O+jUq3hLEtyptRTgXtEZGM++1IgRETuclNmKfaTjprms0UA/wOaisgfbspc8tqnpKQk\n2nVvR0x4DLYmNlCAgHHEIPxgOJs2bKJKUBWP5UWEjOwMHhr0EAuXL8TX5EuIbwiBPoH4mf0qZL1n\ndHS0i9NQUWgt7vEWLd6i42++hrO+YRgHbTZbhSwf0mg0GncYhpFus9maichxT3lKO8LpIGeDT+66\nyxIjIlal1F6gG7AxX53d8DxS+g3QVykVICKpObZm2Ec9T5ZGR3EY/+p4u7MZbsszKrA1sXFYDjNz\n1kxemfyKx/JKKfzMfjw64lGCfYPJyMrgTMoZjFSDAEsAIX4h+Jv98TX7llcXXHjyyScvW1tFobW4\nx1u0eIuOvzMiclwp1Qz7MiKNRqPxCmw2W1xhziZcwginUuoB4HnsAd8BfgdeF5HlpairP7AUGAH8\nAIwC+gIRInJOKTUNqC0iD+bkDwT2A98Bk4AawHvALhEZ4aGNSx7hbNSqEceij9lHNgsiUO/Teny3\n+7sS15tlyyI9K53M7Ex8DB8CfQIJ8g0iwBKA2bjk3wQazRXF33mEU6PRaCorpfJmctZLvgq8iX20\nEaAD8LZSqrqIzC1JfSKyJifm5itATeAnoIeInMvJUguoly9/ilLqDmAB8H9APLAaeLk0/SmmRqwm\nq3tnE0CB1WRFREo8NW42zFTxsU/FZ2ZnkpSZRGJ6Ir4mX4J8g6jiUwV/iz+GKm1QAY1Go9FoNJqK\no7TDZ08Bj4nIh/lsG5VS/8M+4lgihxNARBYBizykDXVj+x3oUdJ2SotSCku2xb4lysMI59nEs8ze\nM5tBLQdRJ7hOqdrxMfngY/JxrPeMT40nLjUOf4u/Pb6nJaDC1ntqNBqNRqPRlIbSDpldDXzrxv5t\nTtoVSdTtURhH3D8y4w+Da264hvf2vccti2/h/g33s/3wdrJsWS55t23eVmRbues9Q/1DCfELwSY2\n/kr+i9jEWE5cPEFieiKZ2ZmX3KdPPvnkkusoK7QW93iLFm/RodFoNJrKR2kdzsNAfzf2AdhjdF6R\nTH15Ks0PNcc4bNhHOsG+S/2wwTW/X8PG+RvZ9+g+Xr/jdRLSEhi2cRi3vHcLM7+ZycmLeXuZPllb\nsj/chrJvKgrzDyPAJ4A0axonL57kWMIxTl08RVJGklvHtjisWrWqVOXKA63FPd6ixVt0aDQajaby\nUdqjLe/BvmZyJ3lrOG/FvrO8v4hsKDOFZURZHQmXlJTES1NeYuPOjWQYGRhWg55dezLmuTEuIZF+\nO/sbH/36Eetj1pOSmUKXhl247x/30a1RtzIJ/p6RlUF6VjrZko2/2Z8g3yACLYF6vafmikZvGtJo\nNJrKx6XsUm+NfTd58xxTDDBbRP5bRtrKlPI4gzg+NZ6/kv8izD+s0Hyp1lQ2HtzIil9W8N+//kvN\nwJoMaDmAe1veS72QeoWWLQ4iQnpWOulZ6Sjspx2F+NnXe/qafPV6T80VhXY4NRqNpvJR4YHfLxfl\n4XCeTzvP6aTTRTqc+fnfuf/x0S/2Uc/kzGRua3Abg/8xmNsb314mo565R2pmZGdgVmYCfQIJ9g0m\nwBKgj9TUXBFoh1Oj0WgqH6Wad1VKRSqlXHaIK6V6KKXuvHRZVy7X1riW17q9xr7h+5jdfTYXMy/y\n8KaHuXnxzUz/ejrHLxQaN7VITIaJQJ9AqvpXxd/iT6o1lRMXT3As8Rink06TnJlMti27jHqj0Wg0\nGo1GUzSlXeg33YNdFZKmyWHUY6MIsAQwoOUANg3axGf3f0ava3qx7OdltFvSjnvX3cuW37dgzbZe\nUjsWk4Ug3yCq+lfFbJhJSE8gNjGWY4nHiEuJI9WaytChLhGnKgytxT3eosVbdGg0Go2m8lFah/Ma\n4KAb+wEgvDQVKqWeUEodVUqlKaW+U0q1KWa5W5VSVqXUZZ9aUzkBOS+kXyjRLvHbut7mdN+iRgum\ndJ3Cvkf3MafHHJIzk3l086O0ea8N0/4zjdjE2EvW6mv2JdQvlFC/UADOpJzhWMIxbrz1Rs6lnONC\n+gVSraml3u1eFnTv3r3C2i6I1uKKt+jQaDQaTeWjtLvU/wLuFZEvCthvB1aKyFUlrG8AsAx4lLyj\nLfsBTUUkrpByIcBe7KGYaoqIx8WZ5bGG0yY2UjJTuJhxkaSMJPtucYs/fma/S6475lwMK39dydqY\ntVzMuEinBp2477r76N6kOz4mnzJQn7fe02rLOSEJhcVkwWJYCPCxbzjKvTcbZr35SOMV6DWcGo1G\nU/korcP5DtAOuEtE/sixhQPrgP8TkYdLWN93wPci8nTOvQJOAPNFZGYh5VZhP8PdBvzzcjucueTu\nEk/KTOJC+gUysjLws/jhZ/a75PBEadY0Nh/azIpfVvDjqR+pHlCdAdcOYFDLQTQKa1RGPbBjExtZ\ntiys2VasNis2sdmdUMOC2WQmwByAn8UPi2FxOKLaCdVcbrTDqdFoNJWP0h5tOQbYBhxQSuVGNK8H\n7AaeK0lFSikL0Bp4LdcmIqKU2ondqfVUbijQCLiPcjxDvTgoZQ9F5G/xJ9QvlJTMFBLSE0hMT8Rs\nmAmwBGA2Sveo/S3+9GvRj34t+nEg7gArf13Jil9WsPD/FtKhfgcG/2MwPZr0KJNRT0MZjqM1cxER\nrDYrWbYsEtITyE7LRqEwG2YsJgv+ZvuIbq4DajFZdAxQjUaj0Wg0TpTKMxCRC0B7oBf2889nA11E\npKuIJJawuuqACThTwH4GqOWugFLqGuwO6n0iYithe+WKj8mHMP8wGoQ0oEFIAwItgXYHNC2BjKwM\nAH7Y80Op6o6oHsErXV5h76N7mddzHpnZmYzYPIKb3r2JqbuncjThaInrLEqLUgofkw8BlgBC/EKo\n6l+VUL9Q/Mx+iAgXMi5wKumUYzPS0YSj/HnxT86nnScpI4mMrAxsxfyIvv766xLrLy+0Fle8RYdG\no9FoKh8lcjiVUu2UUr3BPgopIjuAs9hHNdcppd5VSvmWg878GgzgI2Bi7nQ+UOx53cjISKKjo52u\ndu3auZwTvWPHDqKjo13KP/HEEyxZssTJtm/fPqKjo4mLy1tuajJMzHptFh+99RENQhtQPaA6WbYs\n/nfofzwy+BEOHXQ+AfT9t9/n1ZdedbKlpaYxZMAQF6dw+yfb+WbBN2wYsIEvHviCPhF9WPnrSjpE\ndqDbC9349OCnDuf2q8+/YsiAIS79ePHZF1n14SoWvbHIYfv1p18ZMmAI5+PPO+WdNXUWC+cudNwr\npTh76iyPDX6Ms7FnCfMPI8w/DH+LPx+++yETXpzA6aTTHL9wnKMJR9n/537uuPMOtuzcQlJGkv10\nJFs2q1atctr5PHOmffXEgAEDyvzzAJg4cSIzZsxwsh0/fpzo6GgOHDjgZH/sscd4/vnnnWypqalE\nR0e7OF4F+5FLWfXj1Ved/12UpB8LFiwos37kfj6l7UdpPo9Vq1YRHR3NddddR3h4ONHR0YwaNcql\nXY1Go9F4NyVaw6mU2gp8KSIzcu6vw75pZxn2k4aeB94RkUklqNMCpAL3iMjGfPalQIiI3FUgfwiQ\nAGSR52gaOe+zgO4i8qWbdsptDWdxyczOJCUzhT/j/0T5KMd0u8kwXXLdadY0/n3o33z060d8/+f3\nVPWvSv8W/bn3H/fSJKyJx3KpKakEBAZccvueyLZlk5mdSZYtiyxbFoJgUiYshgUfsw8B5gB8zD5Y\nDAvWDCvBVYLLTUtJSE1NJSCg/J5LSfAWLd6iQ6/h1Gg0mspHSR3O00CUiPyYcz8VuE1EOuTc9wMm\ni0iLEolwv2noOPZNQ68XyKvIO04zlyeALsA9wDERSXPTRoU7nLlk27JJsaZwIf0CSRlJgH2tpq+5\nbAaHD8UfYsWvK1j7v7UkZiTSvl57Bl83mJ7hPfE1+5KclMyM12ew48sdZJmyMGeb6d65O2OfH+ty\nHnx5kG3LdqwLtWZbEQQD+/pRi8lCgCXA8T53XahGk4t2ODUajabyUVKHMx24RkRO5Nx/DWwVkak5\n9w2BX0UkqEQilOoPLAVGkBcWqS8QISLnlFLTgNoi8qCH8hOpwF3qpUVESMtK42LGRS6mXyTTlunY\nhFMWu7/Ts9Lto56/fMR3f35HmF8YfRr1YdfMXRxvfhxbE5t9XFjAOGIQfjCcTRs2XRansyA2sWHN\nznFC3YRpyg03pcM0abTDqdFoNJWPkm6dPoN9Z/gJpZQP0AqYmC89CCjx8TgiskYpVR14BagJ/AT0\nEJFzOVlqYd8Ff0WhlCLAEkCAJYAwvzCSM5NJTE8kIT3BHgvzEqfb/cx+3N38bu5ufjeHzx/mo18/\nYuncpWRGZDqH51dga2LjsBxm5qyZvDL5lUvvXAkxlIGv2Rdf8kZ5c8M0ZdmyiE+L12GaNBqNRqOp\npJR0l/q/gelKqY7ANOxrL/+TL/0fwB/uChaFiCwSkYYi4i8i7XKn7XPShopI10LKTi5sdNPbKLiJ\nA+wnAVULqEaD0AbUC66Hn9mPpIwkEtMTyczOvOQ2w6uGM/G2idSIr+HsbO7Ie2trYmPVv1cxYdcE\n5n8/n5W/rmTHHzvYd3ofxy8cJ9Waesk6CqPgpqncME0BlgBC/UIdO+R9zD7YxEZCegInL5507I4/\nknCE00mnSUhLIDkzmYysDLJt2djE5nSJiMcrF3efUUXhLVq8RYdGo9FoKh8lHeF8GVgPfAUkAw+K\nSH5vaBhOLozGHfXr1/eYZjbMhPiFEOwbTKo11T7dnnGR5MzkS55uFxGyzdnOe/pD8r1XYDVZ2R27\nm/i0eBLSEhCcl1z4m/2pHlDd6aoWUI3qAdWpEVDD/t7fbq/qX7VEI7R16tYpMk9umCYfkw9Y8vqV\nOxJ6IeMC59Psu+zNhhmTMhX7eeXPF1A9gCMJR/LScv7zVM5TG57K5eZ3V65gmdCrQjmXcg5DGfa2\nUGXyWlIK+3er0Wg0Gk1hlPakoRAgWUSyC9ir5tgvfUiujPHGNZzFJT0rneSMZC5kXCAtK80x6lea\nAOu3dLqFk/886T6QlEDdT+vy/e7vAezB3tMSOJd6jrjUOOJT44lLiyMuNY64lDji0nJsqXGcSz1H\nela6U3UKRVX/qoU6pdUCqlEjoAbVA6oTYAkokylxx6aoXTuwmq2Ys8zcftvtPDv6WQKrBJa4voJO\nt8NeyP87nsoUt1xKcgpvzHmDXbt3YTVZsWRb6NyxM0+NeqrQPuQ6q0U5mkopDAwMw/D4ejkcWxEp\n8Weu13BqNBpN5aNUx9/kBH53Zz/vzq65NPzM9mMyQ/1DHUHkL2ZcBCDQEliiXdzdO3dn6ZGl9g1D\nBTD+MOjRpYfj3myYqRFYgxqBNYpVd0pmit0ZTY0jPi3PEc11SuNS4/g97nfOpZ7jfNp5F6fMz+xn\nHzX1r071wOouTmmu05o7euru9KbkpGSi7oricNPD2PrkbYpafmQ5e/rtqbBNUSUhOSmZewfc69KH\nVUdW8X+D/q/QPuQ6s0LOMgFPryJkkYVkec5TFCVxbJVSGMrAUAapyalOURJ8bD5E3x7N1JenEhRU\nov2GGo1Go6kklGqEszJSmUc4C2ITm326Pf0iSZlJZNmyHE5pUaNFyUnJ9P5nbw43PYRcg8OZUYcg\n/Pdr2Pzp5ssWGikhPcHhiOa/ckdSz6WccziuBdePKhRh/mF2h9Q/zxH9+V8/81/Tf5FrXP9dG4cN\nogOjeez5x8q9f05aSziCt3DGQjambkTC3ffh/qr38+orr5ZJ/NZLoVCHNp/Tmt+WlJTEwP4DOdLs\niEuUhOaHmrNnx54inU49wqnRaDSVj9Kepa65BA4cOEBERESpyxvKoIpPFar4VHFMt+fubvc1+eJv\n8S90ur3mRaH5evjFH1LNEJAF/0iD8/Uv348Pk2FyOIm5HP79MOGtwt3mT7WmEp8a7zq9nxJHXI7t\ncPwhDv7wO3K/+37Ymtj4ZPknfHL1J27TnTgHFG9gt+z5DHjAvRZbExvLli9jWdVlmJQJX7MvPiYf\n/Ex++Jjta1t9Tb6O19x0H5OPPQqAyX7l5vUz+dnTzT55aTl585fxMflw5tgZwpuFO+XLzWNSxXN+\nZ8ybYXc2w/ONsOdESYiRGF6a8hLzZswrqyep0Wg0Gi9BO5wVwJgxY9i4cWPRGYtB7shmiF8IKdYU\nEtMSuZB+AUMZBFgCXKbb33llBi8ePsKdNiAdooFcJf8+fIR3X53JszPLICySSNFXgXxTXpjE0g8W\nueaz2Qiw2QiwWagntcCvJvjYINgG2dlgy3m1ZtGMaJJVuntNCvyVD+vbzEIZBhgKVO6rcprgn/TS\nQiZNeaLobhayVtN9/iLSRei3/GnSVL5l0J8B9+b1wdewMPXG0WRKFpk2Kxlitb/mXJliJcOWmWez\nZpCUnkK8LZOM7Ex7Wrb9fe5rRnYGmdmZZDsvy3ZmZT4dBbAYFifn1pMD/N2W77Dd67qcA+xO56ef\nfqodTo1Go7kC8RqHUyn1BPYz2WsBPwNPicj/ech7F/AYcAPgC/wPmJRztrvX8+abb5Z5nRaThVBT\nqGN3e+4pRsmZyY6g6QD7tu5gli3vD35+JXfabMxesZrgzExUdrbDmbO/txW4z3P0lOO9DWwF720o\nm81xr2zZYBN7eRF7XhHItvG2NZOarTrZ8+ZcSiSvLZvk1ZVbbwGywrB7dR42Rcn5THr2Gun2GYpS\nkOOINkdRr9dI+70y7PXlvBcjL1+uwyq5+XLTVI4tx5ktOp/9PYaBJGQ69yHSuQ/qfBYjVhxAzCYw\nmxGz2f5qMoE5IO/ebAKTKcduRixm51c/M2KxgMVit1nMWE0GGSbIMEGmCdJN2WQYQroJTraMI/Sq\nEDLESoZkkSlZzo5ttv29/T6DjGwrmbY8xzY9OwOrynT/2WDv7/mUuFJtJNJoNBqNd+MVDqdSagAw\nG3iUvJOGtiulmopInJsinbCHX3oBSMQejmmTUupmEfn5MskuNeUZXiZ3uj3QEki6fzpJmUlcSL/A\n+dTz+Jh8CEzPcPp7n1+JAgLT0vDZ/Q2YjDxny8jvZOVznPI5SnanxgSGBZvJAMNkTzMZ9jRTTl1m\nk72sye4MOcoaBjVMBqkqX/7c8ionv5GbNy89vw4xFLVeeYXjv1uxNXPzbH6HWtkWzs+agBIco6dI\nPkc2xxZiE5JsNhC7o+spn8MJFpvdSczvKOek2+uwoRzvxWM+yc7m6l8NYn+35fUh1LkPV6eB+X8x\nGDmjuspqhawsVFaW/T4rC2XNstuyCxmxLAW5n7Pkd3TNZocNi6WAI2yyO7U591XjbGQX8oPAmpiu\nnU2NRqO5AvEKhxO7g/mOiHwIoJQaAfTC7kjOLJhZREYVMI1XSv0TiMI+Ovq3RymFv8Uff4s/YZZg\n0jd/ivHOO6SfPVfYACBJV9ci7otNzlPeua+573NHFgu+Fpa34Oa0gvU7vRenF3KDsudsPLGbbM7V\n5Njr+IcSuOkcMYCtKXmbUn6H5psgNDCUhA43ObfpcHDyv8/3hJSy1+/00NylO9ucu+shPf9Ufo7p\n6h4/EbDprMc+hITU4Pjqd/J2ghf4NJ3sNhsqy4bKysLIsjuhRla2/dWaDVar3XHNtVvz8uV3YLFa\n7a9ZWShrds5rPkc318nNny8rC6zZqFxbZiZXpylifxePPwiutvnpEU6NRqO5Aqlwh1MpZQFaA6/l\n2kRElFI7gXbFrENhP1ZTh2XKz6lT8O67WJYswXLyJBIRwS03tWLbvp+408109FbD4MZed5AZFODY\nVQyucSML2vPfe07LdU7z1SKCEnsepZR9lC8nzek1x+5wBSXHqco5bz1/Wqs7u3HbstXsXi9sDACr\nH7kidVkAABRUSURBVFjSIToVOmYqvu7bDWpela8z+fpmsx+daXeY82z2+u0Or1Iqb3Q0Xzo5fbH3\nI9+zzVd/bsggZ+db8vok9l607dyR9qvXe+zDt71vxSc9C8l5vq7P3N1nBBggPgb4GIiYnT+fgp+1\nw99Tzh+Jwy4e7M5OsMOvzrm/OnoIAYX8IKhetZp2NjUajeYKpMIdTqA6YMJ+Tnt+zgBuxkHc8jwQ\nCKwpQ13lxowZMxg7dmz5VG6zwdat8Pbb9lcfH+jRA2bPRt1yC+N8fLjnjjuQmBjutNmYCYzB7mzO\naNqEN8aNxJptzecw5P3xz31vYA8KbpgMxz2QFyw8Nx6jctxhGPY8BevNfz931lyefe5Zt2lF3ee+\nn/zGIvr/3y+MijnAGwl5jt9Ww2Bui+asnfc2QUFBLqOC+VFKld1nVOhIrvv0SW+24J5fYhh1wN6H\nGcBYYJthMLd5BOsWvOsSOsid81/W93PnzueZUU+5pLsr4zguNPe/nPu20ZG0X/yhW2e6U6bi12F9\nivdcNRqNRlOp8AaH85JQSt2L/cjNaA/rPb2O1NRyOJM8ZzSTDz6A48fhmmvg+eehXz+oUweCg8HP\njyClWLdnD7Nfeom5GzdyPD6Oz6pVo11UFBtemUxwcDBQtLNXHtgybQT5Xlrg77CQMNbv+c7RvwCr\nlVSLhVujo1k/ZUqxA4uX2WeUb+q8uARVq8a67+x9mLNxI8fj4/m8WjVujY5mnYc+uFkIUOZk2xTB\nwZcWK2rS7AXc8+2PjIqJcfpBsC3nB8G6KVMuVaZGo9FovBHHSEQFXdhPxLZidxjz25cCG4ooOxD7\nme49i9FOK0Bq1qwpUVFRTlfbtm1lw4YNkp/t27dLVFSUFOTxxx+XxYsXO9n27t0rUVFRcu7cOSf7\nhAkTZPr06U622NhYiYqKkpiYGCf7/Pnz5bnnnnOypaSkSFRUlPznP/9xsq9cuVKGDBkikpUlsnmz\nSHS0iNks/Q1DNtx0k8jy5SKHDomcPy/bN28utB82m63i+1GA/v37l9nnkb9/lbUfZ8+edbJX1n7k\n/ru6ePGiTBw5UhqFhEjz4GC5vWFDmThypFy8eNGlHytXrpSoqChp2bKlNGnSRKKioqRTp072VQPQ\nSv6/vfuPs6qu8zj+emOjCAImGFiZSK5W6vqr3EYrKUsR15tmG2atqZtmYilmtS4+hCw0M8sfiW4r\noW7Kro/NTFwNzK1Q81eiPqygzRgVU1CyFWRARuazf3zP5J2ZO8MMM+fcM8P7+Xich9xzzj3nfb+M\nzsfv93y/t87//fLmzZs3bz3bSvFNQ5IeAB6MiDOz1wKeAa6IiEu6eM8ngWuBKRFxew/uMWi+aYhn\nn4U5c1Jv5tNPw4QJ8LGPpe0tb4Htt4fhw9PMbrMSi/B3qZuZbQnKMqT+HeA6SY/w+rJIw0i9nEi6\nCHhzRHwme318duyLwMOSxmbXWRcRq4uNXpCWFli4MA2b33lnGqL9yEdg5kx473th1Kg0bD5sWK+G\nb83qyROEzMy2DKUoOCPiZkljgAuAscBjwOER8WJ2yjhg56q3nEKaaHRVtrW5nrSUUqmtWrWKMWPG\nbPrE1lZYvhyuuw6uvx6ammDXXeGss6BSgXHjUm/mdtvB0KH5ZimAs9RWlixlyWFmZgNP11+4XbCI\nmB0R4yNi24hojIhfVx07KSI+VPX6gxGxVY2t9MUmwMkndxMzAtatg9tvh2OOSZN/Zs2CPfdMhedt\nt8Hpp8Nee8H48TBmzGYXm5vMUjBnqa0sWcqSw8zMBp5S9HBuaWbOnNl554YNaab53Lnwwx/CsmWp\noPzSl+DII2H06DRkPnJkej5zSP/8v0LNLHXiLLWVJUtZcpiZ2cBTiklDRSjlpKGNG6G5Ge6+O/Ve\n3nln6uE87DCYMgX23Tf1XrYVmkOH+vlM2+J50pCZ2cDjHs6itQ2ZP/cc3HADzJsHTz4Jb3sbnH02\nHHVUKi633TY9nzliRFq83czMzGyAcsFZlFdfhbVr4Re/SIXmggXw2mupN/P882G//dIw+fDh8MY3\nelkjMzMzGzRKM2loUGppgdWrYcmSNPGnsRGOPZY5ixbBmWfCPffAt74FBx6YntHcZZfU0zlyZGHF\n5pw5cwq5T084S21lyVKWHGZmNvC44OyDms+/trbCK6/AihVpRvmJJ8IBB8CFF6YF2m+4gcVHHAGf\n/nSaYT52bCo0d9op9WoW/Izm4sXleQTOWWorS5ay5DAzs4HHk4Z6ac2aNXx7+nTumz+f4S0trG1o\n4OCjjuKc885jxJAh8Kc/wS23wM03w9Kl8OY3w/HHwyc+kZ7H3LgxLc7eNmze0NB/H9JsC+BJQ2Zm\nA09pnuGUNBU4h7TI++PAFyLi4W7OnwhcCuxJ+hrMWRFxfZ4Z16xZw7GNjZy9ZAkzW1sR6QudF1x1\nFcfeeis/2n9/Rtx1F6xfD4ceCueeCwcdlJ7fHDIkLdA+alS/LmtkZmZmVnalKDglTSEVj6fy+ldb\nLpC0e0SsqnH+eOB2YDZwPPBh4FpJz0XEXXnl/Pb06Zy9ZAmTWltfzwJMam0lli/n0lWrmPn5z8Nx\nx8EOO6TZ6K2taejcyxqZmZnZFqos3WzTgH+NiBsiYilwGtBM119T+XlgWUR8JSJ+HxFXAf+VXSc3\n982fz+FVxWa1ScB9o0fDqaemJY0gPZc5fnx6TnPbbV1smpmZ2Rap7gWnpAbgAODutn2RHiz9GdDY\nxdvemx2vtqCb8/ssIhje0kJXJaOAYRs2ENtsk2aajx+fZp7XWEOzUqnkFbPXnKU2Z+msLDnMzGzg\nKcOQ+hhgK2Blh/0rgT26eM+4Ls4fKWmbiHi1fyOCJNY2NBBQs+gMYO3QoWiXXTbZk3nGGWf0d7zN\n5iy1OUtnZclhZmYDT917OAeSg486igVdTPb56ZAhvO/oo3s0bH7YYYf1d7TN5iy1OUtnZclhZmYD\nTxkKzlXARmBsh/1jgRVdvGdFF+ev3lTv5uTJk6lUKu22xsZGbr311nbnLVy4sNMQ4jmzZnHKqFGc\nJdG2mFQAV0qcMHw4J05r/wjpjBkzuPjii9vte+aZZ6hUKixdurTd/iuvvJIvf/nL7fY1NzdTqVS4\n99572+2fN28eJ510UqfPNmXKlB59DoCpU6d2Wsh78eLFVCoVVq1qP0/Ln8Ofo16fY968eVQqFfbe\ne2922203KpUK06bl+qi2mZnloBTrcEp6AHgwIs7MXou01NEVEXFJjfO/CRwREftU7bsJ2D4iJndx\nj35bh/PS887jvttuY1hLC80NDRxcqfClb3yDESNGbPZ1zaxnvA6nmdnAU4YeToDvAKdIOkHSO4Br\ngGHAdQCSLpJUvcbmNcAESRdL2kPS6cDHs+vkasSIEcy8/HLuamri1uXLuaupiZmXX96rYrNjb1E9\nOUttztJZWXKYmdnAU4qCMyJuJi36fgHwKPC3wOER8WJ2yjhg56rznwKOJK2/+RhpOaR/ioiOM9dz\npc1c5qjjMGI9OUttztJZWXKYmdnAU4ZZ6gBExGzSQu61jnV6sCwiFpGWUxpwdtxxx3pH+Ctnqc1Z\nOitLDjMzG3hK0cNpZmZmZoOXC04zMzMzy5ULTjMzMzPLVWme4SzAUIAlS5bUOwcPPfQQixeXYzUX\nZ6nNWcqbo+rf4aH1zGFmZj1XinU4iyDpeODGeucws37zqYi4qd4hzMxs07akgnM0cDjwFLC+vmnM\nrA+GAuOBBRHx5zpnMTOzHthiCk4zMzMzqw9PGjIzMzOzXLngNDMzM7NcueA0MzMzs1y54DQzMzOz\nXG0RBaekqZKaJK2T9ICk99QhwwxJrR223xV07/dLuk3Sn7L7Vmqcc4Gk5yQ1S7pL0m71yCJpbo12\nuiOHHOdKekjSakkrJf1Y0u41zsu9XXqSpcB2OU3S45JezrZfSZrU4Zwi2qTbHEW1h5mZ9Y9BX3BK\nmgJcCswA9gMeBxZIGlOHOL8BxgLjsu19Bd13OPAYcDrQaVkCSV8FzgBOBQ4E1pLaaOuis2TupH07\nfTKHHO8HrgT+Dvgw0AAslLRt2wkFtssms2SKaJflwFeB/YEDgP8BfiLpnVBom3SbI1NEe5iZWT8Y\n9MsiSXoAeDAizsxei/TL7IqI+FaBOWYAH42I/Yu6Zxc5WoGjI+K2qn3PAZdExHez1yOBlcBnIuLm\ngrPMBUZFxMfyum8XWcYALwAfiIh7s331apdaWerSLtm9/wycExFz69UmNXLUrT3MzKz3BnUPp6QG\nUu/I3W37IlXYPwMa6xDpb7Kh5D9K+qGkneuQoR1Ju5J6h6rbaDXwIPVpI4CJ2dDyUkmzJe1QwD23\nJ/W4vgR1b5d2WaoU2i6Shkg6DhgG/KpebdIxR9WhevycmJnZZhjs36U+BtiK1ANTbSWwR8FZHgBO\nBH4P7ATMBBZJ2isi1hacpdo4UnFTq43GFR+HO4EfAU3A24GLgDskNUZO3fFZr/dlwL0R0fZcbV3a\npYssUGC7SNoLuJ/0jT5rgGMi4veSGimwTbrKkR0u/OfEzMw232AvOEsjIhZUvfyNpIeAp4FPAHPr\nk6p8OgzL/lbSE8AfgYnAz3O67WzgXcDBOV2/N2pmKbhdlgL7AKOAjwM3SPpAP99js3NExNI6/ZyY\nmdlmGtRD6sAqYCNpYkG1scCK4uO8LiJeBv4XyGU2eC+sAEQJ2wggIppIf495zZr/HjAZmBgRz1cd\nKrxdusnSSZ7tEhGvRcSyiHg0IqaTJtqdScFt0k2OWufm+nNiZmZ9M6gLzohoAR4BDm3blw1ZHkr7\nZ8EKJ2k70i/HbguLvGW/qFfQvo1GkmZM17WNsixvBUaTQztlBd5HgQ9GxDPVx4pul+6ydHF+bu1S\nwxBgmxL8rAwBtql1oOD2MDOzXtoShtS/A1wn6RHgIWAaafLBdUWGkHQJMJ80jP4W4GtACzCvgHsP\nJxW3ynZNkLQP8FJELCc9M3iepCeBp4CvA88CPykyS7bNID2btyI772JST/CCzlfrU47ZpGV0KsBa\nSW29di9HxPrsz4W0y6ayZG1WVLtcSHo+8hlgBPAp4BDgsOyUotqkyxxFtoeZmfWTiBj0G2nNx6eA\ndaRJCO+uQ4Z5pF/M60i/RG8Cdi3o3ocAraTHC6q3H1SdMxN4Dmgm/dLeregspMkhPyUVEeuBZcDV\nwI455KiVYSNwQofzcm+XTWUpuF2uza6/LrvfQuBDdWiTLnMU2R7evHnz5q1/tkG/DqeZmZmZ1deg\nfobTzMzMzOrPBaeZmZmZ5coFp5mZmZnlygWnmZmZmeXKBaeZmZmZ5coFp5mZmZnlygWnmZmZmeXK\nBaeZmZmZ5coFp5mZmZnlygWn5U7S85JO7cX5h0vaKGnrPHP1B0kXSfpVvXOYmZmVmQtOQ1JrVuC1\n1tg2Sjq/j7fYC7i+F+ffDewUERv6eN9uZYVt9Wd/XtJ/SnpbLy7zdWByL+/bqwLczMxsoHtDvQNY\nKYyr+vNxwNeA3QFl+16p9SZJW0XExk1dPCL+3JswEfEa8EJv3tMHAewCtAB7AHOAHwMH9OjNEc1A\nc27pzMzMBgH3cBoR8ULbBrycdsWLVfubq3oDPyLpUUmvAgdI2kPSfEkrJa2WdL+kQ6qvX92jJ2mb\n7DonZO9bK2mppElV57fda+vs9eeyaxyZnbs6e+/oqvc0SLpa0stZlhmS5km6qQdN8EJErIyIRcAs\nYF9JO2fX3VXS7ZJekfQXSTd2uO9Fku6vej0v286VtELSC5K+K0nZ8fuBscDV2WdszvZPkPTf2T1e\nkfS4pA/17m/SzMysnFxwWm9dCJwFvBNYCmxH6hE8BNgf+CUwX9LYTVxnJjAX2Bv4OXCTpO2qjkeH\n87cHpgJTgImk3shvVh0/HzgG+CTwAWBn4IhefbLk1eyfW0saAtwODAUOAiYBewL/3uE9HbNOAt4E\nvB/4LHAacHx2bDLwIvAVUs/yLtn+7wMbs/vsDUwH1m1GfjMzs9LxkLr1RgDnRsQvq/Y9km1t/lnS\nscCRwA+6udb3I+IWAEn/AnyOVLAu6uL8rYGTI2JF9p6rgS9UHZ8KTI+IO7Ljp9HzgrOt9/GtwDTg\nKWAZ8PfABGBiRLyYnXMS8IikPSPit11cb2VETMv+/AdJC4FDgRsj4i+SWoE1WY9ym52BayNiSfa6\nqYfZzczMSs89nNZb1cUlkkZKukzSkmw4eA0wHtjUxJsn2v4QEX8BNpB6BbvyUluxmXm+7XxJbyL1\ngD5cdc3XgMc2/XEQ8KKkV4Cns33HRkQA7wCWtRWb2XUfJfU8vrObaz7R4fVfs3bjMmCWpEWSzpf0\nrh5kNzMzGxBccFpvre3w+grgcNIQ8fuAfYA/kHoku9PS4XXQ/c9jb8/vqQDeQxrGHhERB0ZETwrV\n7vQ6a0RcDbwduInU07tY0mf7mMPMzKwUXHBaXx1EGgqenw0xv0QaHi5MNjT9f6TCEQBJbwD27eEl\nmiKiKZtxXm0JMCHrQW277v6kZzq7Gk7viQ3AVh13RsTyiLgmIo4GZpOe/zQzMxvwXHBaX/0B+AdJ\ne0vaD7iRNPmlaN8DZkiaLGkPUsE2jM4TenrjDuCPwI2S9pHUSHou9adVz1pujqeAiZJ2krQDgKQr\nJX1Y0nhJ7yZNfPpdH+5hZmZWGi44ra++SHqm8X7gR8AtdC6UOhZ9tYrAvhSGkBZgv4U0JH0PsII0\nAWn95l4wIlpJE4fWA/eSCtAngH/sY9bppGdAm4Bns30NwDWktptPev70rD7ex8zMrBSU5kaYDS7Z\nkkZPAv8WERfVO4+ZmdmWzMsi2aAgaQJpLdB7SEPp00jrXP5HPXOZmZmZh9Rt8AjgFODXpMXnJwAf\njAivZ2lmZlZnHlI3MzMzs1y5h9PMzMzMcuWC08zMzMxy5YLTzMzMzHLlgtPMzMzMcuWC08zMzMxy\n5YLTzMzMzHLlgtPMzMzMcuWC08zMzMxy9f8RrItBkOHF3wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x15d4fcc0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"calculateAndPlotLearningCurves(f, noise=0.5, npoints=50, degree=2)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# so the curves converge at a higher error, ~0.25\n",
"\n",
"# what about different degree polynomials?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### polynomial degree 1"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scoring mean_squared_error\n",
"degree 1\n",
"noise 0.5\n",
"npoints 50\n"
]
},
{
"data": {
"image/png": "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\ntZ2EhATy8vK88sbOmDEDwzC46aabAHz2kLVt2xYplM+z6HC51WolPj7enCtrtxMVFUWPHj08jsLz\n6G699VbYCzjSAAAgAElEQVQMw+CDDz5g2bJlJCYmepiu/B6+oj2Kr732WoWmJiQkJPD99997zDk9\nefIkH3zwgUc5i8WCiHhc12azMWeOd59PWFhYmYbY69SpwxVXXMGCBQs8huh/+eUXNmzYwM0331zu\n+ymOTp06cfr0aa8E72FhYYiI15zI3r17ExkZyUsvvUReXtHlHwVzLbOzs71yuTZp0oSIiAiPeFhY\nWIlzPLds2UKnTsWlEafM1+rVqxcRERFMnjy52ByzV111FZdccglvvfUWdrvdHV+7di0pKSkef+AU\nR/v27WnWrBnTpk3zmbC+pLmo5aFCPZxKqUbAOqAhEAR8BqQDY12fRxRfW5OamlpqV/uFQmvxjdbi\nvzo0pRMREcHMKTOZyUz3UK+/t920aVM++OADBg0aRHx8PHfddRetW7fGZrPx7bffsmzZMp9pu4qS\nlJRE9+7dGT9+PPv376dt27asX7+eVatWMWrUKPfONM899xxff/01N998M40aNeL48eO8+eabNGzY\nkC5dugDmP/h16tTh2muvpXbt2uzYsYPZs2eTmJjoNUfUF7GxsXTv3p1XX32VjIwMr0TlcXFxNGvW\njNGjR/Pbb78RGRnJ8uXLK7xgZcyYMSxcuJDevXvz6KOPEhoayjvvvEPjxo356aef3OU6d+5MdHQ0\nd911lzuV0KJFi3z+LNu3b8/SpUsZPXo0HTp0IDw8vFgT88orr5CQkEDHjh255557yMrK4o033iA6\nOpoJEyZU6J58cfPNN2OxWNi4cSP33nuvO37FFVdgsViYMmUKZ86cISgoiJ49exITE8Obb77JXXfd\nRbt27Rg0aBCxsbEcOnSINWvWuLdO/fXXX+nZsycDBgygVatWWK1WVqxYwYkTJxg8eLDHM3nrrbd4\n8cUXad68OZdccol7fujJkyf56aefvBatFaUs14qIiGDGjBncd999dOjQgdtvv53o6Gi2b99OdnY2\n//znP7FarUyZMoVhw4Zx3XXXMXjwYI4dO8brr79O06ZNy7Q7l1KKuXPnkpCQwOWXX87QoUO59NJL\nOXLkCJs2baJGjRplyitaKiUtYS/uAD4BFgKBmEazqSveDdhdkTYr+8CP0iIlJSVVtQQ3WotvtBZv\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xa2f0dd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"calculateAndPlotLearningCurves(f, noise=0.5, npoints=50, degree=1)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# the curves converge at a higher error ~0.4, indicating higher bias - \n",
"# the model is not complex enough to model the data, so makes more errors."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### polynomial degree 4"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scoring mean_squared_error\n",
"degree 4\n",
"noise 0.5\n",
"npoints 50\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x81a48d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# what happens with degree=4?\n",
"\n",
"calculateAndPlotLearningCurves(f, noise=0.5, npoints=50, degree=4)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# the curves take longer to converge, at about the same error of ~0.25.\n",
"\n",
"# this indicates that you're getting more towards a regime of \n",
"# high variance, which is indicated by the larger gap - \n",
"# ie the model is starting to get more complex and starting to overfit to the training data."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# q. what does it mean when the errors converge quickly to a low error, as with degree=2?\n",
"# that you're in a regime with low bias and low variance, which is good.\n",
"\n",
"# q. why would the training score and test score be the same as you add more training points?\n",
"# it means that the training distribution and test distribution are becoming more similar?\n",
"\n",
"# q. why would the training and test scores be different with a higher degree polynomial?\n",
"# because the model fits to the specific training data, and the test data is different (overfitting).\n",
"\n",
"# q. why is the training error so low (~0) for a low number of training points?\n",
"# because e.g. for degree=2, we can fit up to 3 points perfectly, hence training error = 0 for low ntrainpoints.\n",
"# as number of training points increases, it gets harder to fit them perfectly, so error increases.\n",
"\n",
"# q. what is the relation between the value of `noise` and the converging mse score?\n",
"# as you increase noise, the error increases.\n",
"# but what's the precise functional relationship between them?"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"## Complexity Curves"
]
},
{
"cell_type": "code",
"execution_count": 438,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# now want to see how the model works with increasing complexity.\n",
"\n",
"# we'll basically be plotting the values of the learning curves at the end of the plots.\n",
"# so expect that for low complexity, the curves will be the same, with low error.\n",
"# and as you increase the complexity, the curves will have more error, and slowly diverge.\n",
"\n",
"# as complexity gets too high though, the curves will diverge more - \n",
"# the training error will head towards zero, while the test error will increase.\n",
"# this gap indicates a regime of high variance - the model is getting too complex and\n",
"# is overfitting to the training data (hence the lower training error). \n",
"# but it performs worse with the test data, hence the test error will start increasing.\n",
"\n",
"# in order to see the effect more easily, we'll reduce the number of sample points."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# define some fns\n",
"\n",
"from sklearn.learning_curve import validation_curve # v0.16\n",
"#from sklearn.model_selection import validation_curve # v0.18\n",
"\n",
"def plotComplexityCurves(degrees, trainScores, testScores):\n",
" \"plot training and test scores against complexity (polynomial degrees)\"\n",
" \n",
" # validation_curve runs each case 3 times (the default for the cv parameter), \n",
" # so need to take average of them for plotting\n",
" trainScoresMean = np.mean(trainScores,axis=1)\n",
" testScoresMean = np.mean(testScores,axis=1)\n",
" trainScoresStd = np.std(trainScores,axis=1)\n",
" testScoresStd = np.std(testScores,axis=1)\n",
"\n",
" # make the plot\n",
" plt.figure(figsize=figsize)\n",
"\n",
" plt.plot(degrees, trainScoresMean, 'o-', color=\"r\", label=\"Training score\")\n",
" plt.plot(degrees, testScoresMean, 'o-', color=\"g\", label=\"Cross-validation (test) score\")\n",
"\n",
" plt.fill_between(degrees, trainScoresMean - trainScoresStd,\n",
" trainScoresMean + trainScoresStd, alpha=0.1,\n",
" color=\"r\")\n",
" plt.fill_between(degrees, testScoresMean - testScoresStd,\n",
" testScoresMean + testScoresStd, alpha=0.1, color=\"g\")\n",
" \n",
" if np.min(testScores) < 0: # r2 scores can be negative\n",
" plt.ylim(-1,1)\n",
" else:\n",
" plt.ylim(0,1)\n",
" plt.ylabel(\"Score\")\n",
" plt.xlabel(\"Polynomial Degree\")\n",
" plt.legend(bbox_to_anchor=(2.5, 1.1))\n",
" plt.grid()\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def calculateAndPlotComplexityCurves(f, noise=0.0, npoints=6, maxDegree=8, scoring='mean_squared_error'):\n",
" \"calculate complexity curves by sampling from the given function and fitting polynomials to the sample data\"\n",
" \n",
" # sample some data\n",
" X, Y = getSample(f, noise=noise, npoints=npoints)\n",
"\n",
" # create a polynomial model\n",
" # note: a Pipeline lets you chain multiple estimators.\n",
" # make_pipeline is a convenience function for Pipeline - \n",
" # see http://scikit-learn.org/stable/modules/pipeline.html#pipeline\n",
" poly = make_pipeline(PolynomialFeatures(), Ridge())\n",
"\n",
" # create a validation curve\n",
" # see http://scikit-learn.org/0.17/modules/generated/sklearn.learning_curve.validation_curve.html\n",
" # note: to set parameter values on a pipeline, need to prefix the name with the step name and __.\n",
" # see http://scikit-learn.org/stable/modules/pipeline.html#pipeline\n",
" #degrees = [0,1,2,3,4,5,6,7,8]\n",
" degrees = range(maxDegree+1)\n",
" #scoring = 'r2' # this is the default\n",
" #scoring = 'mean_squared_error'\n",
" trainScores, testScores = validation_curve(poly, X, Y, \"polynomialfeatures__degree\", degrees, scoring=scoring)\n",
" if scoring=='mean_squared_error':\n",
" trainScores = -trainScores\n",
" testScores = -testScores\n",
" print 'scoring',scoring\n",
" \n",
" # plot them\n",
" plotComplexityCurves(degrees, trainScores, testScores)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAC3CAYAAADAQl7NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3Xl4VOXd//H3N4EaFmWTzYIgCYhtKVVxQQUX1ED0mapo\neaAogo9WxY36g7rUglsFbN1Aqk+Lgk81VKVaWoUgbi1VawWtGzsqdS8JajUgkHx/f8wwzWQmK5k5\nJ8PndV3nuph77jPnc26yfHOW+5i7IyIiIhKUnKADiIiIyJ5NxYiIiIgESsWIiIiIBErFiIiIiARK\nxYiIiIgESsWIiIiIBErFiIiIiARKxYiIiIgESsWIiIiIBErFiIiIiAQqFMWImQ0xs0Vm9oGZVZpZ\npI7+p5vZUjP71Mw+N7MXzOzkTOUVERGRptMi6AAxbYDXgLnA7+vRfyiwFLga+AyYAPzRzA5393+k\nLaWISB3MbH9g36BziITEZnffVFcnC9uD8sysEjjN3Rc1cL03gQXuflN6komI1M7M9s/JyVlTWVmZ\nF3QWkTDIycnZVllZeWBdBUlYjozsFjMzYG+gLOgsIrJH27eysjLvt7/9LQcddFDQWUQCtWrVKsaO\nHZtH9Ehh9hcjwGSip3oerqmDmXUCCoF3gW2ZiSUiaZAH9AZK3L004CwpHXTQQRxyyCFBxxBpNpp9\nMWJmY4DrgIi7b66layHwYGZSiUgG/BB4KOgQIrL7mnUxYmb/DfwvcKa7P1tH93cBwnD4dNKkSdx+\n++2BZthFWVJTlvDmiB36hdj3tIg0f822GDGz0cBvgFHuvqQeq2yDcBw+bdeuXeAZdlGW1JQlvDmq\n0OlWkSwRimLEzNoABYDFmvqY2UCgzN3/aWa3APu5+7hY/zHAPOAy4O9m1jW23lZ3/yKz6UVERGR3\nhGLSM2AQ8CqwAnDgl8BK4PrY+92AnlX6nw/kAncDH1ZZ7shQXhERCYHnn3+enJwc/vznPwcdJSuc\ne+65HHDAARnfbiiKEXd/3t1z3D232jIh9v54dz+hSv/jU/SN9w+7l19+OegIccqSmrIkC0sOCcb8\n+fPJycmJLy1btqRHjx6MHz+eDz/8MNBs0dkdwuOrr75i6tSpDBgwgLZt27Lvvvty8MEHc8UVV/Dx\nxx8HHa9WZhbIeIbiNM2eZvz48UFHiFOW1JQlWVhySHDMjBtvvJHevXuzbds2XnrpJe6//37++te/\n8uabb/KNb3wj6IiB27lzJ0OGDGHt2rWMGzeOyy67jC+//JK33nqL4uJizjjjDLp16xZ0zNBRMRKA\nW265JegIccqSmrIkC0uOPdWu2bKDPgowfPjw+IXMEyZMoFOnTsycOZNFixZx5plnBpotDB577DFe\ne+01iouLGTVqVMJ727dvZ/v27QElC7dQnKYREZHU3v7X25y24DT2umkvWv+8NWN/P5ZNn9f5qI+M\nGTJkCO7Ohg0bEtoXLVrEqaeeyje/+U3y8vIoKCjgpptuorKyMqHfcccdx3e/+11WrVrF8ccfT5s2\nbejRowe33npr0rY++OADTjvtNNq2bUvXrl358Y9/zNdff02qx5o88sgjDBo0iNatW9O5c2fOPvvs\npNNJ5557LnvvvTf//Oc/OfXUU9l7773p0aMHc+bMAeCNN95g2LBhtG3blt69e1NcXFzneGzcuBEz\n46ijjkp67xvf+AZt27aNv37jjTcYP348+fn5tGrViu7du3PeeedRVpY4mfi0adPIyclh3bp1jB07\nlvbt29OlSxd+9rOfAfDPf/6T0047jXbt2tG9e3duu+22hPV3XVfz8MMPc80119C9e3fatm3L97//\nfd5///0698ndueOOO/jOd75Dq1at6NatGxdeeCGfffZZnevWl4oREZEM++CLD7j1r7dy1bKreGzV\nY+ys3Jmy34ayDQyeO5g/rf0TOyp3sG3nNha8uYAjf3Mkm8trm+Mxc9555x0AOnTokNA+b9489t57\nb6688kruuusuBg0axM9+9jOuvvrqhH5mRllZGSNGjODggw/mtttu46CDDuKqq66ipKQk3m/btm2c\ncMIJPPXUU1x22WX89Kc/Zfny5UyZMiXpaNG8efMYNWoULVu2ZPr06VxwwQX8/ve/Z8iQIXzxxRcJ\n266srGTEiBH06tWLW2+9lQMOOIBLL72U+fPnM2LECA477DBmzpzJPvvsw7hx43jvvfdqHY9evXrh\n7jzwwAN1jt1TTz3FO++8w4QJE5g9ezajR49mwYIFnHLKKUljBMSPtMyYMYMjjzySm2++mTvuuIOT\nTz6ZHj16MHPmTPr27cvkyZNZvnx50vZuvvlmFi9ezFVXXcXll1/OU089xUknncTXX39da84LLriA\nn/zkJwwZMoS77rqLCRMm8OCDDzJ8+HAqKirq3M96cfc9YgEOAXzFihUetMceeyzoCHHKkpqyJAtL\njhUrVjjRu+4O8RD8bKm61OfnzII3FnjLG1p6zvU53vKGls40fOCvBnppeWlS3wv/eKG3uKGFM42E\nJef6HL/p+ZtSfv6rH73q5zx2jn/77m970W+L/E9r/lSvca3LvHnzPCcnx5955hnfvHmzv//++/7o\no496ly5dvHXr1v7BBx8k9N+2bVvy/lx4obdt29a3b98ebzvuuOM8JyfHH3zwwXjb9u3bvXv37n7W\nWWfF2+644w7PycnxhQsXxtu2bt3qffv29ZycHH/++efd3X3Hjh3etWtXHzhwoH/99dfxvk888YSb\nmU+bNi3edu6553pOTo7PmDEj3vbZZ59569atPTc31x955JF4+5o1a9zM/Prrr691nLZu3er9+/d3\nM/PevXv7+PHj/b777vNPP/00qW+qMVqwYIHn5OT48uXL423Tpk1zM/OLLroo3lZRUeE9e/b03Nxc\nv/XWW5Pyjx8/Pt723HPPuZl5z549/auvvoq3P/LII25mPmvWrIQxOeCAA+Kv//KXv7iZ+YIFCxJy\nLl261M3Mi4uLaxyLhnyv6shIAOpzqC9TlCU1ZUkWlhzN2SdffsLZj53NjsodVHolOyp3APDmp29y\nZcmVSf2ffufplEdNKr2SZ99NnnR66YalHPbrw3jojYd4619vUbKhhFOLT2X68ulNkt/dGTZsGJ07\nd6Znz56cddZZtG3blkWLFrHffvsl9N1rr73i//7yyy8pLS3lmGOOoby8nNWrVyf0bdu2LWPGjIm/\nbtmyJYcffjgbN26Mty1evJju3btzxhlnxNvy8vK44IILEj7rlVde4dNPP+Xiiy9OuKC2qKiI/v37\n88QTTyTt13nnnRf/d7t27TjwwANp06ZNwjUw/fr1o3379gmZUsnLy+Pll1+OH7GZP38+5513Ht27\nd+eyyy5jx44dKcfo66+/prS0lCOOOAJ3Z+XKlQmfa2YJOXNychg0aBDuzoQJ/7mRdFf+VDnHjRtH\n69at46/PPPNMunfvzpNPPlnj/jz66KO0b9+eYcOGUVpaGl8OPvhg2rZty7PP1jX5ef2oGAnA7373\nu6AjxClLasqSLCw5mrMFby6gwpMPa1d4BQ++8SBf70w8XN4urx1G8gWruZZL+7z2CW3uzkVPXERF\nZUW8gNm1rZ8+81M+/nL3byk1M371q1+xbNkyFi5cyCmnnMLmzZtT3kXz9ttvc/rpp9O+fXv22Wef\n+HUbAJ9//nlC3x49eiSt36FDB7Zs2RJ//d5771FQUJDU78ADD0x4/d5772Fm9OvXL6lv//79k06z\n5OXl0alTp4S2du3apczUrl27hEw12XvvvZk+fTobN27k3Xff5b777qN///7cfffd3HjjjfF+W7Zs\n4fLLL6dbt260atWKzp0706dPH8wsaYwA9t9//6Q8eXl5dOzYsV45U41fQUEB7777bo37sm7dOj77\n7DO6dOlC586d40uXLl346quv+PTTT+sajnrR3TQiIhlStrWMHMuh0iuT3ttRuYOtO7eyV4v//LU8\n/nvjWfHhiqS+FV7BOQPPSWhbV7aOjVtS/9Ve4RUsWb+Ec7937u7tAHDYYYfF76b5/ve/zzHHHMOY\nMWNYs2ZN/K/uzz//nKFDh9K+fXtuuukm+vTpQ15eHitWrOCqq65Kuog1Nzc35bY8xYWpTa2mbTdV\npp49e3Luuedy2mmn0adPHx588EFuuOEGAM466yxeeuklpkyZwsCBA2nbti2VlZUUFhYmjVFNmdI9\ndpWVlXTt2pWHHnoo5Wd27ty5SbYTimLEzIYAk4FDge7Aae6+qI51jiM6U+u3gU3Aze4+P81RRUQa\n7ej9j0552sUw+nbqS7u92iW0X3DoBSzbuIzHVj9Gy5yWOM7Oyp1cfNjF/Fe//0r6jNrU9X5j5OTk\ncMstt3D88ccze/ZspkyZAsBzzz3Hli1b+MMf/sDRRx8d71/9jpuG6NWrF2+99VZSe/VTPrsuIF2z\nZg3HHXdcwntr1qyhV69ejc6wO9q3b09+fn58Hz777DOeeeYZbrzxRq699tp4v/Xr16ctw7p165La\n1q9fz8CBA2tcJz8/n6effpqjjjoq4bRSUwvLaZo2wGvAxUQvdqmVmfUG/gQ8DQwE7gR+Y2YnpS+i\niMjuObHPiRzV4yhy7T9/zRqG49x8ws1Jd4W0yGnBwh8sZNnZy5h42ESuOOIKXjzvRe4uujupb0HH\nAg7sdCA5lvxjvUVOC0b0HZGWfTr22GM5/PDDueOOO+JzaOTm5uLuCX/db9++PX7LbGMUFRXx4Ycf\nsnDhwnhbeXk5v/71rxP6DRo0iC5dunDPPfckXJ+xePFiVq1axamnntroDPXx+uuvU1pamtT+3nvv\n8fbbb9O/f3/gP0c0qh8Buf3229M2l8wDDzzAl19+GX/9yCOP8NFHH1FUVFTjOj/4wQ/YuXNn/GhO\nVRUVFSlPJzVGKIoRd1/i7j9z9z9Avcr3i4CN7j7F3de4+93Ao8CktAZtImGayVJZUlOWZGHJ0Zzl\nWA5Lxi7hokEX0bpl9JTGtzp/i9//4Pec+a3UE4aZGcP6DOP24bdz68m3cmSPI2vsd++p99IypyUt\ncqIHvXcVPb846Rd0adNlt/PXdOh/8uTJfPzxx8ybNw+Ao446ig4dOnDOOedw++23c/vttzN48ODd\n+iV7/vnnk5+fz9lnn83VV1/NXXfdxbHHHkubNm0S+rVo0YIZM2bw+uuvM3ToUO666y6uueYazjrr\nLPr06cMVV1zR6Az18dRTT9GrVy/GjBnDXXfdxX333ce1117L4MGD2b59O9OmTQOi15UMHTqUmTNn\nct1113HPPfdwxhln8OKLL6bt9FTHjh055phjuPPOO7n66qsZN24c/fr143/+539qXGfo0KH86Ec/\nYvr06ZxyyinceeedzJkzhyuuuIJevXrx9NNPN0m2UJymaYQjgWXV2kqA2wPI0mAnn3xy0BHilCU1\nZUkWlhzN3d577c2solncOeJOtldsJ69FXpN99rG9j+W1C19j1t9mseKjFfRq14uLDruI43of1ySf\nX1MxccYZZ5Cfn88vfvELzj//fDp27MgTTzzBlVdeyXXXXUeHDh04++yzOeGEEygsLKz351Ztb9Wq\nFc888wyXXnops2fPpnXr1owdO5bhw4czfPjwhPXGjRtHmzZtmD59OldddRVt2rRh5MiRTJ8+nX32\n2afB267aVldBdeaZZ/Lll1+ydOlSnn32WcrKyujQoQNHHHEEV155JUOHDo33LS4u5tJLL2XOnDm4\nO4WFhSxevJj99tuv3oVbffObGddccw2vv/4606dP59///jcnnXQSd999N3l5ebWu+6tf/YpBgwZx\n7733cu2119KiRQt69+7NOeeck3AabndYJi4Qaggzq6SOa0bMbA1wn7vPqNI2guipm9bunjSDi5kd\nAqxYsWJF/OIrEWl+Vq5cyaGHHgpwqLuvrKt/JunnjITR888/z/HHH8+jjz6acGt0ujXkezUUp2lE\nRERkz9Vci5GPga7V2roCX6Q6KlJVUVERkUgkYRk8eDCPP/54Qr+lS5cSiUSS1p84cSJz585NaFu5\nciWRSITNmxOnZ546dSozZsxIaNu0aRORSCTpCvBZs2YxefLkhLby8nIikUjStL7FxcUpz9+PGjVK\n+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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xa07bfd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# first let's look at the type of sample we'll be fitting against\n",
"\n",
"X, Y = getSample(f, noise=0, npoints=6) # no noise!\n",
"plotSample(X,Y)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# so we just have a small number of points to fit against -\n",
"# as the degree of the polynomial grows, we'll start running into overfitting problems."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scoring mean_squared_error\n"
]
},
{
"data": {
"image/png": "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\ntdWrV/Pggw8SHBxsfZ6RkcHzzz9P1apVOXDgAAsXLiQhIYGYmJhC+3/jaN7ly5fp1q0bFouFqVOn\n4ufnxz//+U98fOzvILZs2TICAwOZMGECAQEB7Ny5k9dffx29Xk90dDQAr732GikpKSQkJPD+++8j\npSQgIKDA9uzYsYPw8HAaN27MrFmzyMjI4MMPP6Rz587ExsZa/zjOa/eQIUNo1KgRc+fOJTY2liVL\nllCjRo0i50Du27ePqlWrEhZmvR8MDzzwAOPGjWPhwoW89tprNG/eHIAWLVoA8OWXXxIVFcWDDz7I\nO++8g8FgYPHixXTp0oVDhw5Z2zZo0CCOHTvGuHHjqF+/PleuXGH79u3Ex8dTr149PvjgA8aOHUtg\nYCCvvfYaUkpq1Khh0762bdsWK+EsKlbe9+mpp57irrvuYurUqYSEhHDo0CG2bt3KY489Zj1m5MiR\ntG/fnrlz53L58mXef/99fvrpJw4dOkRQUJD1fc/OzqZv37506dKF+fPn4+eXs2B0586dhIeHc++9\n91r/IPjXv/5Fjx492Lt3L/fee2+R/SmSlLJSPIA2gDx48KBUlMrMbDHLv679JU8knpAJqQlOf5xP\nOS9rzasln1n/jEvqX7NjjQQk0EaWg8+WsnwU53OswT0NJDOQzHTwmIGs3aq2PHjhYKkete6uVWjd\nDdo0KOFPY47U1FQphJAPP/xwsc8RQkgPDw95/Phxm/J169ZJIYScM2eOTfmjjz4qdTqd/PPPP6WU\nUr7//vtS0zR57dq1AmMMHDhQtmzZsgQ9+VunTp1ku3btbMoOHDgghRDy66+/tpYZjUa7c+fOnSt1\nOp08d+6ctWzmzJlS0zSb4xo0aCBHjBhhff7SSy9JTdPkL7/8Yi1LTEyUISEhUtM0efbs2ULjjh49\nWgYEBMisrCxrWf/+/WXDhg3tjj1z5owUQsjly5dby1q3bi1r1qwpk5OTrWW//fab1Ol0MioqyqYv\nQgj5zDPP2NQ5aNAgWb16dbtYN+rSpYvdeyullGvWrJGapsk9e/bYlKelpcnQ0FA5evRom/IrV67I\nkJAQOWrUKCmllMnJyVIIIefPn19o/Lvuukt27969wNfnzJkjNU2TV69eLfCY4sRKSUmRQUFBslOn\nTjIzM9PhMSaTSdaoUUO2atXK5phNmzZJIYScOXOmtSwqKkpqmianTZtmV0/Tpk1leHi4TZnRaJSN\n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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x8176710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plot a complexity curve, fitting against a similar sample\n",
"\n",
"calculateAndPlotComplexityCurves(f, noise=0, npoints=6, maxDegree=8)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# note the characteristic U-shape of the test score - \n",
"\n",
"# on the left you have a regime of *underfitting*, or *high bias* - \n",
"# the model doesn't have enough complexity to model the data very well.\n",
"\n",
"# on the right you have *overfitting*, or *high variance* - \n",
"# the model is too complex and fits too well to the training data,\n",
"# making it fit less well against the test data.\n",
"# note the high variance of the test scores also. \n",
"\n",
"# in the middle you have a happy medium with low test error at around 4 degrees."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scoring mean_squared_error\n"
]
},
{
"data": {
"image/png": "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\nP/ww1zbHxcXx888/89VXXxWoXQB9+vQhMTGRnTt3esvmzp1LVFQUTqfTWxYZGen9Ojk5mSNHjtCm\nTRtcLhdff/11gWIuWbKEyy+/PGMRbgDOPfdcbr311mx1M8c9ceIER44coV27diQnJxdq9Ylff/2V\nzZs3M2DAAO/oLUCzZs249tpr+c9//uNTX0SyLWnUvn17jhw5wokTJ/KMdeTIESpWrJjvtq1YsYJj\nx47Rt29fjhw54t1EhNatW7Nq1SoAypYtS5kyZfj888/5/fff8339rDLadvjw4Vzr5CfWihUrOHHi\nBKNHj6ZMmTI51vnqq684ePAg99xzj0+dhIQEGjduzOLFi7OdM3jwYJ/9b775hh07dnDzzTf7fD7H\njx+nU6dOPo8l/BV2Sz0AAvlQbnGIG8zY1ufQiW2yExEi0iPcYw05JYYK1SKrsWjQokJdv9uH3fhF\nc0k6FSLSIwo1aSPjll9BnwHNuIWe2e7du6levToxMTE+5Rm3Vnfv3g24E8KZM2dy1113MXr0aDp1\n6sQNN9xAr169vH146KGH+PTTT7nsssto0KABnTt35pZbbqFt27YApKWlcfToUZ84lStXxuFwcNNN\nN/HAAw8wd+5c79I98+fPJyEhwee29N69e3nsscf45JNP+O2337zlIuJ9zjO/du/ezeWXX56tPGtS\nDu5HCsaMGcOqVau8CX9h42bEBmjYsGG2Y02aNGH58uWkpKRQtmxZb3nWZ8AzErXffvstz1v3ULAV\nEnbs2IGq0rFjx2zHRMT7969MmTJMmjSJBx98kCpVqnD55ZfTrVs3+vXrl+22eX7altd/C/mJ9eOP\nPwLkOVlu9+7diEiOn3vjxo1Zu3atT1l4eDg1a9b0KduxYwcA/fr1yzGGw+Hg2LFjPr9IFIYlnAEw\nfvz4kIobzNjW59CJbXLW/ZruvPLTK7jqZ58o4vjRwU1db6JFtcK9FrNXl155Xtt5rTOHs84uNjaW\n6tWrs2XLlgKdlzl5KaioqChWr17NqlWrWLx4MUuXLmXu3Ll06tSJ5cuXIyI0btyY7du3s2jRIpYu\nXcoHH3zA9OnTGTt2LGPHjmXdunV07NgREUHVPUN6586d1KpVi2rVqtG+fXvmzZvH6NGjWb9+PXv2\n7OG5557ztsHlcnHNNdfw+++/8/DDD9OoUSNiYmLYt28ft99+e46TfYrCsWPHuPLKK4mLi+Opp56i\nXr16REVFkZiYyOjRo/0WN6vcZtifLZk899xzfZLzs3G5XIgIb7/9do6JY3j4n6nQfffdh9PpZOHC\nhSxbtozHH3+cCRMmsGrVKpo3b56veBltq1SpUp71iiJWQWUe2c6Q8f2eMmVKrnHP9gtAfhSbhFNE\nhgAPAlWBzcC9qvq/POqXAcYCt3rO2Q88oaqz/N9aY4wpnp5+7Gk+6/wZSZrkTgwFUHdC2OSHJjw1\n/aliee1u3brxxhtvsGHDhgJNHMqqdu3afPrpp5w8edJnlDMpKcl7PLOOHTvSsWNHJk+ezIQJE3j0\n0UdZtWqVd+Zx2bJluemmm7jppps4c+YMPXv25Omnn+bhhx+mefPmrFy50ud6VatW9X7dp08fhgwZ\nwo4dO5g7dy4xMTF069bNe/y7775jx44dvPXWWz63vbNesyB9zxityizrLfLPP/+c3377jY8++ogr\nrrjCW54xopZZfkesMz7X7du35xi/UqVKf+kXhMwaN27MBx98kK08t7bWr18fVaVy5co+M8pzU7du\nXYYPH87w4cP58ccfad68OVOmTPHOyD/bZ7Jz504qVarEueee+5diZbR7y5Yt3tUBsqpduzaqyvbt\n2+nQoYPPse3bt2f7+56T+vXrA+5f/PLz+RRWoZ/hFJFwEblGRAaJSKynrLqIFDgNFpE+wBTcCeQl\nuBPOZSKS168H7wMdgQFAQ+BmIPvfdGOMCSGxsbGsX76eodWHUueTOtRYVIM6n9RhaPWhrF++vsDP\nSQbq2qNGjSI6Opo777yTgwcPZjv+448/8tJLL531OgkJCZw5cybbGrEvvPACDoeD6667DiDHEbLm\nzZuj+ud6nllvl4eHh9OkSRP3s7JpacTFxXH11Vf7bJmfo7vxxhtxOBy8++67zJ8/n27duvkkXRkj\nfFlHFF988cVCPZqQkJDAl19+6fPM6aFDh3j33Xd96oWFhaGqPnFPnz7N9OnTs10zJiYmX7fYq1at\nysUXX8zs2bN9btFv2bKF5cuXc/311xe4P7lp06YNv/32W7YF3mNiYlDVbM9EdunShfLly/PMM89w\n5syZbNfLeNYyJSUl21qudevWJTY21qc8JiYmz2c8ExMTadOmTZ59yE+szp07Exsby4QJE3JdY/bS\nSy/lvPPO47XXXiMtLc1bvmTJEpKSknx+wclNy5YtqV+/PpMnT85xwfq8nkUtiEKNcIpIbWApUAuI\nBFYAx4GHPPuDcz87R8OB11X1Tc/1BwPXAwOBZ3OI3xVoD9RT1Yzvun/fZfUXHD58+KxD66UpbjBj\nW59DJ7bxaRSQAAAgAElEQVTJXWxsLFMnTWUqU723eov7tevVq8e7775L3759adKkCf369aNp06ac\nPn2atWvXMn/+fAYMGHDW63Tv3p2OHTsyZswYdu7c6V0W6ZNPPmH48OHeN9M88cQTrF69muuvv57a\ntWtz4MABXn31VWrVqkW7du0A9z/4VatW5YorrqBKlSps3bqVV155hW7dumV7RjQnlStXpmPHjjz/\n/POcOHEi20LljRs3pn79+owYMYKff/6Z8uXLs2DBgkJPWBk1ahRvvfUWXbp04b777iM6Opo33niD\nOnXq8O2333rrtW3blooVK9KvXz+GDRsGwNtvv53j97Jly5be5Z1atWpFuXLlck1innvuORISErj8\n8su54447SE5O5uWXX6ZixYqMHTu2UH3KyfXXX09YWBgrV67kzjvv9JZffPHFhIWFMWnSJH7//Xci\nIyPp1KkTlSpV4tVXX6Vfv360aNGCvn37UrlyZfbs2cPixYu9r079/vvv6dSpE7179+aCCy4gPDyc\nDz74gIMHD3qXIMr4TF577TWefvppGjRowHnnned9PvTQoUN8++232SatZZWfWLGxsbzwwgvcdddd\ntGrViltuuYWKFSuyefNmUlJS+Pe//014eDiTJk1i4MCBXHnlldx88838+uuvvPTSS9SrVy9fb+cS\nEWbMmEFCQgIXXnghAwYMoEaNGuzbt49Vq1ZRoUKFfC3zdFZ5TWHPbQMWAm8BZXAnmvU85R2AHQW8\nVgSQBjizlM8CPszlnFeA5cAE4GfcI5vPAVF5xAnaskjdu3cPeMxgxg1mbOtz6Y9tyyKV7uXdfvjh\nBx00aJDWq1dPo6KivMvCTJs2zWfZF4fDocOGDcvxGidPntQRI0ZozZo1NTIyUhs1aqTPP/+8T51V\nq1Zpz549tWbNmhoVFaU1a9bU2267TX/44QdvnTfeeEM7dOiglStX1rJly+r555+vo0eP1uPHj+e7\nPzNmzFCHw6FxcXE5Lm2zbds27dy5s5YvX17PO+88HTx4sH733XfqcDh8lhwaN26choWF+Zxbt25d\nHThwoE/Zli1btGPHjhodHa3x8fH6zDPP6L/+9a9syyKtX79e27ZtqzExMVqzZk19+OGHdcWKFdmW\nFTp58qTedtttes4556jD4fAukbRr165sbVRV/eyzz7R9+/YaExOjcXFx2qNHj2xLV2Us8XTkyBGf\n8lmzZmVrZ27+9re/6bXXXputfObMmdqgQQONiIjI1pcvvvhCr7vuOq1YsaJGR0fr+eefrwMHDtRN\nmzapquqRI0f03nvv1QsuuEBjY2O1YsWK2qZNG12wYIFPjAMHDmj37t21QoUK6nA4fJZIevXVV7Vc\nuXJ64sSJPNuf31iqqosWLdJ27dp5P9PLL79c586d61Pn/fff15YtW2rZsmW1UqVK2q9fP92/f79P\nnf79+2v58uVzbdPmzZu1V69e3r/vdevW1b59++qqVavy7Et+fyYX9ofeEaCR5+vMCWcdILmA16oG\nuIDWWconAetzOWcJkAJ8DFwKdAV2AjPziBO0H9TB+schmP8oWZ9Lf9xgxbaEs3QnnMbkx3//+18N\nDw/3+QWhOLjkkkt0xIgRwW5GQPl7HU4HkNP0spqeBNTfHLiT1FtU9StVXQo8ANwuItmnYAVZixaF\nmxFaUuMGM7b1OXRiG2NCV7t27ejcuTPPPpvtqbugWbZsGT/88IN3GSzjq7AJ53Ig84MB6pksNB74\nT86n5OowkA5kXaugCvBrLuf8AuxT1cyrwybhnjNZM+dT3BISEnA6nT5bmzZtWLhwoU+95cuX+yzO\nm2HIkCHMnDnTp2zTpk04nc5sD9aOHTs228LYe/bswel0Zps1OG3aNEaOHOlTlpycjNPpZM2aNT7l\nc+bMyfFZpj59+lg/rB+lqh9z5szB6XTSrFkzGjRogNPpZPjw4dniGmNCz+LFi3n99deD3QyvLl26\n8Mcff9hz7bkQ1YK/FUJEagLLcCd45wNfef48DFypqtmnGOZ9vS+BDap6n2dfcE8CeklVn8uh/l3A\nC8B5qprsKfsbMB8op6rZpnOJSAsgMTEx0UZljCnBNm3alPEmlZaquinY7Qkk+zlmjClu8vszuVAj\nnKr6M9AceBp34vc1MBq4pKDJpsfzwF0i0k9EGgOvAdG4Jw4hIhNEZHam+u/ifo703yLSRESuxD2b\nfWZOyWawZR3xKe1xgxnb+hw6sY0xxpQcBU44RSRCRP4FxKvqO6o6SlXvUdUZqppSmEao6jzci74/\ngTt5vQjooqqHPFWqAvGZ6p8ErgXigP/hnjH/EXBfYeL726ZNwRmECVbcYMa2PodObGOMMSVHYW+p\nHwMuVtWdRd8k/7BbUcaUDnZL3X6OGWOKD7/eUse9DmePQp5rjDHGGGNCSGHfpb4DeFxErgASAZ93\nIanq2d8/ZowxxhhjQkJhE847gN+Blp4tMwUs4TTGGD9JSkoKdhOMMQbI/8+jQiWcqlq3MOeFKqfT\nyccffxwycYMZ2/ocOrFD1GGHw5F62223RQW7IcYYk8HhcKS6XK7DedUp7Ainl2fNTLQws49CxNCh\nQ0MqbjBjW59DJ3YoUtU9ItIIsJWljTHFhsvlOqyqe/KqU6hZ6gAi0g8YiXvBd4DvgedU9a1CXdDP\nbHanMaVDKM9SN8aYkqpQI5wi8gDwJPAysNZT3A54TUQqqeoLRdQ+Y4wxxhhTwhX2lvq9wN2q+mam\nso9F5P+AcbjfPmSMMcYYY0yh1+GsBqzLoXyd55jJZOHChSEVN5ixrc+hE9sYY0zJUdiE8wegdw7l\nfXCv0WkymTNnTkjFDWZs63PoxDbGGFNyFPbVljcCc4GV/PkM5xVAJ6C3qn5YZC0sIjZpyJjSwSYN\nGWNMyVOoEU5VXQC0Bg7jfsVlD8/XlxXHZNMYY4wxxgRPodfhVNVE4LYibIsxxhhjjCmFCjXCKSIJ\nItIlh/IuInJdIa85RER2ikiKiHwpIq3yed4VIpImInZrzRhjjDGmGCrspKGJuZRLHsdyJSJ9gCnA\nWOASYDOwTETyfJuGiFQAZuN+lrTYGjBgQEjFDWZs63PoxDbGGFNyFDbhPB/YnkP5NqBBIa43HHhd\nVd9U1W3AYCAZGHiW814D3gG+LETMgOncuXNIxQ1mbOtz6MQ2xhhTchR2lvqvwC2q+lmW8muAd1X1\nvAJcKwJ3cnmjqn6cqXwWUEFVe+Zy3gBgENAWeAz4m6rmOv3cZqkbUzrYLHVjjCl5CjvC+RHwoojU\nzygQkQa4b4t/nOtZOasEhAEHspQfAKrmdIKInA88A9yqqq4CxjPGGGOMMQFU2IRzFHAS2OaZ6LMT\n9+30I8CDRdW4nIiIA/dt9LGq+mNGcX7PT0hIwOl0+mxt2rTJ9saU5cuX43Q6s50/ZMgQZs6c6VO2\nadMmnE4nhw8f9ikfO3YskyZN8inbs2cPTqeTbdu2+ZRPmzaNkSNH+pQlJyfjdDpZs2aNT/mcOXNy\nfHauT58+1g/rR6nqx5w5c3A6nTRr1owGDRrgdDoZPnx4trjGGGOKt0LdUgcQEQGuBZoDKcBmVf1v\nIa5ToFvqnolCvwFn+DPRdHi+PgN0VtXPc4gTtFvqa9asoV27dgGNGcy4wYxtfS79se2WujHGlDwF\nGuEUkTYi0g1A3ZYDB3GPai4QkX+KSGRBrqmqaUAi7rcUZcQRz35O72v/A2gKXIw72W2Oe/LQNs/X\nGwoSPxCeffbZkIobzNjW59CJbYwxpuQo0AiniCwBPlfVSZ79ZriTxdlAEjAS92zzcQVqhEhvYBbu\n2ekbcc9a7wU0VtVDIjIBqK6qt+dy/liK8aSh5ORkoqOjAxozmHGDGdv6XPpj2winMcaUPAV909DF\nuGeEZ+gLbFTVuwBEZC8wHhhXkIuq6jzPmptPAFWAb4AuqnrIU6UqEF/AthYbwUoGghU3mLGtz6ET\n2xhjTMlR0ISzIr6zya8ClmTa/x+FTAxVdTowPZdjea4urarjcSe6xhhjjDGmmCnoLPUDQF0AESkD\ntMB30fVYIK1ommaMMcYYY0qDgiac/wEmikh7YALu2eWZZ6ZfBPyY04mhLOuyNKU9bjBjW59DJ7Yx\nxpiSo6C31B8DPgC+AE4At6vq6UzHBwLLi6htpUatWrVCKm4wY1ufQye2McaYkqOwr7asAJxQ1fQs\n5ed4yk/nfGbw2KstjSkdbJa6McaUPAUd4QRAVY/lUn70rzXHGGOMMcaUNoV9taUxxhhjjDH5Ygln\nAGR9v3VpjxvM2Nbn0IltjDGm5LCEMwBGjRoVUnGDGdv6HDqxjTHGlByFmjRUEgVz0tCePXuCMps3\nWHGDGdv6XPpj26QhY4wpeWyEMwBsuZzSHzeYsUOxz8YYY0oWSziNMcYYY4xfWcJpjDHGGGP8qtgk\nnCIyRER2ikiKiHwpIq3yqNtTRJaLyEEROSYi60SkcyDbWxCTJk0KqbjBjG19Dp3YxhhjSo5ikXCK\nSB9gCjAWuATYDCwTkUq5nHIl7ldoXge0AFYBn4hI8wA0t8CSk5NDKm4wY1ufQye2McaYkqNYzFIX\nkS+BDap6n2dfgL3AS6r6bD6vsQV4T1WfyuW4vdrSmFLAZqkbY0zJE/QRThGJAFoCn2aUqTsLXgm0\nyec1BIgF7NWaxhhjjDHFTNATTqASEAYcyFJ+AKiaz2uMBGKAeUXYLmOMMcYYUwSKQ8L5l4jILcBj\nwE2qevhs9RMSEnA6nT5bmzZtWLhwoU+95cuX43Q6s50/ZMgQZs6c6VO2adMmnE4nhw/7hh87diyT\nJk3yKd+zZw9OpzPbKwGnTZvGyJEjfcqSk5NxOp2sWbPGp3zOnDkMGDAgW9v69Onj04/Dhw8XaT8y\nO1s/Ml/jr/YD8v/9OHz4cJH2I7Oz9SNrvL/SD8j/9+Pw4cMB/XuVuR9Z21bUf6/mzJmD0+mkWbNm\nNGjQAKfTyfDhw7O10RhjTDGnqkHdgAggDXBmKZ8FfHiWc/sCJ4Cu+YjTAtDExEQNtO7duwc8ZjDj\nBjO29bn0x05MTFRAgRYa5J9fttlmm2225W8L+ginqqYBiUCnjDLPM5mdgHW5nSciNwMzgb6qutTf\n7fwrxo0bF1Jxgxnb+hw6sY0xxpQcxWWWem/cI5qDgY3AcKAX0FhVD4nIBKC6qt7uqX+Lp/4w4MNM\nl0pR1T9yiWGz1I0pBWyWujHGlDzhwW4AgKrO86y5+QRQBfgG6KKqhzxVqgLxmU65C/dEo1c8W4bZ\nwED/t9gYY4wxxuRXsUg4AVR1OjA9l2MDsux3DEijjDHGGGPMXxb0ZzhDQdZZu6U9bjBjW59DJ7Yx\nxpiSwxLOANi0KTiPmQUrbjBjW59DJ7YxxpiSo1hMGgqEjElD1RpVo5ezF08/9jSxsbEBie1yuXA4\nLLc3pijYpCFjjCl5Qi4L+uWqX3h5/8u0vqY1x48f91uc/fv3c1nr5pQ9L5yY2hGUPS+cy1o3Z//+\n/X6LaYwxxhhTHIVcwgmg5ytJ9ZMYNXaUX66/f/9+Gjavx1cNviX1nnRS73SRek86ifW/pWHzepZ0\nGmOMMSakFJtZ6gHXEN6e9Sb9hvcj3BFOmCOMcEc44RLu/tNTFiZhRIRFeMsc4sC9Ln3unD26kNz5\nFNowU6GAqxGkcIqeNySw4ctv/Ns/Y4wxxphiInQTToETUcm0ndkW8s4fswlXIRwHYTj+/FMy/gxj\n78HfISHTCe8Ct7i/dDWEb1duKape5MnpdPLxxx8HJFZxiW19Dp3YxhhjSo7QTTgVIo/C4s3NcWk6\n6a50zrjO4HKlc8azn67ppKvLva8u90amMpR00jnDGc7gIl2U0wLPCqRnTmIvy/S1QFq5dN77dg6d\n6l9DbGQskWGRZx01LYyhQ4cW+TWLe2zrc+jENsYYU3KE3Cx1/gFUB8d2qLYihqSt2zwvlneR8Vmo\ny4W60nGpC1wuXK50XJ4ydaXjwoUrPR1NT0dx4XK5z0cVzpzhwoTrODXElfPIqeJ+H1J/iHVF0D7u\nIjq2uJFuF/SkdlxtIsMjcUhIPlprTL7YLHVjjCl5QnKE07Ed4hfBzbf+ndjKNYvkmupyJ5yK0qzu\nhWz6/jtcjXKI/T0010o8/01NvkhOYkmtREYdS2Tk54/QnKp0aHAt17W+lbbxbYmOiCbMEVYk7TPG\nGGOMCZaQG+GsFgut0uB4ncZ8tHGjX9bizJilnnLtKVwNcY90qjvZLLsiku/Wf8M5FWJI/uMoZzZ8\nyfE1n7Ju71o+jfqFpfWV38tCpfRIOpRvzrWX38p1zXpSLbYa4Y6Q/P3AGB82wmmMMSVPyN27jS9X\njUv+McxvySZA9erV+X7zT1z6U3OipocTMU2Imh7OpT815/vNP1G3QWMqVI6nWv3mVO9zB3UmvcaN\nM9fx3COr2Hze4yz+oTUDvg3j+x83MujT+6j7fC3aj6/NY28NZP2etZw6cypf7fjggw/80r/8WLhw\nYUjFDWbsUOyzMcaYkqXYjHCKyBDgQaAqsBm4V1X/l0f9DsAU4EJgD/C0qs7Oo34LIDExMZEWLVoU\nZdPP6vLLL+fLL7/MV920tFOcSv6D1JN/kLr5Kw5+sZj/7lzNpxF7+bS2i+QyUPN0FJ3KX0KXK/rR\npUVvKpat6J10tH//fnr0vI7vdv4fp35PJzIujGZ1L2Thh0uoXr26P7vpoyB9Lg1xgxk71PpsI5zG\nGFPyFIsRThHpgzt5HAtcgjvhXCYilXKpXwdYBHwKNAemAjNE5NpAtLegzjvvvHzXjYiIpFyFylSq\nXp8aXXtz4fjXGPD6Bt4Y/zXf1ZvMvF+v5G8/lWHtvvXc8undVJtYiWsercWzs/7BZ4nLfBac17oE\ndMH5zG9X+t/mDQF7u1Kw4gYzdij3uU2nVn6NY4wxpugVixFOEfkS2KCq93n2BdgLvKSqz+ZQfxJw\nnapelKlsDlBBVROy1vccD9oIZ1GtVehSF6dST3Iq+Q9SdiSxa+UCvvhxJZ/KLlbXOMPp/wI1gfM9\nJ2Ra/9OxHS79qbnfFpzPeG41ufMp9HxgDnDzn8+tfr/5J7+MsAYrbjBjh3yfywH/BGyE0xhjSoyg\nz0IRkQigJfBMRpmqqoisBNrkctrlwMosZcuAF/zSyGLCIQ7Klo2lbNlY4s6tQeXLOnBRygn+8cdR\njv53JRe8MYi0Djmf62oI/1u3mWajylGGMMoQRiThlJFwIiWcMo4IyjjKEOWIICKsDJFhZYgMi6RM\nWCSR4ZFERkRRJjySqIhoykREElkmmqgy0ZQpU5aoqBjue3hCnm9XSuh5NR9++AGOsDBEHDjCwnE4\nwhBHGA7PJiLuNznh/jPjrU55lfXoeV3Q3uoUrNgh32d7M6wxxpQ4QU84gUpAGHAgS/kBIIeFhQD3\nc5451S8vIpGqmr9ZNSVcuCOc8Jg4YmLiiOt1J2Ej7iZNXDlXFnA4oM3RcpwRF6dJ5zSnSSOVU5LO\nMXGRJi5OiYvTDuW0QzmV8Wc4nA6DU2FwKhzSc3oQ4yh/jqxm4WoImzdsp94bFxZV1/90CLgu97gb\n12+m6uhwwhTCVAhHCFMhDMHh3XcQhrssXB2EiRDm8yYpIUwchBHmfaOUQxwk7v8JzSN24n83c8fo\nC1Dv/3D/qZlK3P/3Zx1V332fY+6vE3/Zl2fcr9Zs5oaR8e4kHXH/T9xf4ylziGQc+fNrz5+OzF97\nEvuM8zft+zbvPq/ezAOPt/aWuXtApv2ML9R336dO9nPyimuMMab4Kw4JZ6BEASQlJQU88MaNG9m0\nyf93/lwn8B392ee7H/abg35/fwdQ1JXuTnYyFqx3qWfhewXPmqIuTXcvgp+ejqadhtOn4cwZzpxK\nIe30Kc6cOUXa6RROn05lwMmpnPkl99jhyfD0oesAcS+oj3uxfJe3DS5cgAvPYvvgXYz/z4TLs6/u\nei6Xi6kpX5OeR9ywU5CwqxYuUdSleJbqJx0Xqi7SgXRcuDLFP+O+Oi7OkIriIuM8JR0X6QLpnvrk\nETsdWL9zhyfpw/P/8X4tgPjkVhn1/txAEP3znIz+5xVXFX7eeRgRcX9ukpHUZiSveMoyUjt1f978\nmey5Mp/j+dql7r7n2WeBBTv+hyOPN2eJ+h472zu2VNU37mHvoaiznGqMMaaYCPoznJ5b6snAjar6\ncabyWbifyeyZwzlfAImq+kCmsv7AC6paMZc4twDvFG3rjTFBdKuqvhvsRhhjjDm7oI9wqmqaiCQC\nnYCPwTtpqBPwUi6nrSf7jdTOnvLcLANuBXYBqX+hycaY4IoC6uD+b9oYY0wJEPQRTgAR6Q3MAgYD\nG4HhQC+gsaoeEpEJQHVVvd1Tvw7wHTAd+Bfu5PRFIEFVs04mMsYYY4wxQRT0EU4AVZ3nWXPzCaAK\n8A3QRVUPeapUBeIz1d8lItfjnpU+DPgZuMOSTWOMMcaY4qdYjHAaY4wxxpjSq1i8acgYY4wxxpRe\nlnAaY4wxxhi/ComEU0SGiMhOEUkRkS9FxO8vYxaR9iLysYjsExGXiDj9HdMT92ER2Sgif4jIARH5\nUEQanv3MIok9WEQ2i8gxz7ZORLoGInaWdoz2fObP+znOWE+czNtWf8bMEr+6iLwlIodFJNnz2fv1\nva2e/46y9tklItP8GdcT2yEiT4rIT57+/iAij/o7rjHGmL+u1CecItIHmAKMBS4BNgPLPJOU/CkG\n9+Sne8j5hSr+0h6YBrQGrgEigOUiUjYAsfcCDwEtcL+u9DPgIxFpEoDYAHh+mfgH7u9zIGzBPdGt\nqmdrF4igIhIHrAVOAV2AJsAI4Dc/h76UP/taFbgW99/veX6OCzAaGIT7v6nGwChglIgMDUBsY4wx\nf0GpnzQkIl8CG1T1Ps++4E6MXlLVZwPUBhfQI/PC9oHiSawPAleq6pogxD8CPKiq/w5ArHJAInA3\n8BjwdeaXA/gh3ljgb6rq11HFXGJPBNqo6lWBjp2lHRnLkfl9FF1EPgF+VdW7MpXNB5JVtZ+/4xtj\njCm8Uj3C6XmLUUvg04wydWfYK4E2wWpXgMXhHoE6GsigntuffYFo8l6Qvyi9Anyiqp8FKB7A+Z7H\nJn4UkbdFJP7spxSJ7sBXIjLP8+jEJhG5M0CxAe9/X7cCMwMUch3QSUTO98RvDlwB/CdA8Y0xxhRS\nsViH048qAWHAgSzlB4BGgW9OYHlGc18E1qhqQJ4tFJGmuBPMKOA40FNVtwUgbl/gYty3fAPlS6A/\nsB2oBowDVotIU1U96efY9XCP5E4BngYuA14SkVOq+pafY2foCVQAZgco3kSgPLBNRNJx/8I8RlXf\nC1B8Y4wxhVTaE85QNx24APcoUKBsA5rjTkR6AW+KyJX+TDpFpCbuxPoaVU3zV5ysVDXzqxW3iMhG\nYDfQG/D3IwQOYKOqPubZ3+xJ9gcDgUo4BwJLVPXXAMXrA9wC9AW24v4FY6qI7A9gkm2MMaYQSnvC\neRhIxz2pI7MqQKD+kQwKEXkZSADaq+ovgYqrqmeAnzy7X4vIZcB9uEfj/KUlUBnY5BnVBffI9pWe\nCSWRGoCHlVX1mIh8DzTwdyzgFyApS1kScEMAYiMitXBPSusRiHgezwITVPV9z/7/eV5z+zCBS7KN\nMcYUQql+htMz2pWI+13rgPc2cyfcz4OVSp5k829AR1XdE+TmOIBIP8dYCTTDPeLV3LN9BbwNNA9E\nsgneSUsNcCeD/raW7I+FNMI9whoIA3E/mhLI5yejcf8CmZmLUv5zzBhjSoPSPsIJ8DwwS0QSgY3A\ncNz/cM3yZ1ARicGdfGSMuNXzTHI4qqp7/Rh3OnAz4AROikjG6O4xVU31V1xP7GeAJcAeIBb3hJKr\ngM7+jOt5XtLnGVUROQkcUdWso4BFRkSeAz7BneTVAMYDacAcf8XM5AVgrYg8jHtJotbAncBdeZ5V\nBDy/tPUHZqmqy9/xMvkEeFREfgb+D/fyW8OBGQFsgzHGmEIo9Qmnqs7zLA30BO5b6d8AXVT1kJ9D\nXwqswj1DXHFP7gD3BIuBfow72BPv8yzlA4A3/RgX4Dzc/asGHAO+BToHeNZ4hkCMatYE3gXOBQ4B\na4DLVfWIvwOr6lci0hP3RJrHgJ3AfQGaQHMNEI//n1PNaijwJO7VCM4D9gOvesqMMcYUY6V+HU5j\njDHGGBNc9uyTMcYYY4zxK0s4jTHGGGOMX1nCaYwxxhhj/MoSTmOMMcYY41eWcBpjjDHGGL+yhNMY\nY4wxxviVJZzGGGOMMcavLOE0xhhjjDF+ZQmnMcYYY4zxK0s4TTYislNEhgW7HfkhIi4RcRag/lgR\n+dqfbTLGGGOML0s4SxkR+bcnCUsXkVMiskNEHhOR0vq9rgosKeA5ub7PVURqez6/jO0PEdkiIi+L\nSIO/1lRjjDEmNJXWJCTULcGdiDUAngPGAg8GtUV+oqoHVTWtqC8LXI37M7wIeBhoAmwWkY5FHCsb\nEQn3dwxjjDEmkCzhLJ1OqeohVd2rqv8EVgJ/yzgoIjd6Ru1SPbfPH8jtQiIyU0Q+yVIWLiIHRGSA\nZ3+ViEwVkUkickREfhGRsVnOiReRj0TkuIgcE5G5InJepuNjReRrERkgIrs99V4WEYeIjPJc84CI\nPJLluj631EVkoohsF5GTIvKjiDwhImEF/PwEOOpJZnep6ieq2gnYAMwUEckU728ikigiKSLyg4g8\nnnk0WUQaicgaz/HvRKRD5jZnGlHtLSKfi0gycIvnWDsRWS0iyZ7PZKqIRGe6dhkRmSwiP4vICRFZ\nLyJXFbCvxhhjjN9ZwhkaUoEyACLSEpgLvAs0xT36+aSI9Mvl3BlAFxGpkqmsO1AWeC9TWT/gBHAZ\nMAp4XEQ6eWIK8DEQB7QHrgHqZTkfoD7QFegC9AXuBBYD1YErgYeAp0SkVR59/cPTlibAMM81hudR\nvyCmArWBlgAi0h6YDbwANAYGAbcDYzzHHcBHwHGglef4RHK+pT8BeNHT7mUiUg/3SPX7uL9PfYAr\ngNjIzcwAAASWSURBVGmZznkFaA30Bpp56i4RkfpF1F9jjDGmaKiqbaVoA/4NfJBp/xogBZjo2X8b\nWJrlnEnAd5n2dwLDMu1vAR7MtP8RMDPT/irgiyzX3AA84/n6WuA0UD3T8SaAC2jp2R+LOzGLzlRn\nCfBjlusmAaMy7bsAZx6fxwhgY6b9scCmPOrX9lzzohyONfIc6+XZXwE8lKXOrcA+z9ddgVNA5UzH\nO2Vuc6Z4Q7Nc5w3g1Sxl7YAzuH95qAWkAVWz1FkBPBXsv4e22WabbbbZlnmzZ8VKp+4ichyIwH17\n+B1gvOdYE2BhlvprgftERFQ1p9G3GcBdwGTPSOd1QIcsdb7Nsv8LkHHLvDGwV1X3ZxxU1SQR+f3/\n27u/EM3mMIDj36eRZIcry4V2o/ypQVPaMEspcSNpr0gpcqW0ouRqd9uklqLU5oJyYUUpicaFdjey\nYWu1/rRYdjQ2225ENmWU0j4unjM6jnlf8846lpnv5+6c83t/v/e8c/P0PM/vN8332d/cPpyZv7Tm\n+I4KsOjcO5cBIuJ2YCOVLR0HTgN+GjR+RPOl9PnfaBJYHxGbWmPGgNMj4gzgEuq9v2893zdg7v2d\n60ngioi4c4H1L6Tebww41C7xU8HoD4t5GUmS/i0GnMvTW8C9VAbsWGaeOMn5dgDbIuJqKss2m5nv\nd8Z0N+4ko7dsLDTHoueNiCkqg7sZ2EkFmncAA3tURzTRrD/bXI8DW4BXFxj764hzz3Wux4FnqDJ+\ndJ59QwWkvwFXUhnStp9HXFuSpF4ZcC5Pc5n59YBnB6lewLbrgEMDsptk5o8R8RpwDzBFle1HcRBY\nExHnZ+ZRgIiYoHo6PxtxrmGmqCzpY/M3IuKCJczzl9+hySLeT7UbfNzc/hC4NDNnu+Obz3xJvffq\nVpbzqsWs18w9Mejv2JwlOgacl5nvDXsZSZJONQPOledJYF9TBn4ZWA/cR2VEh3kOeIPKLj4/yoKZ\nuTsiPgVejIgHqVL/08DbmflPHsI+A6xtyuofALcAG5YwTwDnNO0DZ1Kbdh4A1gE3twLzR4DpiDgC\nvEJlGieByzNzM9VPOQvsiIiHgbOBR6kAMzvrdT0O7I2I7VRLwxxwGXBjZm7MzJmIeKmZ+yHgI6rV\n4Abgk8wc9WxSSZJ64y71FaYJ8G6jdj0fALYCmzLzhfawBT63m+rLfDMzv+0+XsTStwLHgXeocvdX\n1E70UXXX+uM6M6epHePbqQDsGiooXMoau4BjVG/qNuBzaiPRntZ6O6mg9iaqN3MvFZgebp6foI6j\nWtU8f5YKOIM6OWDQO5GZB4DrgYuBPVTGcytwtDXsbqrd4QngC6q0v44quUuS9J8RA6qo0p9ExCoq\n2LkrM18/1d/n/yoirqUCyIuGtD1IkrSsWFLXUE3v4mrqeKHjwPTwT6gtIjZQm3hmqGzlU8C7BpuS\npJXEgFN/Zy21UeYIld082R3vK81ZVD/mGuq4ol0s038zKknSIJbUJUmS1Cs3DUmSJKlXBpySJEnq\nlQGnJEmSemXAKUmSpF4ZcEqSJKlXBpySJEnqlQGnJEmSemXAKUmSpF79Dhokpa0EgJrdAAAAAElF\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x164988d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# one thing to note is that you might not always see the U-shape, \n",
"# e.g. if the number of points is large, the U would be off the chart to the right -\n",
"\n",
"calculateAndPlotComplexityCurves(f, noise=0.0, npoints=50, maxDegree=8)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusions\n",
"\n",
"When a model is not complex enough to model the data, it's said to be **underfitting**, and is in a regime of **high bias**.\n",
"\n",
"When a model is too complex, it's said to be **overfitting**, and is in a regime of **high variance**.\n",
"\n",
"There should be a happy medium somewhere in between the two.\n",
"\n",
"You can use a **learning curve** to diagnose these problems - if the training and testing errors converge towards a relatively high value, the model is probably **underfitting**. If there is a gap between them, and the training error is very low, the model is probably **overfitting**. \n",
"\n",
"When a model is **underfitting**, you should increase the model complexity - e.g. by adding more features. Adding more data is not likely to solve the problem.\n",
"\n",
"When a model is **overfitting**, you should decrease the model complexity - e.g. by removing more features. Adding more data might also help. \n",
"\n",
"You can also use a **complexity curve** to identify a good amount of complexity for the model - there is a characteristic U-shape with the lowest area in between the underfitting and overfitting areas. \n"
]
}
],
"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.12"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment