{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Programming Exercise 5 - Regularized Linear Regression and Bias v.s. Variance" ] }, { "cell_type": "code", "execution_count": 274, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# %load ../../../standard_import.txt\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "\n", "from scipy.io import loadmat\n", "from scipy.optimize import minimize\n", "\n", "from sklearn.linear_model import LinearRegression, Ridge\n", "from sklearn.preprocessing import PolynomialFeatures\n", "\n", "pd.set_option('display.notebook_repr_html', False)\n", "pd.set_option('display.max_columns', None)\n", "pd.set_option('display.max_rows', 150)\n", "pd.set_option('display.max_seq_items', None)\n", " \n", "#%config InlineBackend.figure_formats = {'pdf',}\n", "%matplotlib inline\n", "\n", "import seaborn as sns\n", "sns.set_context('notebook')\n", "sns.set_style('white')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dict_keys(['__version__', 'y', '__globals__', '__header__', 'Xtest', 'X', 'yval', 'Xval', 'ytest'])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = loadmat('data/ex5data1.mat')\n", "data.keys()" ] }, { "cell_type": "code", "execution_count": 142, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "X_train: (12, 2)\n", "y_train: (12, 1)\n", "Xval: (21, 2)\n", "yval: (21, 1)\n" ] } ], "source": [ "y_train = data['y']\n", "X_train = np.c_[np.ones_like(data['X']), data['X']]\n", "\n", "yval = data['yval']\n", "Xval = np.c_[np.ones_like(data['Xval']), data['Xval']]\n", "\n", "\n", "print('X_train:', X_train.shape)\n", "print('y_train:', y_train.shape)\n", "print('Xval:', Xval.shape)\n", "print('yval:', yval.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Regularized Linear Regression" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nQPn5+crPz1doaKhGjx6tM2fOKDo6WseOHVPDhg01b948eXl5VeoHAwDgRmMx1ENCQhQYGKjx48er\nXbt25vaOHTsqKCjomu+tXr26li9fLk9PTxUWFuqJJ57Qzp07tXHjRgUFBWnYsGFavHixFi1apLFj\nx1b80wAAcAOzOPweHx+vuXPnlgr0ElOnTrW4A09PT0nFvfaioiLVrVtXiYmJCg8PlySFh4fr+++/\nt7VuAABwmTJDfc+ePZKk+vXrl/nmktdcS1FRkfr06aPOnTsrICBATZs2VWZmpnx9fSVJfn5+nO8O\nAEAlKHP4fenSpcrKylKvXr3Utm1bNWjQQJKUnp6u3bt3a926dfL29ta8efOuuQM3NzetWbNG586d\n09ChQ5WSknLFpWW51CwAABVXZqjPmzdPaWlpWr16tVasWKGjR4/KZDLJ399fgYGBiomJUYsWLaze\nUe3atdWlSxft27dPPj4+OnXqlHx9fZWRkcFFbAAAqATXXCjXvHlzTZgwodwbz8rKUrVq1eTl5aUL\nFy7op59+0osvvqiQkBDFx8dr+PDhSkhIUGhoaLn3AQAAill169XyysjI0Pjx42UYhoqKihQWFqag\noCC1aNFCo0aNUlxcnPz9/S0O4QMAAMvsGup33323EhISrmivV6+eli1bZs9dAwBww7HqinIAAKDq\nI9QBAHARFoffL1y4oHXr1unw4cOlbsE6btw4uxYGAABsYzHUX3zxRbm5uenee+9V9erVHVETAAAo\nB4uhfvz4ca1fv94RtQAAgAqwOKfepEkTnTx50hG1AACACrBq+D0yMlItWrRQjRo1zO1vv/22XQsD\nAAC2sRjq48ePV2hoqO655x65u7s7oiYAAFAOFkM9Pz9fkyZNckQtAACgAizOqbdt21b//Oc/HVEL\nAACoAIs99T179qhv37664447Ss2pr1692q6FAQAA21gM9VdffdURdQAAgAqyGOoBAQGOqAMAAFSQ\nxVDPzs7W+++/r9TUVF28eNHcvnz5crsWBgAAbGNxoVxsbKzc3Nx08OBB9e/fX+7u7mrdurUjagMA\nADawGOqHDh3SqFGjVLNmTT366KNatGiRduzY4YjaAACADSyGeslNXKpVq6bTp0+rWrVqysrKsnth\nAADANhbn1Bs3bqzTp0+rd+/eevzxx+Xl5aV7773XEbUBAAAbWAz1OXPmSJIGDx6sVq1aKTs7Ww8+\n+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\nJOM/V//lWJX2xhtvKD8/X0OGDJEktWnTRq+99hrH6Src3d01ceJEDRkyxHyPhiZNmji7rCph586d\nWrt2rZo1a6Y+ffrIZDIpOjpaw4YN06hRoxQXFyd/f3/NmzfP2aVWScOHD+c4XcWECRM0duxYFRQU\n6Pbbb9f06dNVWFho07Hi2u8AALiIKj38DgAArEeoAwDgIgh1AABcBKEOAICLINQBAHARhDoAAC6C\nUAcuUVBQoLfffls9evRQWFiYIiIiNHPmTBUWFiohIUFRUVHOLvEK+/bt08svv+zw/X700UeVds3u\nd999V7NmzaqUbV3u2LFj6tSpU5nP79+/X88++6zF7cycOVNff/11ZZYGVLoqffEZwNHGjx+vvLw8\nrVmzRp6enioqKlJcXJzy8vIkVc1rVLds2VKzZ892+H4/+ugjde7c2eZLfBYWFsrd3d1OVV3dtf7d\n5s+fr2eeecbiNgYPHqyhQ4eqZ8+elVkaUKkIdeA/Dh06pMTERP3973+Xp6enJMnNza3ULSPPnTun\n6Oho/etf/1KdOnU0f/58+fj4aP/+/frb3/6m3Nxc5eXlqX///nr66aclSTExMapevboOHjyoEydO\nqF27dpoxY4ak4uupv/LKK8rMzFTDhg1lGIYefPBBDRgwQOfOndOMGTO0f/9+Xbx4UYGBgYqJibki\noLZt26aZM2cqLi5Ox44dU9++ffX4449r8+bNunDhgqZOnar27duXes/58+cVEhKiLVu2yGQyqVev\nXurUqZMmTpyoPXv2aNq0afr888+1bt06LV++XAUFBZKkcePGqVOnTlq4cKFOnjypqKgo1ahRQ3Pm\nzNGf/vQnvfXWW9qxY4fy8vJ0991367XXXpOnp6diYmLk7u6u33//XefPn1dCQsI1/y3ef/99bdiw\nQQUFBWrQoIHeeOMN1apVS8HBwfrmm29Ur149ScW959q1a+uFF17Q7t27NXfuXOXk5EiSoqKizHfh\nK0tWVpb27dun++67T5K0fft2TZgwQXFxcapdu7ZiYmLk5+en0aNHq379+rr55pu1a9cutWvX7prb\nBZyF4XfgP3799Vc1btxYtWvXLvM1+/bt0/jx47Vu3To1adJEK1askCQ1bNhQy5YtU3x8vFauXKkv\nvvhC//73v83vO3DggJYsWaJ169Zp37592rJliyRp6tSp6tSpk9auXauJEydq+/bt5vfMmDFDAQEB\nWrlypdasWaPMzEytXr36qnVdGvSnT59W+/btlZCQoOeff/6qvfibbrpJTZo00d69e5WRkaGaNWtq\n586dkoqvOX3//fdLkh588EGtXLlS8fHxmjt3rl555RVJ0ogRI1S/fn3Nnz9fCQkJatKkiZYsWaI6\ndeqY6/Xz89OiRYvM+0xLS9PSpUstBvr//u//6siRI+b9dunSRdOnT1fNmjX18MMPa926dZKKe/zr\n1q1TRESEsrOz9dprr+nNN99UXFycFi5cqEmTJuncuXPX3Ne2bdvUsmVL8+P77rtPffr0UWxsrNas\nWaNDhw5p1KhR5ufbtWtn/rcDqiJ66oAN2rVrZ757W5s2bcx/4HNzczV58mSlpaXJzc1NGRkZSktL\n05133imp+OZE1apVkyTdc889Onz4sIKCgpSSkqIJEyZIkm677TYFBQWZ97Vx40bt3bvXfEvdCxcu\n6JZbbrFYY61atcw91LZt25rvmXC5Tp066ccff9Rtt92mrl27atu2bUpPT9dPP/2k559/XlLx6MXb\nb7+t9PR0eXh4KDMzU5mZmfLx8ZEkXXqV6Y0bNyonJ0fffPONJCk/P1/Nmzc3P9+jRw/VqFHDYv0b\nN27UL7/8oj59+kgqDu86depIkvr06aOpU6fqqaeeUnJyspo0aaJbb71VycnJOnr0qIYNG2auyd3d\nXYcOHTL36q/m6NGjV9yNb8SIEfrrX/+qWbNmKSEhQW5u/+37NGjQQHv37rX4GQBnIdSB/7jnnnt0\n8OBBZWdny8vL66qvuTSU3N3dzcPSb775pvz8/DRr1iyZTCYNHTrUPA8vqdQd4S59nyX/8z//o4YN\nG9r0OS7dl5ubmwoLC6/6uk6dOmn+/Pny9/dXZGSk3N3dtWnTJqWmppqHl8eMGaOYmBiFhITIMAy1\nadNGFy9evOr2DMPQ5MmTFRgYeNXnb7rpJqvqNwxDzz33nCIiIq54rkOHDsrJydH+/fu1Zs2aUq9p\n3ry5eeTkUseOHbNqvyWys7N1/PhxVa9e3Xyr5xJVcU0FcCmG34H/aNSokUJCQjRp0iTzvGxhYaFW\nrVql3Nzca743Oztbt956q0wmk/bv368dO3ZYtc/AwEDzcPTx48fNtxqWim/juXjxYhUVFUmS/vjj\nDx09etTiNi+/R1NZ92xq27at/vnPf2rXrl1q06aNgoKCtHjxYrVs2dI8qpCdnS1/f39J0urVq5Wf\nn29+v5eXl7Kzs0vV++GHH5pDPycnR7/99pvFei8XEhKiTz/9VGfPnpUk5eXlKS0tzfx8eHi4li5d\nqh07dqhHjx6SikdQDh48qJSUFPPrLu1Rl3UM/P39lZ6eXqotJiZG/fv314wZMxQdHa3z58+bnztx\n4oT5eABVET114BIzZ87U/PnzFRERoerVq8swDHXp0qVU7/dqnnvuOY0bN06rV69W48aNzQuvLImN\njdUrr7yidevWyd/fX23atDGPEsTExGj27NkKCwuTVDxKEBsba7HnfnlvsqzeZbVq1dSqVSt5eHjI\n3d1drVq1UnZ2dqnTv2JjY/X888+rbt26evDBB0sNZT/11FMaP368brrpJs2ZM0fPPvus3nnnHfXr\n108mk0lubm568cUXbb5da1hYmE6fPq2nnnpKJpNJRUVFevLJJ81D+WFhYerWrZv69u1rHjmpU6eO\nFixYoJkzZ2r69OnKy8vTn/70Jy1cuPCax+C+++4rtebgo48+Ul5ennk1fM+ePTVx4kTNnTtXkrRr\n1y699NJLNn0ewJG49SrgRBcvXjSHakZGhiIjI7Vs2TI1btzY2aXdMF544QUNGjRIAQEB13zdyZMn\nNWTIEPNCPaAqoqcOONHBgwf1yiuvyDAMFRYW6sUXXyTQHSwqKkpvvfWWxVD/8MMP9cILLzioKqB8\n6KkDAOAiWCgHAICLINQBAHARhDoAAC6CUAcAwEUQ6gAAuAhCHQAAF/H/oo8sIhncG8oAAAAASUVO\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X_train[:,1], y_train, s=50, c='r', marker='x', linewidths=1)\n", "plt.xlabel('Change in water level (x)')\n", "plt.ylabel('Water flowing out of the dam (y)')\n", "plt.ylim(ymin=0);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Regularized Cost function" ] }, { "cell_type": "code", "execution_count": 214, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def linearRegCostFunction(theta, X, y, reg):\n", " m = y.size\n", " \n", " h = X.dot(theta)\n", " \n", " J = (1/(2*m))*np.sum(np.square(h-y)) + (reg/(2*m))*np.sum(np.square(theta[1:]))\n", " \n", " return(J)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Gradient" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def lrgradientReg(theta, X, y, reg):\n", " m = y.size\n", " \n", " h = X.dot(theta.reshape(-1,1))\n", " \n", " grad = (1/m)*(X.T.dot(h-y))+ (reg/m)*np.r_[[[0]],theta[1:].reshape(-1,1)]\n", " \n", " return(grad.flatten())" ] }, { "cell_type": "code", "execution_count": 215, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "303.951525554\n", "[ -15.30301567 598.16741084]\n" ] } ], "source": [ "initial_theta = np.ones((X_train.shape[1],1))\n", "cost = linearRegCostFunction(initial_theta, X_train, y_train, 0)\n", "gradient = lrgradientReg(initial_theta, X_train, y_train, 0)\n", "print(cost)\n", "print(gradient)" ] }, { "cell_type": "code", "execution_count": 122, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def trainLinearReg(X, y, reg):\n", " #initial_theta = np.zeros((X.shape[1],1))\n", " initial_theta = np.array([[15],[15]])\n", " # For some reason the minimize() function does not converge when using\n", " # zeros as initial theta.\n", " \n", " res = minimize(linearRegCostFunction, initial_theta, args=(X,y,reg), method=None, jac=lrgradientReg,\n", " options={'maxiter':5000})\n", " \n", " return(res)" ] }, { "cell_type": "code", "execution_count": 119, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ " njev: 15\n", " x: array([ 13.08790351, 0.36777923])\n", " message: 'Optimization terminated successfully.'\n", " success: True\n", " nit: 4\n", " nfev: 15\n", " hess_inv: array([[ 1.03142187, 0.00617881],\n", " [ 0.00617881, 0.001215 ]])\n", " jac: array([ 1.38304183e-12, -2.30537663e-10])\n", " fun: 1604.400299920117\n", " status: 0" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit = trainLinearReg(X_train, y_train, 0)\n", "fit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Comparison: coefficients and cost obtained with LinearRegression in Scikit-learn" ] }, { "cell_type": "code", "execution_count": 127, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 13.08790351 0.36777923]\n", "1604.40029992\n" ] } ], "source": [ "regr = LinearRegression(fit_intercept=False)\n", "regr.fit(X_train, y_train.ravel())\n", "print(regr.coef_)\n", "print(linearRegCostFunction(regr.coef_, X_train, y_train, 0))" ] }, { "cell_type": "code", "execution_count": 124, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(np.linspace(-50,40), (fit.x[0]+ (fit.x[1]*np.linspace(-50,40))), label='Scipy optimize')\n", "#plt.plot(np.linspace(-50,40), (regr.coef_[0]+ (regr.coef_[1]*np.linspace(-50,40))), label='Scikit-learn')\n", "plt.scatter(X_train[:,1], y_train, s=50, c='r', marker='x', linewidths=1)\n", "plt.xlabel('Change in water level (x)')\n", "plt.ylabel('Water flowing out of the dam (y)')\n", "plt.ylim(ymin=-5)\n", "plt.xlim(xmin=-50)\n", "plt.legend(loc=4);" ] }, { "cell_type": "code", "execution_count": 221, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def learningCurve(X, y, Xval, yval, reg):\n", " m = y.size\n", " \n", " error_train = np.zeros((m, 1))\n", " error_val = np.zeros((m, 1))\n", " \n", " for i in np.arange(m):\n", " res = trainLinearReg(X[:i+1], y[:i+1], reg)\n", " error_train[i] = linearRegCostFunction(res.x, X[:i+1], y[:i+1], reg)\n", " error_val[i] = linearRegCostFunction(res.x, Xval, yval, reg)\n", " \n", " return(error_train, error_val)" ] }, { "cell_type": "code", "execution_count": 222, "metadata": { "collapsed": false }, "outputs": [], "source": [ "t_error, v_error = learningCurve(X_train, y_train, Xval, yval, 0)" ] }, { "cell_type": "code", "execution_count": 227, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgIAAAFwCAYAAADKRxObAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYVHfa//H3FHpvDlIEIxpsrIpKXA1GiLqgRkhcTdMk\numo21ST6xLJriYtpjxuSuAXd7E9TdveJUhIjRlfNRo0xiSYr9o70kY7SBmbO7w9wlGBBZRiQ+3Vd\nXDBnzjlzz4jMZ77nW1SKoigIIYQQolNSW7sAIYQQQliPBAEhhBCiE5MgIIQQQnRiEgSEEEKITkyC\ngBBCCNGJSRAQQgghOjEJAkLcpJkzZ5KWlmbtMtpMcXExjz32GOHh4bz55pu3fb7U1FQeffRR8+2B\nAweSk5Nz2+ftjPLz8xk0aBAyClzcDq21CxCipaKiokhISGDYsGFWrWPNmjVWffy29n//9394eXmx\nf//+VjunSqUy//zTTz+12nk7m65du/Ljjz9auwzRwUmLgBBXMBqN1i7htrX2c8jLy6NHjx7topbW\n0pK6Wrv29vpaCCFBQNwRvvrqK+Li4hgyZAiPPPIIx48fN9+3evVqRo8ezaBBgxg/fjzbtm0z35ea\nmsojjzzC66+/TkREBKtWrTI3Xb/55psMHTqU+++/n507d5qPmTp1Khs2bDAff719c3JyePzxxwkP\nD2f69Om89tprzJs375rPY9u2bcTFxREeHs6YMWPYvXs30NAa8u2335r3W7Vqlfk8ubm5hIaGsmHD\nBkaNGsWTTz7JzJkz+eSTT5qce+LEiebnfvr0aaZPn05ERAQxMTFs3rz5qvUsWLCAtLQ01qxZw6BB\ng/j2228xGAwkJCRw7733EhkZyYoVK6irqwPg+++/Z+TIkaxZs4YRI0awcOHC6/yrNQgNDSU7O9v8\neK+99hqzZ89m0KBBTJkyxXzfjer++uuviY+PJzw8nFGjRrFq1SrzfVd7jX7uWrVf73fr8OHD5sd8\n8cUXeemll3j33Xdv+XyrV68mMjKSQYMGERMTw969ewHIyMjgoYceIjw8nBEjRpgv0Vx6XiaTCYDz\n58/z29/+loiICMaOHcv69evN5161ahVz5szh1VdfZdCgQUyYMIHDhw/f8N9HdAKKEB3EqFGjlD17\n9jTbfvjwYWXYsGFKRkaGYjKZlNTUVGXUqFGKwWBQFEVRvvzyS6WwsFBRFEVJT09XBgwYYL6dkpKi\n9OnTR/n4448Vo9Go1NbWKikpKUrfvn2V9evXKyaTSfnHP/6hjBgxwvx4jz/+uLJ+/Xrz8dfbd8qU\nKcpbb72l1NXVKfv27VMGDRqkzJs376rP78CBA0p4eLj5Oer1euXMmTNXfe7vv/+++Tw5OTnK3Xff\nrbz66qtKTU2NUltbq6SmpioPP/ywef+TJ08qQ4YMUerq6pSqqipl5MiRSmpqqmIymZSjR48q99xz\nj3Lq1Kmr1jV//nwlMTHRfDsxMVGZMmWKUlJSopSUlChTpkxR3n33XUVRFOW7775T+vTpo6xcuVIx\nGAxKbW1ts/OlpKQojz76qPl2aGiokpWVZX6siIgI5eDBg4rRaFReeeUV5eWXX1YURblh3d9//71y\n4sQJRVEU5fjx48rw4cOVbdu2NXuNqqurr1rX1Wq/3u+WwWBQRo0apXz00UdKfX29snXrVqVv377m\n1+pmz3fmzBll5MiR5t/N3Nxc8+syZcoU5bPPPjO/DgcOHDA/r9DQUMVoNCqKoiiPPvqo8tprrykG\ng8H8+uzdu9f8OxMWFqbs3LlTMZlMysqVK5XJkydf9d9cdC7SIiA6vE8//ZSHH36Y/v37o1KpiIuL\nw9bWlgMHDgAwduxYvL29AYiJiSEoKIiMjAzz8Tqdjsceewy1Wo2trS0A/v7+TJo0CZVKRXx8PIWF\nhRQXF1/18a+1b35+PocOHeKFF15Aq9USHh5OVFTUNZ/Hhg0bmDRpkrkPRJcuXejevXuLXgOVSsXz\nzz+PnZ0dtra2jB49mmPHjpGfnw/Axo0bGT16NFqtlq+++oqAgADi4uJQqVSEhoYyevRovvzyyxY9\n1hdffMGzzz6Lh4cHHh4ePPfcc3z22Wfm+9VqNc8//zw2Njbm1/N6lJ91dBs9ejT9+vVDrVYzYcIE\njh49CnDDuocMGULPnj0B6NWrF7Gxsfzwww/NXiN7e/tr1vXz2q/3u3XgwAGMRiOPP/44Go2G0aNH\nExYWdsvn02g01NXVcfLkSerr6/Hz8yMwMBAAGxsbsrKyKC0txcHBodnjQEPHwf/+97/MnTsXGxsb\nQkND+fWvf92kY2t4eDj33nsvKpWKiRMnNmmNEJ2XdBYUHV5eXh6fffYZH3/8MdDwxlJfX8/58+cB\nSEtLY+3ateTm5gJQXV1NaWmp+XhfX99m57wUHADs7e0BqKqqwsvLq8X7lpSU4Obmhp2dnfn+rl27\nUlBQcNXnUVBQwMiRI1v2pK/iyufh5OTEyJEj2bRpE7/5zW/YtGkTCQkJQMPr9d///pehQ4cCDa+X\n0Whk4sSJLXqc8+fP4+fnZ77t5+dnfq0BPD09sbGxueXnceXr6eDgQFVV1XXrjouLA+DAgQOsXLmS\nkydPUldXR11dHb/61a+anPtq/9ZX+nntN/rd0ul0TY7v2rXrLZ9v8ODBLFy4kPfff5/Tp08zYsQI\nXn31Vbp06UJCQgLvvvsuMTExBAYG8uyzz3Lfffc1eazCwkLc3NxwcHAwb/Pz82vS/P/z39Xa2lpM\nJhNqtXwm7MwkCIgOz9fXl6effprZs2c3uy8vL4/f//73fPjhhwwcOBCAuLi4Jp9Cr+zB3pp8fHwo\nLy+ntrbWHAby8/Ov+Xi+vr5NrodfydHRkZqaGvPtwsLCZvv8/Lzjx49n1apVDB48GIPBQEREBNDw\nZhUREcEHH3xwS89Lp9ORm5tr7kCYl5dHly5drllHa7lR3XPnzmXq1Kl88MEH2NjYsGLFCsrKyprs\nc6Pafn7/9X63fvjhB/R6fZNt+fn5dOvW7ZbOBzBu3DjGjRtHZWUlixcvZuXKlbz55pt069aNlStX\nArBlyxZeeOEFvv/++ybHdunShfLycqqqqnB0dDTXc+W/jRBXIzFQdCh1dXUYDAbzl9FoZPLkyfzr\nX/8yN/dXVVXx9ddfU1VVRXV1NWq1Gg8PD0wmE8nJyZw8ebJNavXz86Nfv368//771NXV8dNPP/HV\nV19dc/9JkyaRkpLC3r17URQFvV7PmTNngIYOdZs2baK+vp6DBw+yZcuWJsf+vHkdIDIykry8PN57\n7z1iY2PN2++77z7Onj3LZ599Rn19PXV1dRw8eJDTp0+36HnFxsbyl7/8hZKSEkpKSvjzn//c4taE\n23Gtui+9RlVVVbi6umJjY0NGRgZffPFFk+Ov9hrdyPV+twYMGIBGo+GTTz7BaDSybdu2JpecbvZ8\nZ8+eZe/evRgMBmxsbLCzszN/Uv/8888pKSkBwMXFBZVKZb7v0vPy9fVl4MCB/PGPf8RgMHDs2DE2\nbNhw3X+bW3lNxJ1HWgREh3Lpk5SiKKhUKp5++mlefPFFli9fzmuvvUZWVhZ2dnaEh4czZMgQevTo\nwVNPPcWUKVNQq9XExcUxaNCgm37cKz/Z3cynyrfffpv58+dzzz33EBYWRmxsrLmH98+FhYWxYsUK\nVqxYQU5ODj4+PixevJi77rqLF198kVdeeYWhQ4cydOhQJkyYQHl5+XVrutRXICUlhZdfftm83cnJ\nib///e+8/vrrvPHGGyiKQmhoKPPnz2/Ra/HMM89QWVnJAw88gEqlIiYmhqeffrpFx15NS1sQblT3\nkiVLeOONN1i+fDlDhgwhNjaWioqKm36cK/Xr1++av1s2Nja8//77LFq0iJUrVxIZGUlUVNR1+0Vc\n73wGg4GVK1dy5swZtFotAwcOZPny5QDs2rWLN954g5qaGvz9/XnnnXfMj3Pl81q5ciVLlizh3nvv\nxc3NjRdffJF77rnnmvVYqvVGdCwqxcKRcN26deahVr/+9a+ZNm0a5eXlvPTSS+Tm5hIQEEBiYiIu\nLi4AJCUlkZycjEajYdGiRYwYMQJoGKYzf/58DAYDkZGRLFq0yJJlC2ERL730Ej169OC5556zdinC\nAiZPnswjjzxCfHy8tUsRosUsemng5MmTbNiwgeTkZNLS0vjPf/5DVlYWq1evZtiwYWzZsoWIiAiS\nkpIAOHXqFJs3byY9PZ01a9awbNkyc9PV0qVLSUhIYMuWLWRmZrJr1y5Lli5Eqzh48CDZ2dkoisLO\nnTvZsWMH999/v7XLEq3khx9+oKioCKPRSGpqKidOnODee++1dllC3BSLBoHTp0/zi1/8AltbWzQa\nDYMHD2br1q3s2LHDnJjj4+PNk5zs2LGD2NhYtFotAQEB5mFehYWFVFZWmofMxMXFNZkURoj2qqio\niKlTpzJo0CBWrFjBsmXLCA0NtXZZopWcPXuWiRMnMmTIENauXct7773XpGe+EB2BRfsI9OzZk8TE\nRMrLy7G1tWXnzp3069eP4uJi838WHx8fcycYvV7PgAEDzMfrdDr0ej0ajabJsJ9L24Vo70aNGsWo\nUaOsXYawkMmTJzN58mRrlyHEbbFoEOjRowczZ87kqaeewsnJid69e191vKolOqzU1NRw6NAhfHx8\n0Gg0rX5+IYQQoj0xGo0UFhbSr18/85wmLWHxUQMPPfQQDz30EADvvPMOvr6+eHl5UVRUhLe3N4WF\nhXh6egINn/QvzYQGDROs6HS6Ztv1en2ziTx+7tChQzz22GMWeEZCCCFE+/XJJ58wePDgFu9v8SBQ\nUlKCp6cneXl5/Pvf/+bTTz8lJyeHlJQUZs2aRWpqKtHR0UDDwipz587lySefRK/Xk5WVRVhYGCqV\nChcXFzIyMujfvz9paWlMnTr1uo/r4+MDNLwgN5pNTAghhOjoCgoKeOyxx8zvfy1l8SDw/PPPU15e\njlarZcmSJTg7OzNz5kzmzJlDcnIy/v7+JCYmAhASEkJMTAzjxo0z73/pssHixYtZsGABtbW1REZG\nEhkZed3HvXQ5wNfXl4CAAMs+SSGEEKKduNnL4RafR8BacnJyiI6OZvv27RIEhBBC3PFu9X1PphgW\nQgghOjEJAkIIIUQnJkFACCGE6MQkCAghhBCdmAQBIYQQohOTZYiFEEK0qbKyMp588klUKhWFhYWo\n1Wo8PT1RqVSsX78erfbGb00LFy5k1qxZBAcHX3OfTz75BDc3N8aPH9+K1d95JAgIIYRoU+7u7qSl\npQGwatUqnJyceOqpp5rtpyjKNaegX7FixQ0fp61nlzUajU3G8P/8dkuPa2sSBIQQQrQLWVlZ/Pa3\nv6V3794cO3aMv//976xatYojR45QW1tLTEwMzzzzDACPPvooixcvpmfPntxzzz08/PDD7Ny5EwcH\nB/785z/j6elJYmIinp6eTJs2jUcffZTw8HD27t3LxYsXef311xkwYADV1dW8+uqrnDlzhrvuuovc\n3FwSEhKarRJ68OBB3nrrLaqqqvDy8uKNN97A09OTRx99lP79+7N//34eeOABDh48iJOTE4cPHyYi\nIoIZM2awcOFCcnNzcXJyYvny5YSEhJCYmEh+fj5ZWVkEBgby1ltvWeMlByQICCFEp/b3jYf55kBu\nq55z+C/8mT6h7y0de/bsWd5++2369OkDwNy5c3F1dcVoNDJt2jTGjh1Ljx49mhxz4cIFIiIieOWV\nV3jjjTdITk5m5syZVz3/+vXr2bFjB6tWreJvf/sbH330ET4+Prz33nscO3bMvDbOlQwGAwkJCfz1\nr3/F3d2djRs3kpiYyGuvvQaAyWRiw4YNAMybN4+ioiLWr18PwNKlSxkwYAB/+ctf+Oabb3j11VdJ\nTk42P9dPPvkEGxubW3qtWosEASGEEO1GYGCgOQQAbNy4keTkZOrr6yksLOT06dPNgoCDgwMjRowA\noG/fvuzfv/+q5x49erR5n7y8PAB+/PFHc2gIDQ0lJCSk2XFnzpzh1KlTPPXUUyiKgslkomvXrub7\nY2Njm+z/q1/9yvzz/v37WbNmDQDDhw9nwYIF1NTUABAdHW31EAASBNpUbb0BrVqDRi3LIgsh2ofp\nE/re8qd3S3B0dDT/fO7cOT788EOSk5NxdnZm3rx51NbWNjvmyjdTjUaD0Wi86rltbW1vuM/VZt1X\nFIXQ0FA+/vjjqx7j4OBwzdvX6uNwteOsRYYPtqH5W18n8dsPrF2GEEK0W1e+EV+8eBFnZ2ecnJw4\nf/48u3fvvuExN2vQoEFs3rwZgOPHj3PmzJlm+/To0QO9Xk9GRgYAdXV1nDp1qkXnHzx4MJ9//jkA\ne/bsQafTYW9vf8v1WoK0CLQhEyYO6Y9dtyesEEJ0Zlf+bezbty89evQgJiYGf39/wsPDr7pfS/6e\nXmufxx9/nPnz5zN+/Hh69OhBjx49cHFxabKPra0t7733HsuXL+fixYsoisJTTz1FSEhIs/P+/Pbz\nzz/PwoULeeCBB3BycuKNN964Ya1tTVYfbEPv7Pkb32bv50/j/4CPk5e1yxFCiE7PaDRiNBqxtbXl\n3LlzzJgxg61bt6JWd7wG81t935MWgTbU3SOQb7P3c7Y0W4KAEEK0A1VVVTzxxBPmPgPLly/vkCHg\ndkgQaEPB7g0JLbMsh6EBA6xcjRBCCBcXF1JSUqxdhlV1rthjZcEegQBklmZbuRIhhBCigQSBNuRu\n74q7vSuZZTnWLkUIIYQAJAi0ue4egRRVlXCh9qK1SxFCCCEkCLS1oMZ+AuekVUAIIUQ7IEGgjXVv\n7CdwtlSCgBCic5o2bRrffPNNk23r1q1j2bJl1z1u4MCBAJw/f54XX3zxqvtMnTqVw4cPX/c869at\nazJD4ezZs7l4sfO20koQaGPB7o0dBsukw6AQonOaMGECX3zxRZNt6enpjB8//rrHXZqsp0uXLrz7\n7ru3/Pjr1q2jurrafDspKQlnZ+dbPt/N+PnUxtea6vhGx7UmGT7YxnTO3thr7WTkgBCi0xozZgyJ\niYnU19ej1WrJzc2lsLCQ8PBwqqqqeOaZZ6ioqKC+vp4XX3yR6OjoJsfn5uby9NNPs3HjRmpra1mw\nYAHHjx+ne/fuGAwG835Lly7l0KFD1NbWMnbsWJ577jk++ugjzp8/z7Rp0/Dw8GDdunVERUWRkpKC\nu7s7/+///T/zcMJJkybxxBNPkJuby8yZMwkPD+enn35Cp9Pxl7/8xbx2wSUlJSUsXbqU/Px8ABYu\nXMjAgQNZtWoVWVlZZGdn4+fnx4gRI9i6dStVVVWYTCY++ugj3nzzTXbv3o1KpeLpp58mNjaW77//\nnnfffRdXV1fOnj3Ll19+aZF/DwkCbUytUhPkHsDJ4rMY6g3Yam1vfJAQQljIR/9NZm/2j616znsC\nBzF1QPPlfC9xc3Ojf//+7Ny5k6ioKDZt2mResc/Ozo4//elPODk5UVpaypQpU5oFgSv985//xMHB\ngU2bNnH8+HEefPBB830vv/wyrq6umEwmnnjiCcaMGcPUqVNZu3YtH330EW5ubsDllobDhw+TmprK\nhg0bMBqNTJ48mYiICFxcXMjKyuKdd95h+fLlzJkzhy1btjBhwoQmtSQkJPDkk08yaNAg8vPzmTFj\nBunp6QCcPn2af/7zn9ja2pKamsrRo0fZuHEjLi4ubN26lRMnTrBx40aKi4uZNGkSQ4cOBeDIkSNs\n2rQJPz+/W/iXaBkJAlbQ3T2Q40WnySrPI8Qr2NrlCCFEmxs3bhybNm0iKiqK9PR0VqxYATQsIPTH\nP/6RH374AbVazfnz5ykuLsbL6+qzsf7www9MmzYNgLvvvpu7777bfN+mTZtYv3499fX1FBUVcerU\nKXr16oWiKFddqGj//v2MHj0aOzs7oGHZ4n379jFq1Cj8/f3N5+7bty+5ubnNjv/22285c+aM+dxV\nVVXmSxBRUVFNWhB++ctfmtc02L9/P+PGjQPAy8uLoUOHcvDgQZycnAgLC7NoCIA2CAJJSUl8/vnn\nqNVqevXqxeuvv051dTUvvfQSubm5BAQEkJiYaH5BkpKSSE5ORqPRsGjRIvMa04cPH2b+/PkYDAYi\nIyNZtGiRpUu3mGCPSzMMZksQEEJY1dQBD13307ulREdH88Ybb3DkyBFqamro06cPABs3bqS0tJS0\ntDTUajVRUVFXXXr4RnJycszN/M7OzixYsKDJZYObdeWbuEajuWpNiqLw6aefNlkW+ZIrl1e+2u2f\nn+eStliq2KKdBXNzc/n0009JTU1l48aNGI1GNm3axOrVqxk2bBhbtmwhIiKCpKQkAE6dOsXmzZtJ\nT09nzZo1LFu2zPyCLF26lISEBLZs2UJmZia7du2yZOkWZe4wKCMHhBCdlKOjI0OHDmXhwoVNOgle\nuHABT09P1Go1e/fuJS8vz3zf1T7FDxkyhI0bNwJw4sQJjh8/DjQsYezo6IiTkxNFRUXs3LnTfIyz\ns3OTUQKXzjt48GC2bdtGbW0tVVVVbNu2jcGDB7f4OQ0fPpwPP/zQfPvYsWMtOm7w4MGkp6djMpko\nKSlh3759hIWFtfhxb5dFg4CzszM2NjZUV1dTX19PTU0NOp2O7du3Ex8fD0B8fDzbtm0DYMeOHcTG\nxqLVagkICCAoKIiMjAwKCwuprKw0vzBxcXHmYzqiQLeuaFRqzsrIASFEJzZu3DiOHz9ubhaHhhEF\nhw4d4oEHHuDzzz+nR48e5vuutpTwI488QlVVFePGjWPVqlX069cPgNDQUHr37k1MTAzz5s1rsoTx\n5MmT+c1vfsMTTzzR5Lx9+vQhPj6eSZMmMWXKFCZPnkxoaGiLn8+iRYvMtY8fP55//etfLTpu9OjR\n3H333UycOJEnn3yS//mf/7nmpRBLsPgyxJ9++imvv/46Dg4ODB8+nLfffpshQ4bwww8/mPcZOnQo\n33//PcuXL2fAgAHmDhiLFi1i5MiR+Pn58cc//pG///3vAOzbt4+//e1v/PWvf73m47bHZYivNO/L\nP1BwsZB1D77T6Va6EkII0fpu9X3Pou9A2dnZrF27lq+++opdu3ZRXV3N559/3izVXS3l3emCPAKo\nNRrIv3je2qUIIYToxCwaBA4ePMigQYNwd3dHo9Fw//3389NPP+Hl5UVRUREAhYWFeHp6AqDT6czj\nLwEKCgrQ6XTNtuv1enQ6nSVLt7juMrGQEEKIdsCiQeCuu+7iwIED1NbWoigKe/fuJSQkxDx5A0Bq\naqp5jOilYSQGg4Hs7GyysrIICwvDx8cHFxcXMjIyUBSFtLS0644r7QiCZaphIYQQ7YBFhw+GhoYy\nceJEHnzwQdRqNX369GHy5MlUVlYyZ84ckpOT8ff3JzExEYCQkBBiYmIYN24cWq2WJUuWmC8bLF68\nmAULFlBbW0tkZCSRkZGWLN3igs2LD0mLgBBCCOuxeGdBa2nvnQUBnv3id9TW17Jm4ludsp+EEEKI\n1tMuOwuK6+vuHkhF7UVKa8qtXYoQQohOSoKAFZlnGJQFiIQQQliJBAErurwksXQYFEIIYR0SBKyo\nu3nkgLQICCGEsA4JAlbk6eCOi62TtAgIIYSwGgkCVqRSqQj2CER/sZAqQ7W1yxFCCNEJSRCwMvN8\nAuXSKiCEEKLtSRCwMuknIIQQwpokCFiZjBwQQghhTRIErMzPRYetxkbmEhBCCGEVEgSsTK1W083N\nn+yKfOqN9dYuRwghRCcjQaAdCPYIxGgyklORf+OdhRBCiFYkQaAduDRyQPoJCCGEaGsSBNoBGTkg\nhBDCWiQItAPd3PxRqVTSIiCEEKLNSRBoB+y0tvi56Mgsy8akmKxdjhBCiE5EgkA7EeweQHVdDYWV\nxdYuRQghRCciQaCdkH4CQgghrEGCQDshMwwKIYSwBgkC7YR5CKG0CAghhGhDEgTaCVd7Fzwd3KVF\nQAghRJuSINCOBHsEUlJdRkXNBWuXIoQQopOQINCOyAyDQggh2poEgXZERg4IIYRoaxIE2pFLLQJn\nyyQICCGEaBsWDQJnz54lLi6O+Ph44uLiCA8P58MPP6S8vJzp06czduxYZsyYwYULl6+JJyUlMWbM\nGGJiYti9e7d5++HDh5kwYQJjx44lISHBkmVbTRcnbxxs7DlXKpcGhBBCtA2LBoHu3buTlpZGamoq\nKSkpODg4MHr0aFavXs2wYcPYsmULERERJCUlAXDq1Ck2b95Meno6a9asYdmyZSiKAsDSpUtJSEhg\ny5YtZGZmsmvXLkuWbhUqlYpg90DyLuipqa+1djlCCCE6gTa7NLBnzx66detG165d2b59O/Hx8QDE\nx8ezbds2AHbs2EFsbCxarZaAgACCgoLIyMigsLCQyspKwsLCAIiLizMfc6fp7h6AgkJWWa61SxFC\nCNEJtFkQSE9PZ/z48QAUFxfj7e0NgI+PDyUlJQDo9Xq6du1qPkan06HX69Hr9fj6+jbbficK9rg0\nw6D0ExBCCGF5bRIE6urq2LFjB7/61a+AhibwK/38dmdmnmpY+gkIIYRoA20SBHbu3Enfvn3x9PQE\nwMvLi6KiIgAKCwvN23U6Hfn5+ebjCgoK0Ol0zbbr9Xp0Ol1blN7mAlx90ag1MnJACCFEm2iTILBp\n0ybzZQGAqKgoUlJSAEhNTSU6Otq8PT09HYPBQHZ2NllZWYSFheHj44OLiwsZGRkoikJaWpr5mDuN\nVqOlm6sfWeV5GE1Ga5cjhBDiDmfxIFBdXc2ePXsYPXq0edvMmTPZs2cPY8eOZe/evcyaNQuAkJAQ\nYmJiGDduHLNmzWLJkiXmywaLFy9m0aJFjB07lqCgICIjIy1dutUEewRSZ6wj78Kd2Q9CCCFE+6G1\n9AM4ODiwd+/eJtvc3d1Zu3btVfefPXs2s2fPbra9X79+bNy40RIltjuXVyLMIdDNz8rVCCGEuJPJ\nzILtkHmqYeknIIQQwsIkCLRD3dz9ATgnQUAIIYSFSRBohxxtHPB19uFsaY55ZkUhhBDCEiQItFPB\n7oFcNFRSXF1q7VKEEELcwSQItFPBHpc6DMrlASGEEJYjQaCdMs8wWCYzDAohhLAcCQLtlHnkgLQI\nCCGEsCDTXqnoAAAgAElEQVQJAu2Uu70rbnYu0iIghBDCoiQItFMqlYpgj0AKK4u5aKi0djlCCCHu\nUBIE2rFLMwyeK8u1ciVCCCHuVBIE2jHpJyCEEMLSJAi0Y+Y1B2SGQSGEEBYiQaAd83Xugp3WjsxS\n6TAohBDCMiQItGNqtZogN39yK/IxGOusXY4QQog7kASBdi7YIwCjYiKnPM/apQghhLgDSRBo52SG\nQSGEEJYkQaCdk5EDQgghLEmCQDsX6OaHWqWWFgEhhBAWIUGgnbPV2ODv6su5shxMisna5QghhLjD\nSBDoAILdA6ipr0V/scjapQghhLjDSBDoAKSfgBBCCEuRINAByAyDQgghLEWCQAdgHkIoLQJCCCFa\nmQSBDsDZzglvR0/OysgBIYQQrUyCQAcR7BFIeU0FZdXl1i5FCCHEHcTiQeDChQu88MILxMTEMG7c\nOA4cOEB5eTnTp09n7NixzJgxgwsXLpj3T0pKYsyYMcTExLB7927z9sOHDzNhwgTGjh1LQkKCpctu\ndy71Ezgr/QSEEEK0IosHgYSEBEaOHMnmzZv57LPPuOuuu1i9ejXDhg1jy5YtREREkJSUBMCpU6fY\nvHkz6enprFmzhmXLlqEoCgBLly4lISGBLVu2kJmZya5duyxdertyaeSArEQohBCiNVk0CFy8eJF9\n+/bx0EMPAaDVanFxcWH79u3Ex8cDEB8fz7Zt2wDYsWMHsbGxaLVaAgICCAoKIiMjg8LCQiorKwkL\nCwMgLi7OfExnIS0CQgghLEFryZPn5OTg4eHBggULOHbsGP369WPhwoUUFxfj7e0NgI+PDyUlJQDo\n9XoGDBhgPl6n06HX69FoNPj6+jbb3pl4O3riZOvIOWkREEII0Yos2iJQX1/PkSNHePTRR0lNTcXB\nwYHVq1ejUqma7Pfz26I5lUpFd/dA8i+ep7quxtrlCCGEuENYNAj4+vri6+tL//79ARgzZgxHjhzB\ny8uLoqKG6XILCwvx9PQEGj7p5+fnm48vKChAp9M1267X69HpdJYsvV26dHngXFmulSsRQghxp7Bo\nEPD29qZr166cPXsWgL179xISEkJUVBQpKSkApKamEh0dDUBUVBTp6ekYDAays7PJysoiLCwMHx8f\nXFxcyMjIQFEU0tLSzMd0JsGXOgxKPwEhhBCtxKJ9BAB+97vfMXfuXOrr6wkMDOT111/HaDQyZ84c\nkpOT8ff3JzExEYCQkBDzMEOtVsuSJUvMlw0WL17MggULqK2tJTIyksjISEuX3u6YpxqWGQaFEEK0\nEosHgdDQUJKTk5ttX7t27VX3nz17NrNnz262vV+/fmzcuLG1y+tQ/F19sVFrZeSAEEKIViMzC3Yg\nGrWGbm7+ZJfnU28yWrscIYQQdwAJAh1MsEcg9aZ6civyb7yzEEIIcQMSBDqYy/0EZD4BIYQQt0+C\nQAdzaaph6ScghBCiNUgQ6GC6ufmhQsU5WZJYCCFEK5Ag0MHY29jT1aULmaXZ5gWZhBBCiFslQaAD\nCnYPoLKumsKqEmuXIoQQooOTINABmWcYlImFhBBC3CYJAh1QsLtMNSyEEKJ1SBDogII9GoYQnpUW\nASGEELdJgkAH5G7vioe9G5kyckAIIcRtkiDQQQV7BFJcVcqF2ovWLkUIIUQHJkGggzLPMCitAkII\nIW6DBIEOyjzDoPQTEEIIcRskCHRQ0iIghBCiNUgQ6KC6OHvjoLWXuQSEEELcFgkCHZRapSbI3Z/c\nCwUY6g3WLkcIIUQHJUGgAwv2CERRFLLK86xdihBCiA5KgkAHJjMMCiGEuF0SBDowGTkghBDidkkQ\n6MACXH3RqNQyckAIIcQtkyDQgdlobAhw8yOrLBeTyWTtcoQQQnRAEgQ6uGD3AGqNBvIvnrd2KUII\nITogCQIdnPQTEEIIcTskCHRwl2cYlCAghBDi5kkQ6ODMQwhLpcOgEEKIm6e19ANERUXh7OyMWq1G\nq9WyYcMGysvLeemll8jNzSUgIIDExERcXFwASEpKIjk5GY1Gw6JFixgxYgQAhw8fZv78+RgMBiIj\nI1m0aJGlS+8QHG0d0Dl5c7YsG0VRUKlU1i5JCCFEB2LxFgGVSsVHH31EWloaGzZsAGD16tUMGzaM\nLVu2EBERQVJSEgCnTp1i8+bNpKens2bNGpYtW4aiKAAsXbqUhIQEtmzZQmZmJrt27bJ06R1GkEcA\nF2ovUlpdbu1ShBBCdDAWDwKKojQb2rZ9+3bi4+MBiI+PZ9u2bQDs2LGD2NhYtFotAQEBBAUFkZGR\nQWFhIZWVlYSFhQEQFxdnPkZA98bLA2eln4AQQoib1CYtAtOnT+ehhx5i/fr1ABQXF+Pt7Q2Aj48P\nJSUlAOj1erp27Wo+VqfTodfr0ev1+Pr6NtsuGgR7XOonIEFACCHEzbF4H4F//vOfdOnShZKSEqZP\nn0737t2bXceW69q3R1oEhBBC3CqLtwh06dIFAE9PT+6//34yMjLw8vKiqKgIgMLCQjw9PYGGT/r5\n+fnmYwsKCtDpdM226/V6dDqdpUvvMDwc3HCxc+acjBwQQghxkywaBKqrq6msrASgqqqK3bt306tX\nL6KiokhJSQEgNTWV6OhooGGEQXp6OgaDgezsbLKysggLC8PHxwcXFxcyMjJQFIW0tDTzMaKhRaW7\neyD6yiKqDNXWLkcIIUQHYtFLA0VFRTz33HOoVCqMRiMTJkxgxIgR9OvXjzlz5pCcnIy/vz+JiYkA\nhISEEBMTw7hx49BqtSxZssR82WDx4sUsWLCA2tpaIiMjiYyMtGTpHU6wRwAZ+qNkluXQp0tPa5cj\nhBCig7BoEAgMDOSzzz5rtt3d3Z21a9de9ZjZs2cze/bsZtv79evHxo0bW7vEO4Z5YqGybAkCQggh\nWkxmFrxDBHs0TjUs/QSEEELchBsGAaPRyHvvvdcWtYjb4Oesw1ZjIyMHhBBC3JQbBgGNRsPOnTvb\nohZxG9RqNUFu/uRU5FNvrLd2OUIIITqIFl0auO+++/jggw8oLi6murra/CXal2CPQIwmI9kV+Tfe\nWQghhKCFnQVXrVoFwNtvv23eplKpOHr0qGWqErfk8kqE2XRvnG1QCCGEuJ4WBYFjx45Zug7RCi69\n+Z8ty2aUlWsRQgjRMbR4+GBpaSkHDhwAYMCAAbi7u1usKHFrAt38UKlUnCuTkQNCCCFapkV9BHbt\n2kVMTAzr1q1j3bp1xMbG8s0331i6NnGT7LS2+Lv4klmag0kx3fgAIYQQnV6LWgTeeecdPvnkE3r0\n6AHA6dOnmTdvHsOHD7doceLmBbsHkFORz/nKYnydfaxdzh3DYKyj0lCFh4ObtUsRQohW1aIgUF9f\nbw4BAD169KC+XoaotUfBHoHszvqBzNJsCQK3qKymgnNlOZwryyGztOF77gU9JsXE6B73Mn3QFDRq\njbXLFEKIVtGiIODp6UlKSgoPPvgg0LBQ0KUVA0X7EuzeOMNgWTb3BA6ycjXtm8lkIu+ivskbfmZZ\nDmU1FU32s9fa0dMzmAuGSv59ehcl1WXMGfYb7LS2VqpcCCFaT4uCwGuvvcbcuXNZunQpAL179+Z/\n//d/LVmXuEXBl0YOyFTDTVTX1XCuLJfMsmzz9+zyPAzGuib7eTl6EO7XnyD3AIIbv7o4e6NWqamq\nq2blN6vZn3eQ1756h1fvfQZXexcrPSMhhGgdNwwCJpOJqqoqPv30U/OSwk5OThYvTNwaVztnvBw8\nyOykUw0rikJxVSmZZdlkXvHGr79Y2GQ/jVpDoGtX8xv+pe/Odtf+3Xa0cWDBvc/y1x8+Zue57/jd\n9rdZOPJ5uQQjhOjQbhgE1Go18+bNY+PGjRIAOohgjwD25x2kvKYCN3tXa5djMXXGOnIqChqb9rM5\nV55LZmk2lXVNZ710sXWiX5e7L7/hewTg7+KLVnPzi29qNVqejXgCL0cPUo9+ye+2vcX8e58lxCu4\nlZ6VEEK0rRb9JQwKCiInJ4eAgABL1yNaQbB7IPvzDpJZlsMvfPtYu5xWUVF7sdm1/NyKfIxXDJNU\nocLX2Yf+vr3NzfpB7gF4OrijUqlarRaVSsUjYRPxcvTggx//xbKv3mHOL39DuF//VnsMIYRoKy0K\nApWVlTzwwAOEh4fj6Oho3v7uu+9arDBx68wzDJZmd8ggUGesY3/eQc6WZpPZ2Hu/pLqsyT52Glvu\n8gxqci2/m5sf9jb2bVbnmJBIPB3cSPz2A97a/Rdmhj/C/T3ubbPHF0KI1tCiIPDAAw/wwAMPWLoW\n0UoujxzoeB0GFUXhnT1/Y19ehnmbp4M7A7v2a9K07+vkg1rdovmwLGqw/y9YMuol3tj1Z1bv+wdF\nVaVM6TehVVsghBDCkm4YBIxGI9nZ2bzwwgttUY9oBT5OXjjaOJBZ2vE6DH519lv25WXQ2yeESX3H\nEeQegKuds7XLuq6eXt35Q/Q8VuxcRcqRzRRXlTJ7yONoZa4BIUQHcMOPVBqNhp07d7ZFLaKVqFQq\ngt0DyL9wnpr6WmuX02LnK4tZ99N6HGzseT7iKfrrQtt9CLikq0sX/hA9lx6eQXyduZc3dv6J6roa\na5clhBA31KK21fvuu48PPviA4uJiqqurzV+i/Qr2CERBIass19qltIhJMfGX7z+kur6GpwZOxtup\n401Y5WbvypJRLzHIrz8Z+qMs2bGS0upya5clhBDX1aIgsGrVKt5++22GDx/OoEGDGDhwIIMGyax1\n7dmVMwx2BF+e/A+Hz59gsF8YI4PvsXY5t8xea8e84bO5/64RZJbl8Lttb5FTkW/tsoQQ4pqu20cg\nLy8PPz8/jh071uy+Q4cOWawocfu6d6AZBvMqCvgkIw0XO2dmDXmsw3e006g1zBz8KN5Onvzr4Of8\nfvv/8uqI3xLqE2Lt0oQQopnrtgg8++yz5p8nTZrU5L7f//73lqlItAp/165o1dp23yJgNBlZ9d06\n6ox1zAx/BPc7ZAIklUrFg31ieGboNGrqalj+n3fZm/2jtcsSQohmrhsEFEUx//zz1QavvE+0P1q1\nhkC3rmSV52E0Ga1dzjV9dmwrp0oyGRE09I5cJOm+7sOYH/ksGrWGd/b8jfQTO6xdkhBCNHHdIHBl\nE+3Pm2s7evNtZ9DdPZA6Yx25FQXWLuWqMkuzWX94Ex4ObkwfNNna5VjML3z78FrUK7jbu7L2p/V8\n+NMGTFfMiCiEENZ03SBQW1vL6dOnOXXqVJOfL91uKZPJRHx8PE8//TQA5eXlTJ8+nbFjxzJjxgwu\nXLhg3jcpKYkxY8YQExPD7t27zdsPHz7MhAkTGDt2LAkJCTf7PDulSysRtseJheqMdbz/3VqMJiO/\nHTIVZ9s7ex2LYI9A/nD/PPxdffnixHbe/fbvzVY+FEIIa7huEKipqWHmzJnMmjWryc+zZs26qSDw\n4Ycf0qNHD/Pt1atXM2zYMLZs2UJERARJSUkAnDp1is2bN5Oens6aNWtYtmyZ+RLE0qVLSUhIYMuW\nLWRmZrJr165beb6dSrB7YxBohxMLfXroC7LL87i/x70M6NrX2uW0CR8nL5ZHzaW3TwjfZu8n4ev3\nuWiotHZZQohO7rpBYMeOHdf82r59e4seoKCggK+//ppf//rX5m3bt28nPj4egPj4eLZt22Z+vNjY\nWLRaLQEBAQQFBZGRkUFhYSGVlZWEhYUBEBcXZz5GXFuQuz8qVO2uReB40Wk+P/5vdE7eTPvFg9Yu\np0052zmxaOQL3BMwiKOFJ1m8fSVFlSXWLksI0YlZfLL2FStW8D//8z9N+hQUFxfj7e0NgI+PDyUl\nDX8I9Xo9Xbt2Ne+n0+nQ6/Xo9Xp8fX2bbRfX52Bjj6+zD2fLsttN586a+lpWfbcOFHgmYlqbLhLU\nXthqbJjzyxnE9ooipyKfRdvfIrMDDPMUQtyZLBoE/vOf/+Dt7U3v3r2v+0YkHQ8tJ8gjgEpDFcVV\npdYuBYCPD6Sgv1jI+Luj6e3T09rlWI1apebJgb9m2oBJlFVXsGTHSjIKjlq7LCFEJ2TRIPDjjz+y\nY8cOoqOjeeWVV/juu++YN28e3t7eFBUVAVBYWIinZ8N0sjqdjvz8y7OwFRQUoNPpmm3X6/XodDpL\nln7H6N7YT+BsO5hPIKPgKFtP7STQtStT+stqlgDj745mzi9nUGeq5/Wdq9iZ+Z21SxJCdDIWDQIv\nv/wy//nPf9i+fTt//OMfiYiI4O2332bUqFGkpKQAkJqaSnR0NABRUVGkp6djMBjIzs4mKyuLsLAw\nfHx8cHFxISMjA0VRSEtLMx8jri/Yo3GqYSt3GKw0VPHn7z9Eo1LzbMST2GpsrFpPezIsMJzfjXwB\ne60dq75bS+qRL9vNpRwhxJ3PKgu6z5o1iz179jB27Fj27t3LrFmzAAgJCSEmJoZx48Yxa9YslixZ\nYr5ssHjxYhYtWsTYsWMJCgoiMjLSGqV3OJdbBKx7Dfr//fgpJdVlPNQ3lrs8u1m1lvaoT5eeLI+e\nh7ejJ/88+Bkf7P8XJpPMNSCEsDyVcod+9MjJySE6Oprt27cTEBBg7XKsauZnr2Kr1vKnCdaZf+H7\nnP/yv98k0cMjiOX3z0Or1liljo6gpLqM13f+iXNlOQz2C+PFYTOw09pauywhRAdwq+97VmkREG2r\nu3sAhVUlXKxt+zHr5TUVrN73CTZqLc/e84SEgBvwdHBnWdTL9NeFsi8vg9e+eoeKmgs3PlAIIW6R\nBIFOwFozDCqKwup9/6Ci9iKPhMUR4Nr1xgcJHG0cWHDvs0QGR3CyJJPfbX+bgouF1i5LCHGHkiDQ\nCZhnGGzjkQO7zn3PD7kH6OPTk9heo9r0sTs6rUbLs0OfIL73ryi4WMjvtr3FqeJMa5clhLgDSRDo\nBC6PHGi7FoGiqhL+/uP/Ya+145mh01Cr5FftZqlUKh4Jm8hvwh/hgqGSZV+9w/68g9YuSwhxh5G/\nzp2Ar7MPdlq7NptLQFEU/vr9x1TVVTNtwCS6OHu3yePeqcaERDJv+NMoKLy1+y9sO737xgcJIUQL\nSRDoBNQqNcFu/uRWFLTJindbT+0kQ3+UgV37En3XcIs/Xmcw2D+MJaNewtnWidX7PuH/Dm6UuQaE\nEK1CgkAnEewRiEkxkV2eZ9HHKbhwno8PpOBk68jsIY/L9NGtqKdXdxKi56Fz9iH5SDp//v5D6k1G\na5clhOjgtNYuQLSNYPfLMwz28AyyyGOYTCb+9N06ao0Gnh76OJ4O7hZ5nM7M16ULf4ieyxu7/szX\nmXspqylnXK9oFBQURcGkKOafm24zNWxTQEHBpJjM+5gUBRq/X97WMJnR5W2mJvdfeezVtrnaOePv\n6ou/iw4fJy80MmxUiHZLgkAn0d3D8msOfH783xwvPsOwwHCGdxtiscfp7NzsXVky6iUSv/2AH/MO\ncqCdL1akUWvo6twFP1cd/i6++Lv64ueiw89Vh6ONg7XLE6LTkyDQSQS4+aFWqTlnoZEDWWW5fHro\nC9ztXflN+MMWeQxxmb3WjnnDZ/N15neU11SgUqlQq1RAw3cVqsZt6safQYXavN+l+y/vd+m2unHf\nxmMb92ly7iu2qVRqVGA+Vt14KaispoLcigJyLxSQV6En90IBORX5zZ6Hh72bOSD4ueoaWxF88XR0\nl5EmQrQRCQKdhK3GhgDXrmSW52IymVCrW++PbL2xnve/W0u9qZ6nhzyOi51zq51bXJtGrSHqrl9a\nu4wWURSF8poKci/oya0oIK+igNwLevIqCjh8/gSHz59osr+txqax1aDh8kJDK4IvXV26yJTLQrQy\nCQKdSLB7AFnluRRUFuLn0nrLOG84solzZTlEdf8lg/z6t9p5xZ1DpVLh7uCGu4Mbfbv0anJfbb2B\n/AvnybtQ0NiK0BAQ8i7orzobpo+jpzkg+LlevtTgbu8qnVOFuAUSBDqRYI9Adp77jszS7FYLAieL\nz5J6dAs+jp5MGzipVc4pOhc7rS3BHgHmia8uMSkmSqrKyG0MCHkVevIuNFxmOFBwhAMFR5rs72Bj\nf/kSwxV9EXydfdBq5E+dENci/zs6EfPIgbIcftlt8G2fr7bewKrv1qIoCs9EPCEdv0SrUqvUeDt5\n4u3kyS98+zS5r6qu+nIwaGw9yKsoILMsh1Mlmc3Oo3PyRufsjaeDOx4O7ng4uOHp4Ia7vRueDu64\n2bvIyAbRaUkQ6EQufeI6W9o6Iwf+kZFG/oXzxPaKatbcK4QlOdo4EOIVTIhXcJPtRpORwsriy30R\nGgNCbkUB+QXnr3k+FSrc7F3wcHDDw8EdT3s3888eDm542DcEB1c7l1btXyNEeyBBoBNxtnXCx9Gz\nVVYhPKQ/xuaTX+HnouPR/hNboTohbp9GrcHXpQu+Ll0I/1l/leq6GkpryimtLqe0uoyS6nLKqssp\nuWJbbkXBdYOyWqXG3d71KoGh8cveHU8HN5ztnGTUg+gwJAh0MsEegfyQe4DS6nI8HNxu6RxVddX8\n+fuPUKvUPBfxJLbSi1t0AA429jjY2F+3f4yiKFTX1VBSU9YYDsopqS5rFhiyynI5XXLumufRqDV4\nXBESPO3dcXdwbbw0camFwR0nW0fp4CisToJAJ9O9MQhklmXfchBY99MGiqpKeLBPTLOmWSE6MpVK\nhaOtA462DgS4dr3mfoqiUGmooqS6zNzKUFJ9OTxc2nam5BzGxlkar0aj1uCotW8MKQ44aO0avtvY\nX7HdHgdtw/2OTW7bN+7ngL3WTi5ZiFsmQaCTudRh8GxpNgO79rvp4/flZvDV2T10dw9kUp/Y1i5P\niA5BpVLhbOeEs50T3fC/5n4mxcTF2kpKqsspbWxlKGlsVSitLqe8poLq+lqq62o4X1lETV0tCre2\nmJSd1q5JeHC0scdeezksOPwsRDiaw8eVocIeG42NtFJ0MhIEOpngxqmGb6WfQEXtRZL2fYJWreXZ\niCdkSJYQN6BWqXG1d8HV3oVgAm64v0kxYag3UFVfQ3Vd41fjz1V11U1uV9fVNO5XTU19rfn+SkMV\nhVUl1N3iSqM2ai09PIPo06UXfXx60sv7Luy1drd0LtExyF/yTsbLwQNnWycyb3LkgKIo/G3/Pymv\nqeCxsHi6uV/7U5AQ4taoVWrsbeyxt7GH2xyNW28yUnNFWGgaKmp+FiqqzeGjrKaC48VnOFZ0mhQ2\no1GpCfEMpneXnvTt0ou7ve5qqE/cMSQIdDIqlYruHgEc1B+nuq4Ghxb+h/4max97s3/kbu8eTLj7\nfgtXKYS4XVq1xnz54mZVGao5VnSKI4UnOXz+BCdLMjlefIa0o1vQqNTc5dGtocWgS0/u9u4hc4h0\ncBIEOqEg90AO6o9zriyHUJ+QG+5fUl3GBz/+CzuNLc8OnSadkoS4wznaOjDIr795yvDquhqOF53m\n8PkTHCk8yZmSc5wsyeSzY1tRq9R09wikj09Di0GodwiOthIMOhIJAp1Qd/fGJYlLs28YBBRF4a/f\nf0SloYrfhD+Mr0uXtihRCNGOONjYM6BrXwZ07QtATV0Nx4vPcOT8SY4UnuRUSSanS86x8fg2VCoV\nwe4B9PVpaDEI9QnB2fbmWyVE25Eg0AldmmGwJR0Gt5/ZzX8LjvAL396M7hFp6dKEEB2AvY09v/Dt\nY576ubbewIniMxw+f4KjhSc5WZzJ2dJsvjixHRUqgtz96ePTkz5detHbJ0RWKG1nLBoEDAYDjz32\nGHV1ddTV1REdHc3LL79MeXk5L730Erm5uQQEBJCYmIiLiwsASUlJJCcno9FoWLRoESNGjADg8OHD\nzJ8/H4PBQGRkJIsWLbJk6Xc0PxcdNhqbG3YY1F8sZN1/k3G0ceDpIVNlSJEQ4qrstLb014XSXxcK\ngKHewInisxwpPMnRwpOcKDpDZlkO6Se/AqCbmz99uvRsCAc+PXG1d7Fm+Z2eRYOAra0tH374IQ4O\nDhiNRh555BH279/Pjh07GDZsGDNnzmT16tUkJSUxd+5cTp06xebNm0lPT6egoICnnnqKrVu3olKp\nWLp0KQkJCYSFhTFz5kx27drFvffea8ny71gatYZubn6cK8ul3lh/1WGAJpOJP3//IbX1tTwX8SRe\njh5WqFQI0RHZam3pp7ubfrq7ATAY6zhVnMmRwhMcOX+S48VnyCrP5cuT/wEg0LWreVRCb5+euNu7\nWrH6zsfilwYcHBo6jRgMBkwmE25ubmzfvp2PP/4YgPj4eKZOncrcuXPZsWMHsbGxaLVaAgICCAoK\nIiMjAz8/PyorKwkLCwMgLi6Obdu2SRC4Dd3dAzldco6cioJmy78CbDqxg6OFpxjqP4B7g4ZaoUIh\nxJ3CVmPT0ALQpSf0hTpjHadLznGk8GRDMCg6TfapfLae2gmAv6tv46WEnvTx6XXLs6CKlrF4EDCZ\nTDz44INkZWXx8MMPExISQnFxMd7e3gD4+PhQUlICgF6vZ8CAAeZjdToder0ejUaDr69vs+3i1l3u\nJ5DdLAhkl+fxr4Of4WrnzKzBj8olASFEq7LR2BDqE0KoTwgP9omh3ljPmdIs83DF40Wn+ffpXfz7\n9C4Aurp0QefkjbOtU8OXnRPOto642DrjbNf43dYRZzsnHG0cZMGnm2TxIKBWq0lLS+PixYvMmDGD\n7777rtkbi7zRtL3gxpEDmaXZ0H2YeXu9yciq79ZSZ6rnxcGPybU7IYTFaTVaennfRS/vu4jrPZZ6\nk5GzpVnmUQnHik6Rf+Hay0hfSYUKJ1tHXGydGsOBc2NouBQgLn+5XBEoHGzsO+17UZuNGnB2diYy\nMpJDhw7h5eVFUVER3t7eFBYW4unpCTR80s/PzzcfU1BQgE6na7Zdr9ej0117BTFxY93c/VGhajZy\nIOXIZs6WZhMZHMHQgAHXOFoIISxHq9bQ06s7Pb26M7H3GKBhZMJFQyUXaiu5aLjyq4oLtRcbvhsq\nqbxin/NVxRhNxhY9plqlbggOtk642DrhdGWrg61jY2hoGiI0Kg31pvrGL+NVvl9t2/X2b/huvM59\n16PYbWcAACAASURBVDv+YnHFrb3et3RUC5WUlGBjY4OLiws1NTXs2bOH5557jqioKFJSUpg1axap\nqalER0cDEBUVxdy5c3nyySfR6/VkZWURFhaGSqXCxcWFjIwM+vfvT1paGlOnTrVk6Xc8e60dfi46\nMstyUBQFlUrF6ZJzpBzZjJeDB08NnGztEoUQwsxOa4ud1vamOi4rikJtfa05JDQLErWNQcLQECQu\nNt6nv1h43VUjrUmj1qBVa9Fe8d1WY4ujjQZ7e80tndOiQaCwsJD58+ejKAomk4mJEycybNgwevfu\nzZw5c0hOTsbf35/ExEQAQkJCiImJYdy4cWi1WpYsWWJuqlm8eDELFiygtraWyMhIIiNlTPvtCvII\nIDergMLKYtwd3Fj13VpMionfDp2Kk62jtcsTQojbolKpzGs3eDt5tvg4RVGorq9pDAcXL4eF2suB\n4mJtJSbF1ORNueFNuvkbdZPvmsZ9Vde/v8l21eXzX+/yRU5ODttIvfnXSVGUW1vzsp3LyckhOjqa\n7du3ExBw41W/OqPPjm7lk4xUXhk+i+NFZ/ji+DbGhoxkRvjD1i5NCCHETbrV9z2ZWbATuzRaYOup\nnRzSH8fX2YfHfhFv5aqEEEK0JRlj0YkFuzcEgYP6Y6CC5yKelHXHhRCik5Eg0Im52buaJ+qYGDqG\nXt53WbkiIYQQbU0uDXRy9981gtOlWfy67zhrlyKEEMIKJAh0cr/uN97aJQghhLCi/9/evcdFWeb9\nA//MgYPAyFlAUDyAZ5H1Zyqmo4KFyIqQurWlWfaz3/b8EiNdX6Kb5a6YtWnuE21Ca2s+aWYpuoZn\nzEOb6OqquBYlpiIIwxk5zjAz1/PHwAAyCBo4A/N5v7a9Z+7TfOe2vD7Xfd9z3bw0QEREZMUYBIiI\niKwYgwAREZEVYxAgIiKyYgwCREREVoxBgIiIyIoxCBAREVkxBgEiIiIrxiBARERkxRgEiIiIrBiD\nABERkRVjECAiIrJiDAJERERWjEGAiIjIijEIEBERWTEGASIiIivGIEBERGTFGASIiIisGIMAERGR\nFWMQICIismKdGgTy8/Px/PPPIzIyEjNnzsS2bdsAAOXl5Vi4cCHCw8Px0ksvoaKiwrhNUlISnnzy\nSURERODbb781zr969SpmzpyJ8PBwJCQkdGbZREREVqNTg4BMJkN8fDxSU1Oxc+dObN++HdevX0dy\ncjJCQkJw+PBhjBs3DklJSQCArKwsHDx4EAcOHMDHH3+MNWvWQAgBAHjrrbeQkJCAw4cP4+bNmzh9\n+nRnlk5ERGQVOjUIeHp6YujQoQAAR0dHDBw4ECqVCmlpaYiJiQEAxMTE4NixYwCA48ePY8aMGZDL\n5fDz84O/vz8yMjJQWFiIqqoqBAUFAQCio6ON2xAREdHDe2T3COTk5CAzMxOjRo1CcXExPDw8ABjC\nQklJCQBApVLBx8fHuI2XlxdUKhVUKhW8vb1bzCciIqJf5pEEgaqqKsTGxmLlypVwdHSERCJptvze\n90RERPRodHoQ0Gq1iI2NxaxZszBt2jQAgLu7O4qKigAAhYWFcHNzA2Do6efl5Rm3zc/Ph5eXV4v5\nKpUKXl5enV06ERFRt9fpQWDlypUICAjAggULjPNCQ0OxZ88eAEBKSgrCwsKM8w8cOACNRoPbt28j\nOzsbQUFB8PT0hEKhQEZGBoQQ2Lt3r3EbIiIienjyztz5hQsXsH//fgwaNAjR0dGQSCSIi4vDokWL\n8Nprr2H37t3w9fXFpk2bAAABAQGIiIhAZGQk5HI53nzzTeNlg9WrVyM+Ph5qtRpKpRJKpbIzSyci\nIrIKEtHw+7xuJicnB2FhYUhLS4Ofn5+5yyEiIupUD9vucWRBIiIiK8YgQEREZMUYBIiIiKwYgwAR\nEZEVYxAgIiKyYgwCREREVoxBgIiIyIoxCBAREVmxTh1ZkIiIiDpedW0d8ourkV9chfziaqhKqpB1\n49ZD7YtBgIiIyMLodHoUltVAVVyN/JIqY6OvKqlGfnE1Kqo1Lbapqy55qM9iECAiInrEhBCoqK5r\n0rg3TvOLq1FYVgO9vuUTAGzkUni5OWBQXxd4uzvC290BXm6Gqa6mFJHH1z9wLQwCREREnaBOq0NB\naU2T0/f1DX59L7+6VmtyO7eedhjc17VZI9/Q6Lsq7CGVSkxul5NT8VB1MggQEVkQIQSEAETjDAjD\nBEDjMlH/wvi6cXXDtk22a1huWNa486bbGtYzLNfpBLQ6PfR6w1TXMNU1vtfp9NA2THWN7/WtzNe1\nuh8BrV7fbH2dXjRZ1/BeKpXARiaFXC5tnMqlsJHJIJdLYCOXQS4zPbWRSSCXy2Ajl7RrfbnMsO+G\nz5DLpJCZaHyFECirVBsa9uIq5Jc0P31fXF4DU4/1s7OVwdvN0Lh7uTvA262hZ++AXm4OsLd9tE0z\ngwARUQfS6vQor1SjtEKNsoZ/Kg3T0oraZu+rauoMDT9gssGwdnKZBLL6RlivF6jTGkKBOUilEmNA\naAgiFdUaqDW6FutKJICHSw8MH+De2MjX9+i93Rzh7GQLicR0r94cGASIiNpQp9U1NuyVLRt4w2tD\nI19RXdfm/hx72MDFyQ69PRwhkUggkcDYMEgkgASGeQ0a5tX/z7Bu09f16wDNtzW13xbb1f+fcTsJ\nIJdKIZNJjD1hmUxqaJSl0maNc+M6zec3vG62H5mkfpm0cVq/X6mJ+aZ64ACMZym0Oj3qtI3T1l63\nOtXqUaern5pYblzWZJ17X/t6OMHbo8np+/qpp2sP2MhlD/YvmRkxCBDRL6LTC9ytNDSKpRVqlFeq\nodXqIZMZek5NGwJjwyBv2UjIZdJ7GgPDqWCpVNIpvadajbaNhl2NsvoefFUr13KbUjjYwkVhj/69\nneHiZAcXRf0/zV7bw0Vh26UaCUsjlUpgK5XB1obHsKMwCBBRC3Vaw+ntZg1ipaZF77esUo27VZpO\nP63d2MM0hIimPVC5rEnvUtp8XtMAUqfTN6u/Rt3ylG5TEgng7GgHT1cHBLbasBumzk52kMs4Pht1\nTQwCRFZCXaerbwgbGnFNY4N+T2+4sqYdp7ft5XBR2MGvlwIuTnZwdjL0iF0UdrCRSaHTN7lZzMSN\nY1pd4ynexhvG7pnX7Aazxm0a1ldrtKgybtN4o1lrpFIJnB1t4e3u2KRBt4eLkx1cezZv5Hs62rV6\nepqoO2EQIOrCatValFTUoryieaNeauJ0d426fae3XXvaY4Bv89Pbzk739Iad7Cz21KwQjXecNw0i\ncpkUCgfbVn96RWStGASILJheL1Byt9b4O2TjtMTwW+SySvV9t5dKgJ5OdvByc2h2Otu1yTVrQ0++\n+5zelkgkxksDRNQ2BgEiM6tRa5uNKGaYNg5AotXpW2wjk0rQy80B/Xr3hLuzfX1P3XBa3rVJT97J\nwZant4novhgEiDpZi159SRXyi9ru1SscbNG/d0/jiGLeTX6H7O7Sgw08EXUIBgGiDnBvr15VP8pY\nXlEVCkqrUadtvVffsrF3hJebAxx72JjhmxCRtWEQIGqnkru1uFNY2ewafUPDf79efT+fns0eDuLj\nUd+rd7aHjNexicjMGASI7kNdp8M/L9/BoTM38cPNlo/4NNWr93J3NI4jzl49EVm6Tg0CK1euxIkT\nJ+Du7o79+/cDAMrLyxEXF4fc3Fz4+flh06ZNUCgUAICkpCTs3r0bMpkMq1atwsSJEwEAV69exYoV\nK6DRaKBUKrFq1arOLJsIt1UVOJx+C2n/ykZlTR0kEiA40BOBfV2aPQ3Mg716IuriOjUIPPXUU5g/\nfz6WL19unJecnIyQkBAsWrQIycnJSEpKwrJly5CVlYWDBw/iwIEDyM/Px4svvogjR45AIpHgrbfe\nQkJCAoKCgrBo0SKcPn0akyZN6szSyQrVaXU4cyUPh87cwpXrRQAAFyc7zAkNRPh4f3i7O5q5QiKi\njtepQWDMmDHIzc1tNi8tLQ2fffYZACAmJgbz58/HsmXLcPz4ccyYMQNyuRx+fn7w9/dHRkYGevfu\njaqqKgQFBQEAoqOjcezYMQYB6jB5RVU4nH4TR89l426VBgAQFOCB6SH9MH6ED2zk7PETUff1yO8R\nKCkpgYeHBwDA09MTJSWG664qlQrBwcHG9by8vKBSqSCTyeDt7d1iPtEvodXpcfZqPg6duYlLPxUC\nMNzYFz15IKaH9IOvp5N5CyQiekTMfrOgJT2Tmbq/gpJqHD57C0fP3kJpheFO/+ED3DF9vD8mBPW2\n2GFziYg6yyMPAu7u7igqKoKHhwcKCwvh5uYGwNDTz8vLM66Xn58PLy+vFvNVKhW8vLweddnUhel0\nepz/QYVD6bdwIVMFIQwPzJk5aQDCx/vD37unuUskIjKbTg8C4p7nk4aGhmLPnj14+eWXkZKSgrCw\nMOP8ZcuW4YUXXoBKpUJ2djaCgoIgkUigUCiQkZGBkSNHYu/evZg/f35nl03dQHF5DY6k38KRs7dQ\nVF4LABjs74rp4/thYnBv2Nua/YQYEZHZderfhEuXLsXZs2dRVlaGKVOmYPHixXj55ZexZMkS7N69\nG76+vti0aRMAICAgABEREYiMjIRcLsebb75pvGywevVqxMfHQ61WQ6lUQqlUdmbZ1IXp9AIXfyzA\noTM38a8fVNDrBXrYyRExoR8iQvqhf29nc5dIRGRRJOLeLns3kZOTg7CwMKSlpcHPz8/c5VAnK71b\ni6PnsnH47C0UlFQDAAb6OSMipB+Uv/JDDzv2/omoe3vYdo9/O1KXpdcLZGQV4tCZW0j/Tx50egE7\nWxmeHOeP6SH+COzjau4SiYgsHoMAdTnllWqk/Ssbh9JvIa+oCgDQz6cnpof0w5TRfhzWl4joATAI\nUJcghMB/fi7GoTM38V1GHrQ6PWzlUoSO6YOIkH4Y7O/Kn6ISET0EBgGyaBXVGhw/fxuHztxETkEl\nAMCvlxMiQvph6pg+UDjYmrdAIqIujkGALI4QAj/eKsXBMzfx7aVcaLR6yGVSTP6VH6aH+GP4AHf2\n/omIOgiDAFkUVUk1PvzyEi7WD/vr4+GI6eP7IeyxPnB2sjNzdURE3Q+DAFkEnV7g629/xv8c/AFq\njQ7BgzwxZ2ogRgZ4QCpl75+IqLMwCJDZ3cq7iw92XcKP2aVQONji/88ZhSmj/Xj6n4joEWAQILOp\n0+qw69g1fHX8J2h1Aspf+WLRrJFwUfASABHRo8IgQGaRebME/73rEm6rKuDhbI9X5ozC2GHebW9I\nREQdikGAHqkatRb/c/AHfP3tzxACmDGhHxZEDoODPQcBIiIyBwYBemT+nVmAD7+6hILSGvh6OmHx\nb4IxfIC7ucsiIrJqDALU6e5WafC3fVfwzYUcyKQS/GbaIDw9bRBsbWTmLo2IyOoxCFCnEULg9KVc\nJO+9gvJKDQL6uCD2N8F8FDARkQVhEKBOUVhag4/2XMa/vlfB1kaGhTOHI2rSAMhkUnOXRkRETTAI\nUIfS6wUOpd/E1q+/R41ai6AAD7w6Nxg+Ho7mLo2IiExgEKAOk1NQgcQvL+Pqz8VwtJdj8W+C8cTY\nvhwYiIjIgjEI0C+m1emx55ss7Dz6I+q0ekwI8sH/iwmCW097c5dGRERtYBCgX+Ta7VJ8sOsSbty5\nC1eFHV6ZHYSQkb3NXRYREbUTgwA9lFqNFjsO/4h9J7OgF8CT4/zx4szhcOrBgYGIiLoSBgF6YJev\nFeLDLy8jr7gK3u4OeHVuMEYFepq7LCIieggMAtRulTV1+OQf/8HRc9mQSoCYKQF4Nnww7G35rxER\nUVfFv8GpXb7LuIPNezJQWqFGP5+eiH06GIF9XM1dFhER/UIMAnRfJXdrsXlPBs5cyYONXIrnZwxF\nzJQAyDkwEBFRt8AgQCYJIXD0XDY+2X8VVTV1GD7AHa/OHQW/Xgpzl0ZERB2oSwWBU6dOYd26dRBC\nYPbs2Xj55ZfNXVK3lFdUhcQvLyEjqwg97OT4r9lBCB/fD1IpBwYiIupuukwQ0Ov1+NOf/oStW7ei\nV69emDNnDsLCwjBw4EBzl9Zt6HR67Dv1M7YfzoSmTofHhnnhv2aPgodLD3OXRkREnaTLBIGMjAz4\n+/vD19cXABAZGYm0tDQGgQ5y4045/nvXJWTdLoOzky2WPB2MScG+HB6YiKib6zJBQKVSwcfHx/je\ny8sLV65cMWNFD06n06Oypq5D9iVEO9ZB2yvp9QIHvruJ3cevQacXmPp//PB/Z41ET0fbDqiSiIgs\nXZcJAg9Kp9MBAPLz881cSaM1W9JxO7/C3GWY5OZsj+d/PRQjBnrgbmkB7paauyIiInoQDe1dQ/vX\nXl0mCHh5eeHOnTvG9yqVCr169Wp1/cLCQgDAc8891+m1dQc3AFxIMXcVRET0SxUWFsLf37/d63eZ\nIDBy5EhkZ2cjNzcXnp6eSE1NxcaNG1tdf8SIEdi+fTs8PT0hk8keYaVERESPnk6nQ2FhIUaMGPFA\n20mEaM/VZstw6tQpJCQkQAiBOXPm8OeDREREv1CXCgJERETUsThOLBERkRVjECAiIrJiDAJERERW\nrFsGgVOnTmH69OkIDw9HcnKyucuxWPn5+Xj++ecRGRmJmTNnYtu2beYuyaLp9XrExMTgd7/7nblL\nsVgVFRWIjY1FREQEIiMjcfnyZXOXZLGSkpKM/+0tXboUGo3G3CVZhJUrV2LChAmYOXOmcV55eTkW\nLlyI8PBwvPTSS6iosMzxWB41U8fq3XffRUREBGbNmoXFixejsrKyzf10uyDQ8EyCLVu24Ouvv0Zq\naiquX79u7rIskkwmQ3x8PFJTU7Fz505s376dx+o+tm3bxiGt25CQkIDJkyfj4MGD2LdvH49XK3Jz\nc7Fr1y6kpKRg//790Ol0OHDggLnLsghPPfUUtmzZ0mxecnIyQkJCcPjwYYwbNw5JSUlmqs6ymDpW\nEydORGpqKvbt2wd/f/92HatuFwSaPpPAxsbG+EwCasnT0xNDhw4FADg6OmLgwIEoKCgwc1WWKT8/\nHydPnsTcuXPNXYrFqqysxPnz5zF79mwAgFwuh5OTk5mrskxOTk6wsbFBTU0NtFotamtr7ztAmjUZ\nM2YMevbs2WxeWloaYmJiAAAxMTE4duyYOUqzOKaO1YQJEyCVGpr24ODgdo2u2+2CgKlnErBxa1tO\nTg4yMzMRFBRk7lIs0rp167B8+XI+hOk+cnJy4Orqivj4eMTExOCNN95AbW2tucuySM7Ozli4cCGm\nTJkCpVIJhUKBCRMmmLssi1VSUgIPDw8Ahg5MSUmJmSvqGr766isolco21+t2QYAeXFVVFWJjY7Fy\n5Uo4OjqauxyLc+LECXh4eGDo0KHgsBut02q1+P777/Hss88iJSUF9vb2vEenFbdv38bWrVvxzTff\n4PTp06iursb+/fvNXVaXwUDeto8++gg2NjbN7h9oTbcLAg/6TAJrp9VqERsbi1mzZmHatGnmLsci\n/fvf/8bx48cRFhaGpUuX4uzZs1i+fLm5y7I43t7e8Pb2xsiRIwEA4eHh+P77781clWW6cuUKRo8e\nDRcXF8hkMjzxxBO4ePGiucuyWO7u7igqKgJgGEffzc3NzBVZtj179uDkyZPYsGFDu9bvdkGg6TMJ\nNBoNUlNTERYWZu6yLNbKlSsREBCABQsWmLsUi/X666/jxIkTSEtLw8aNGzFu3Di8++675i7L4nh4\neMDHxwc3btwAAKSnp/NmwVYMGDAAly9fhlqthhCCx+oe9555Cw0NxZ49ewAAKSkp/Du9iXuP1alT\np7BlyxZ89NFHsLVt3+Pku+UQw3wmQftcuHAB8+bNw6BBgyCRSCCRSBAXF9eua0rW6ty5c/jkk0+w\nefNmc5dikTIzM7Fq1SpotVr06dMHb7/9NhQKhbnLskh/+9vfkJKSAqlUimHDhmHt2rWwsbExd1lm\n13DWraysDB4eHli8eDGmTZuGJUuWIC8vD76+vti0aVOLm+SskaljlZSUhLq6Ori4uAAARo0ahbfe\neuu+++mWQYCIiIjap9tdGiAiIqL2YxAgIiKyYgwCREREVoxBgIiIyIoxCBAREVkxBgEiIiIrxiBA\nZEJoaGiLoTlDQ0ORlZXVYZ+Rm5uL8ePHd9j+2is+Ph4zZ87E66+/3mLZp59++tDjuBcUFLR7YKqY\nmBireOxuYmIiB58iiyc3dwFElqq6uhp79+5FdHR0p31GR4yZrtfrjU8ba0tRURGOHDmCCxcumFz+\n6aef4vHHHzc5hKsQ4r719urVC59++mm76khJSWnXekTU+RgEiFqxePFiJCYm4te//jXk8ub/qYSG\nhiI5ORkBAQEt3oeGhiIqKgrp6elQqVSIi4tDcXExUlNTUVFRgYSEBIwZMwaAoXF955138M9//hMA\nsHr1auOykydPYvPmzdBoNLCxsUF8fDxGjRqFc+fOYe3atRg+fDgyMzPx2muvYfLkyc3q27t3L7Zs\n2QKpVIq+fftizZo1sLOzw4IFC6BWqxETE4Po6OhmPfjNmzejoKAAsbGxsLOzw3vvvYeDBw/i2rVr\nqKysRF5eHr744gv89a9/xfnz51FXVwdXV1esW7cOPj4+yM3NxezZs5Geng4AGDJkCOLi4nD06FGU\nl5fj97//PZ588knjsosXL6JHjx4IDQ1FdHQ0vvvuOxQWFmLhwoV47rnnAADnz5/HmjVrIJVKMXbs\nWKSlpTU77k19/PHHOHr0KLRaLby8vLB27Vq4u7vjD3/4AxwdHREfH4+ioiI8/fTT+PDDDzFkyBAs\nW7YMN2/ehEajgb+/P9atWweFQoFz584hISEBQUFBuHTpEmxsbLB+/XokJibi+vXr8PHxQWJiIuzt\n7ZGYmIisrCyUlpaioKAAgYGBWLdunclHMLdW47Fjx/CXv/wFcrkcWq0Wq1evxmOPPfbg/9ISPQxB\nRC2EhoaKa9euiSVLloht27YJIYSYOnWquHbtWovXppa9++67QgghMjIyxKhRo8SOHTuEEEIcOHBA\n/Pa3vxVCCJGTkyMGDx4s9u3bJ4QQ4uzZs0KpVAqNRiOys7PF008/LSorK4UQQly7dk1MmTLFuN6w\nYcPE5cuXTdb+008/iYkTJ4qioiIhhBCbNm0Sr732mvEzx48f3+r3njp1qsjKyjK+/+CDD8TUqVNF\nWVmZcV5paanx9a5du0RcXJzJfQ8ePFhs375dCCHEhQsXxKRJk4zLhgwZIqqrq42f+c477xj3ERwc\nLKqrq4VarRZKpVJcuHBBCCHE0aNHxZAhQ5od9wb79u0Tb7zxhvH9jh07xNKlS4UQQtTW1oqoqChx\n9OhR8cILL4jPP//c5Hd5//33xYYNG4QQhmM8fPhwkZmZKYQQYs2aNUKpVAqVSiWEEGLRokXiyy+/\nNB6jiRMniuLiYiGEEPHx8cbv88EHHxhf36/GqKgocenSJSGEEHq93vjnTvQo8IwAkQmifuTtJUuW\nYMGCBZg9e/YDbT9jxgwAwPDhw6FWqxEREQEAGDFiBLKzs43r2draIioqCgAwduxY2Nvb48aNGzh/\n/jxu376NefPmGWvR6/XG6/f+/v4ICgoy+dlnz57FlClT4O7uDgB45plnjJ/RHuKeUceVSiWcnZ2N\n70+cOIHPP/8c1dXV0Gq1971c0HAcgoODUVBQAI1GA1tb2xafERkZCQDw9fWFi4sL8vPzodFoYG9v\nj9GjRwMApk2b1upzC44fP46rV68aL+PodDrjWPR2dnZ4//33MXv2bCiVSjzzzDPG7VJSUrB//37U\n1dWhtrYW/fr1My7r378/Bg8eDAAYNmwY7ty5Y3yS6fDhw5v9OU6dOtV4OWXOnDlYu3btA9U4fvx4\nvP3223jiiSegVCoRGBjY6jEl6mgMAkT30b9/f0yePBl///vfmzV4crkcer3e+P7eG9/s7OwAwHjt\nvul7nU7X5ucKITBp0iSsX7/e5HIHB4d2fwfRxrX9tjT9rDt37mD9+vXYs2cPevfujYsXL2LZsmUm\nt5NIJM2+t0QiafW7N6zXsF17jlFTQgi88soreOqpp0wuz8rKgkKhQFFRkfGeivPnz2Pnzp344osv\n4OLigq+//hq7du0yWZNMJmvxXq1Wd1iN8fHxuHbtGtLT07FkyRK8+OKLmDt37gPtn+hh8VcDRG14\n9dVXsWPHDlRVVRnn+fv748qVKwCAM2fOGJ+Vbsq9vd+m7zUaDfbv3w/AcD1crVZjwIABmDhxIk6f\nPt3sVwoNn9eWcePG4eTJkyguLgYA7Nq1C48//nir9TSlUChQUVHR6vLKykrY2trCw8MDer0en3/+\neavf7X7fuz369++P2tpaXLx4EQBw7NixVmsLDQ3Fjh07cPfuXQCG45qZmQkAuH37NtavX4/PPvsM\nffv2xfvvvw8AqKiogEKhgLOzMzQaDXbv3v1A9TV14sQJlJaWAjA8Cz4kJOSBarxx4wYCAwMxf/58\nREVFtfvPmqgj8IwAkQlNe9BeXl6IiorC1q1bjfNiY2OxYsUKfPbZZxg/fjx69+5tctu23ru6uuKH\nH37Axx9/DADYuHEj5HI5/P398ec//xmrVq2CWq1GXV0dRo8ejZEjR7ZZe2BgIJYuXYoXXngBUqkU\nffr0wR//+MdW62lq3rx5WLFiBRwcHPDee++1WD5o0CBMnz4dERERcHNzw+TJk5v9AqHpvu/3vduz\nnq2tLTZs2IDVq1dDKpXiscceg7u7u8nLA7NmzUJZWRnmzZsHiUQCvV6PZ599FgMHDsTrr7+OZcuW\noW/fvli9ejXmzp2LsWPHYtKkSfjHP/6B8PBwuLm5YcyYMcjIyGj12NzPmDFjEBcXB5VKhcDAQKxY\nsaLdNQ4ZMgQbNmzArVu3IJPJ0LNnTyQkJDxUHUQPg48hJiKLVVVVBUdHRwCGex/i4+Nx/PhxM1fV\nXGJiIqqrq7F8+XJzl0L0UHhGgIgs1pEjR7B161bo9XrY29tj48aN5i6JqNvhGQEiIiIrxpsF0xBy\nuAAAACxJREFUiYiIrBiDABERkRVjECAiIrJiDAJERERWjEGAiIjIijEIEBERWbH/BQOFFc7AjKhP\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(np.arange(1,13), t_error, label='Training error')\n", "plt.plot(np.arange(1,13), v_error, label='Validation error')\n", "plt.title('Learning curve for linear regression')\n", "plt.xlabel('Number of training examples')\n", "plt.ylabel('Error')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Polynomial regression (Scikit-learn)" ] }, { "cell_type": "code", "execution_count": 298, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf4AAAFwCAYAAABZ1RmNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VHXaxvHvlPQGaZSEjoJILwlRSiCgFBGQJqvYQV0b\nKOuqq+jqiqiLYlkVbNgQBYJIW0CaooAgUlR4qVICpEJIn8zMef+IyRIhTIAkEzL357q4yJzMnPNk\nErjzq8dkGIaBiIiIeASzuwsQERGRqqPgFxER8SAKfhEREQ+i4BcREfEgCn4REREPouAXERHxIAp+\n8Xhvvvkmf/vb39xdRikLFy7kzjvvLNdzq2P9F+PYsWN07NiRqlhpPGbMGObOnVvp1xGpTqzuLkCk\novTu3Zv09HQsFgv+/v50796dSZMm4efn5/K1JpOpCiosv0GDBjFo0KByP7+61X8x6tWrx5YtW9xd\nRrWSnZ3NM888w7p16zCZTHTr1o1nnnmGgIAAd5cmlyC1+KVGmT59Olu2bCExMZFffvmFt99+290l\nVSsOh6Nan6+mqOj35Y033uDEiROsWrWKFStWkJaWxptvvlmh1xDPoeCXGqW4ezgyMpLu3buze/du\nAFJSUrj33nuJjY3l2muvZc6cOWd9/d13381nn31W6tj111/PN998A0DLli2ZPXs21157LTExMTz7\n7LOlrv3WW2/Ru3dvrr76ah577DGys7MBSEpKomXLliQmJhIfH09sbCyff/45O3bs4PrrrycmJobn\nnnuu5Fzz58/nL3/5S8nj559/nvj4eDp16sSwYcPYvHlzud6PH3/8kZ49e/Luu+/SrVs3nnjiCQBW\nr17NkCFD6NKlC6NHj+b//u//Sl7z66+/MnToUDp16sRDDz3EhAkTeO211y74fDNmzKBHjx507NiR\n/v37s2HDBgC2b9/OsGHD6NSpE926dePFF18s9V45nU6X37s333yT8ePH8/e//52OHTsyaNAgfv31\n1zLfj++//57+/fvTpUuXUu93sblz5zJgwABiY2O56667OHr0aMnn1q1bR79+/ejSpQv//Oc/Sw0T\nzJ8/n9GjR/PCCy8QGxtbEsrnOt++ffu44447iI2NpX///ixdurTMuvfu3UufPn3w9/cnMDCQPn36\nsGfPnjKfL3JOhkgN0atXL+OHH34wDMMwjh49agwcONB4/fXXDcMwjL/85S/Gs88+a9hsNmPnzp1G\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "poly = PolynomialFeatures(degree=8)\n", "X_train_poly = poly.fit_transform(X_train[:,1].reshape(-1,1))\n", "\n", "regr2 = LinearRegression()\n", "regr2.fit(X_train_poly, y_train)\n", "\n", "regr3 = Ridge(alpha=20)\n", "regr3.fit(X_train_poly, y_train)\n", "\n", "# plot range for x\n", "plot_x = np.linspace(-60,45)\n", "# using coefficients to calculate y\n", "plot_y = regr2.intercept_+ np.sum(regr2.coef_*poly.fit_transform(plot_x.reshape(-1,1)), axis=1)\n", "plot_y2 = regr3.intercept_ + np.sum(regr3.coef_*poly.fit_transform(plot_x.reshape(-1,1)), axis=1)\n", "\n", "plt.plot(plot_x, plot_y, label='Scikit-learn LinearRegression')\n", "plt.plot(plot_x, plot_y2, label='Scikit-learn Ridge (alpha={})'.format(regr3.alpha))\n", "plt.scatter(X_train[:,1], y_train, s=50, c='r', marker='x', linewidths=1)\n", "plt.xlabel('Change in water level (x)')\n", "plt.ylabel('Water flowing out of the dam (y)')\n", "plt.title('Polynomial regression degree 8')\n", "plt.legend(loc=4);" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }