{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Supervised Learning: Regression of Housing Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By the end of this section you will\n", "\n", "- Know how to instantiate a scikit-learn regression model\n", "- Know how to train a regressor by calling the `fit(...)` method\n", "- Know how to predict new labels by calling the `predict(...)` method\n", "\n", "Here we'll do a short example of a regression problem: learning a continuous value\n", "from a set of features.\n", "\n", "We'll use the simple Boston house prices set, available in scikit-learn. This\n", "records measurements of 13 attributes of housing markets around Boston, as well\n", "as the median price. The question is: can you predict the price of a new\n", "market given its attributes?\n", "\n", "First we'll load the dataset:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.datasets import load_boston\n", "data = load_boston()\n", "print(data.keys())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['data', 'feature_names', 'DESCR', 'target']\n" ] } ], "prompt_number": 0 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that there are just over 500 data points:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print(data.data.shape)\n", "print(data.target.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(506, 13)\n", "(506,)\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ``DESCR`` variable has a long description of the dataset:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print(data.DESCR)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Boston House Prices dataset\n", "\n", "Notes\n", "------\n", "Data Set Characteristics: \n", "\n", " :Number of Instances: 506 \n", "\n", " :Number of Attributes: 13 numeric/categorical predictive\n", " \n", " :Median Value (attribute 14) is usually the target\n", "\n", " :Attribute Information (in order):\n", " - CRIM per capita crime rate by town\n", " - ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n", " - INDUS proportion of non-retail business acres per town\n", " - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n", " - NOX nitric oxides concentration (parts per 10 million)\n", " - RM average number of rooms per dwelling\n", " - AGE proportion of owner-occupied units built prior to 1940\n", " - DIS weighted distances to five Boston employment centres\n", " - RAD index of accessibility to radial highways\n", " - TAX full-value property-tax rate per $10,000\n", " - PTRATIO pupil-teacher ratio by town\n", " - B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n", " - LSTAT % lower status of the population\n", " - MEDV Median value of owner-occupied homes in $1000's\n", "\n", " :Missing Attribute Values: None\n", "\n", " :Creator: Harrison, D. and Rubinfeld, D.L.\n", "\n", "This is a copy of UCI ML housing dataset.\n", "http://archive.ics.uci.edu/ml/datasets/Housing\n", "\n", "\n", "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n", "\n", "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n", "prices and the demand for clean air', J. Environ. Economics & Management,\n", "vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n", "...', Wiley, 1980. N.B. Various transformations are used in the table on\n", "pages 244-261 of the latter.\n", "\n", "The Boston house-price data has been used in many machine learning papers that address regression\n", "problems. \n", " \n", "**References**\n", "\n", " - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n", " - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n", " - many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)\n", "\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "It often helps to quickly visualize pieces of the data using histograms, scatter plots,\n", "or other plot types. Here we'll load pylab and show a histogram of the target values:\n", "the median price in each neighborhood." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.hist(data.target)\n", "plt.xlabel('price ($1000s)')\n", "plt.ylabel('count')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Quick Exercise:** Try some scatter plots of the features versus the target.\n", "\n", "Are there any features that seem to have a strong correlation with the\n", "target value? Any that don't?\n", "\n", "Remember, you can get at the data columns using:\n", "\n", " column_i = data.data[:, i]\n", " \n", "Also, you can create a new figure in matplotlib with:\n", "\n", " plt.figure()" ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution**" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load solutions/05B_houses_plot.py" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is a manual version of a technique called **feature selection**.\n", "\n", "Sometimes, in Machine Learning it is useful to use \n", "feature selection to decide which features are most useful for a\n", "particular problem. Automated methods exist which quantify this sort\n", "of exercise of choosing the most informative features. We won't cover\n", "feature selection in this tutorial, but you can read about it elsewhere." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Predicting Home Prices: a Simple Linear Regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we'll use ``scikit-learn`` to perform a simple linear regression\n", "on the housing data. There are many possibilities of regressors to\n", "use. A particularly simple one is ``LinearRegression``: this is\n", "basically a wrapper around an ordinary least squares calculation.\n", "\n", "We'll set it up like this:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(data.data, data.target)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.linear_model import LinearRegression\n", "\n", "clf = LinearRegression()\n", "\n", "clf.fit(X_train, y_train)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 9, "text": [ "LinearRegression(copy_X=True, fit_intercept=True, normalize=False)" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "predicted = clf.predict(X_test)\n", "expected = y_test" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.scatter(expected, predicted)\n", "plt.plot([0, 50], [0, 50], '--k')\n", "plt.axis('tight')\n", "plt.xlabel('True price ($1000s)')\n", "plt.ylabel('Predicted price ($1000s)')\n", "print(\"RMS:\", np.sqrt(np.mean((predicted - expected) ** 2)))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "('RMS:', 5.4603546628208148)\n" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEICAYAAAC6fYRZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8FMX7wPHPlVyupNBCD1V6kyIdjYiASMdC+QpWbGDv\nhSKKAoJdQUWwANLLD5UmhN4FEYKUgEBoJpSQnivP74+9xASSkFxyuZDM+/XKK8nezsyzS5jbm519\nBhRFURRFURRFURRFURRFURRFURRFURRFURRFURRFUUocna8DuNptt90m69ev93UYiqIoN5r1QNjV\nG/WFH0fO1q9fj4h49DV69GiPy96oX+qYS8ZXSTvmkna8BXHMwG1Z9alFrpNXFEVRCo7q5BVFUYqx\nYtXJh4WF+TqEQqeOuWQoacdc0o4XvHfMRe7GKyDu8SVFURQll3Q6HWTRpxu93O4fQKz752PA+8BM\nwAXsB54GVI+uKIriJd7s5M3u77dn2LYMeAPYAHwF9AGWeDEGRVGUEs2bY/LNACuwEvgdaAu0QOvg\nAX4DunixfUVRlBLPm518AjAJ6AY8Acy66vV4INiL7SuKotwQFi5cyIEDB7xStzeHaw4DR90/HwEu\nAM0zvB4IXM6q4JgxY9J/DgsLK5F32hVFKf5iYmIYMWIEe/bsYfbs2XkqGx4eTnh4+HX38+bsmseB\npmg3VyujDdkcAyaiPX471b1t/lXl1OwaRVGKvYULFzJixAiGDBnCuHHjsFgs+aovu9k13uzkjcAM\noLr791fQrua/AUxABPAY186uUZ28oijF2ujRo/n555+ZMWMG7du3L5A6fdHJe0p18oqiFGsnT54k\nJCQk31fvGalOXlEUpRjLrpMvVmkNFEVRihq73e7T9lUnryiK4gUxMTEMHDiQN99806dxqE5eURSl\ngC1cuJAmTZpQpUoVxo4d69NYvJ27RlEUpcTIOO994cKFBTZzJj/UlbyiKEoBmTx5MlWqVGHv3r1F\nooMHNbtGURSlwIhI2iyXQqdm1yiKoniZrzr4nKhOXlEUJY9iYmK8llCsoKlOXlEUJQ/SZs6sXLnS\n16HkippdoyiKkgtFceZMbqgreUVRlOv4v//7v/R570Vp5kxuqCt5RVGU6zAYDDfU1XtGRe9WsJpC\nqSiKkmdqCqWiKEoJpDp5RVEUt4ULFzJ16lRfh1Gg1Ji8oiglXsaZMzNmzPB1OAVKXckrilKiZcwY\neaPNnMkNdSWvKEqJ9f777zNz5kyfzpy5cOECH3wwmVOnztO9+20MG/ZAgaZHULNrFEUpsc6dO0dw\ncHCBrrWaF3FxcTRu3JqzZ2/Dbm+O1folzz7bj/Hjx+S5LrXGq6IoShEza9YsHn98NgkJv7i3nMFk\nqkNycnyer+bVFEpFUUq05ORkX4dwjZSUFCA4w5YgnE4HLperwNpQnbyiKMVa2lqrL7zwgq9DuUa3\nbt0wGNai030JbMNsHkKfPvdhMBgKrA3VySuKUmxlnDkzefJkX4dzjSpVqrB58xo6dfqVm24awSOP\n1GHWrG8KtA01Jq8oSrFz9bz34jYtMitqTF5RlBLj22+/Lbbz3vNKXckriqIUA9ldyauHoRRFUXKw\nbds2vv32J4xGA08//ShNmjTJddmkpCSWLFlCXFwcd9xxB7Vr1/ZipFlTV/KKotywYmJiOHHiBC1b\ntvRK/evWraNnz/tJTHwZnS4Fq/UTNm1azc0333zdsgkJCbRqdRtRUaVwuULR6ZazYsViOnbs6JVY\n1Zi8oijFStrMmdWrV3utjTFjppCYOBl4GZG3SEh4lQkTPstV2a+//pp//qlBfPxqEhNnkJAwlcce\nK/xpnGq4RlGUG0phrrWalJQMlM6wpQxJSSm5KnvmzHmSk2/mv4vrm4mOPl/AEV6fupJXFOWG8euv\nvxZqxsjHHx+M1foisA74Dat1NI8+OjBXZe+4Iwyr9TvgKJCEv/873H572DX7uVwuVq1axY8//sjh\nw4cLMPrCUR44BdQFbgI2ARuAL8n+foAoiqJkZf369bJ58+ZCa8/lcsmXX06T+vXbSKNG7eXnn+fm\nqfyUKZ+K2RwkBoOfdO3aT2JjYzO97nQ6pWfP+yQgoIkEBAwSi6WcLF261KNYgSxvZnrzxqsfMA9o\nAPQBJgEfonXyXwErgSVZlHPHqyie27FjByNHvkF09AV69ryTSZPG4e/v7+uwlBJIRHC5XFmmKli+\nfDmDBo0iPn4bYAK2ERzcl8uXz+W5HV/ceJ2E1pmfdf/eAq2DB/gN6OLFtpUSLDIyks6d72bHjqEc\nP/4N3367n8cee8bXYSkllE6nyzYXzZkzZ3C5mqN18AC3cOVKDA6Ho8Da91Yn/yAQDaxy/64j8ztM\nPJlTrylKgfnll19wOPoDQ4FWJCV9z7x5c3wdlpIHCxcuZOLEib4Ow+vatGmDyC/AAUDQ6yfQqNEt\nGI0FNyfGW7NrHkIbH+oC3Ax8D4RkeD0QuJxd4TFjxqT/HBYWRlhYmDdiVIops9mMXn8xw5aLmExm\nn8Wj5F5xXms1K82aNWPatMkMH94Ouz2VunWbsHz5glyVDQ8PJzw8/Lr7FcbDUOuAJ9CGbyYD64Gp\nwO/A/Cz2V2PySr5cunSJRo1uISamK3Z7Q6zWTxk79ileeuk5X4em5GDhwoWMGDGCwYMH8+677/ps\ntSZfcLlcJCUlYbPZPK7DlytDrQMeR7uy/wZt8CkCeIys7warTl7Jt+joaCZP/oRz5y7Qu/ed9O/f\n39chKTn46KOPmDp1aonJGOkNavk/RVGKrAsXLmC1WkvU1XtBU528oihKMaZy1yiKUiQkJCT4OoQS\nRXXyiqIUirS1Vp966ilfh1Ki5LaTDwSqA1YvxqIoSjGVca3VqVOn+jqcEuV68+SHAk8B5YDzQCm0\n+e1fALO9G5qiKDe6wswYqWQtpyv5mYAZ6I6WXKwD0Ai4G62z/8nbwSmKcmObN29ekVtr9fLly6xb\nt449e/ZQEiZ55DS7xgIk5eN1T6nZNYqi5FlUVBQnT56kTp06hISEcPbsWUaNGk9U1Hl69Ajj6aef\nYP/+/YSF3YXLVQuHI4pu3Toyf/736PU3/u3J7GbX5EZVtCv4esB3aGkKvMmjNJuKotwYDh06JEuX\nLpWIiIgCq/Ozz74Ss7mMBAe3Fqu1rPz00yypUKGmGI0vCcwSq7W1PPPMy9KgQWuB7wREIElstjYy\ne/bsAovDE2vWrJHq1RuJzVZWunUbIBcuXPCoHrJJNZwbG4DbgYXAILQnWL2pgE+hoijeFh0dLRs3\nbrzufl98MU0slvISFNRDLJYKMmnSx/lu++jRo2KxhAgcc3fe28VksorN1tv9uwicF6PRLFZrGYHz\n6dt1utflnXfeyXcMnjp8+LBYreUEfhU4K35+T0qnTnd5VBfZdPK5+YziAjaiZY2c4/5dURQF+G/m\nzNq1a3PcLzo6mhdffJWkpK1cufILSUm7ePvtcZw6dSpf7UdGRmIyNQFqure0Biy4XKYMe/kDQoMG\nTdDr0xKfXcRqXUqzZs3y1X5+aAnG7gbuAipit3/M5s2rCz3VsB8wgf+u6E05764oSkkQExPDoEGD\neOONN1i4cCGjRo3Kcf/Tp09jMlUFarm3VMXfv3a+O/m6deuSmroPOOTeshGj0YW//xb0+onAGiyW\nexg0aCjz58+gatWZ2Gw18fevxWOP9aJXr175aj8/SpUqhV5/jP8uwo/j72/LNv+8t9RFm0bpD9zH\nf/9C3lLAH4gURUmzb98+mT59uqxYsUJcLpfH9axcuVIqVqwoL7zwgiQmJuaqTGxsrAQEhAiscQ+X\nbBKbrZxER0d7HEeab7+dIWZzKQkKaiw2W1lZsWKFHDlyRHr2vF+aNw+TN94YI6mpqXLmzBlZvXq1\nrF27Vs6fP+9xe3a7XeLi4vIdd0pKirRo0Ums1u6i178uVmtV+fLLaR7VhYdj8uWBe4BHgP5ApQLs\nzLOT7xOnKMq1fvxxllgs5cVme0BstkYyYMADHnf0O3fulE2bNuW53Nq1ayUoqLxYLBUlIKCs/Prr\nrx61n5Xo6GjZs2ePXL58OcvXFyxYKBZLGQkO7ihmc1mZMuVTj9qZNOkj8fOziNFolpYtb83Xm4WI\nSFJSkkybNk3eeecdCQ8P97gePFjj9VFgONri23FAENAJmI62rJ+3uONVFKWgOJ1OAgJKk5y8BWgM\nJBMQ0IKlSz+nc+fOhRqL3W7n3LlzVKhQAZOpcEZ/4+PjKV8+lKSk39FWIj2JxdKKffu2cNNNN+W6\nnt9//53evR8lMTEcCMVofJlOnY6wdu0yL0Wee9lNoczpideH0R6AsmfYZgK24N1OXlGUApaQkIDD\n4USbDQ1gRqdrwtmzZ3Mq5hV+fn6EhoYWaptnz57FYCiN1sEDVMNkasKxY8fy1Mlv2bKFpKRBaFle\nwOF4hR07GuVcyMdyuvFq5NpcNTbU7BpFueEEBgZSrVptdLqP0P4L78ThWMstt9ySY7nFixfz1ltv\nFUqM3lS1alW0AYlw95YIUlP3Ua9evTzVU6VKFSyWHYDTvWUb5ctXLrA4C1sv4AjwG/Az8AtwGOjp\n5XbzNb6lKL5y5swZ6dVroNSu3UIGDHigQG4oFqSjR49KnTo3i17vJzZbGfnyy69k7ty5Eh4efs3Y\n/J49e6RMmfICOqlQoYZs3rzZR1EXnDVr1khAQDkJDKwrZnMp+eGHn/JcR0pKirRr10UCAlpJYOC9\nYrOVy9XzAYUBD8bkQZs+WR9tPP4KcBAouAmcWXPHqyg3jpSUFOrXb0lUVC8cjn74+c3mpps2s2/f\nVozG6+UBLFxJSUmsXbuW++57EIOhEy5XBN27t2b+/O/R6XQsXLiQ++8fiMvVGpEFwHYCAoZz+PCf\nVKpUGHMvvCc+Pp4TJ05QpUoVSpUq5VEdDoeDVatWcfnyZTp27Ei1atUKOErPeLIylAVtbdYuaA9C\nXUabK/853slZk0Z18soNZ8eOHXTp8hhxcXvR/lsJNttN7Ny5nAYNGvg6vGuULl2Jy5fnoc2lSCYg\noA1z577PqVOnmDhxIlFRF0hNvURaFxEUdDc//DCcPn36+DJsJQeerAw1A21u/BvAMOAtwIBKMawo\n1zCZTLhc8fw3VpuKy5VYaLNH8sJutxMbGw2kZYU043K1IioqikGDBrF9+3ZE7MAZ9+upOJ2RlC1b\n1jcBK/mSUydfGe1J133AMeBP4AMgpBDiUpQbStOmTWnRoi4WS3/ga6zW3oSFdaBWLW8/O5h3fn5+\n1K17M3r9J2jDuIeB32jVqhVBQUGUK1eOMWPGYLV2wmh8EZvtVsLCmtKhQwcfR654IqfhmlVoOeNX\nALFo4/I9gIFoiRa8RQ3XKDeklJQUJk/+mLVrN3Hw4BFcLqFLlzC++moyAQEBvg4vk8jISO64oxdn\nz54GnHz++ac89tjDmfZZu3Ytu3btonr16tx7773FIh1vcebJmHw5YBTaXPm0G6+bgXeBfws+xHSq\nk1duWCdOnKBx41uIj/8IaI7Z/C533OFg+fJ5hRZDfHw8Fosl2/wnMTExjBw5ErvdzrRp0wgKCsLP\nz6/Q4lO8w5Mx+RjgGaAb2upQXd2/e7ODV5Qb2urVq3G5ugNDgIYkJ3/LihVLcTqd1yuab6dPn6Zx\n4zaULl0eqzWYr776OtPrIsIXX3xBw4YNqVixIj/88ANly5ZVHXwxl9PcrlvQ1nI1oj1FEIj2LvE0\n2lOviqJcxWq1otefRxvr1gH/YjSavDrU4XQ6Wbp0Kc8//xpRUbfjcm0DInnppTBuvrkJ7dq1Iyoq\nihYtWhMT8y/+/iGEh+/Ebrdft27lxpfTX97HwAC054Bvc3/v496uKEoW+vbtS6VK5/H3/x/wIVZr\nV0aPHpX2UZrjx4/TrFkHjEZ/qlSpy4YNG3JVb0REBCtWrCAqKirTdqfTSdOmrRkw4AFOnjyGyzUX\nmAbchMPRn23btgFw//2DiY6+iIiL5OTyHDhQkeeff6MAj1y5EW3PYpsO2Obldn32xJiiFITY2FgZ\nP/59eeqp52TJkiXp251Op9Ss2Vj0+gkCCQLLJSAgRE6fPp1jfa+/PkYslooSHNxFrNaysnjxf3VO\nmTJFIEjgDwGHwFsCwQKpYrO1lZ9//lnOnz8vBkOge/Uhh8DXAlWkWbNOXjsHSuHDg1TDo4HfgVeA\nJ4CXgTXu7d7k63OlKF5x5swZMZvLCbjSl58LCuohS5cuzbbMH3/8IVZrFYFod5kdYrWWktTUVBER\nGTx4sMD/MixzZxfQidXaRLp06SMOh0NWrlwpJlO7DPuIQEXp23dgYR26UgjwYPm/sWgdezJQ1v39\nFfd2RVHyKDg4GJcrCUhbCSkFp/MoZcqUYfXq1XzxxRfu5eD+c/z4cYzGlmiT3QBuweUyEhMTA0Dr\n1q2B3fyXbSQcMLFo0SRWrlyEwWCgQoUKGI1RaLfWAKLQ6S4zZcp4bx2qouTI12+IipKJ3W6X0aPf\nlZtvvk26dRsgBw4c8LiuSZM+Equ1mvj7j5CAgJbSt+9gefrpF8Vmqytm8+Nis9WSN94Ym77/oUOH\n3ItUH3RfgS+SMmWqiMPhEBERh8MhTZu2Fagv0F5AJz163H1Nuw8//LTYbA3E3/8RMZuryPjxEz0+\nBqVowoMEZd2yKKRzb1tVMP15ltzxKkrR8MQTz/Hjj3tJTHwLnW4/gYHvc+DAbnf62rzbuHEju3fv\nTk9sNXDgcOz2o0ApIBp//7ocPx6Rngxs5swfePLJkRgMwZhMTlasWOy+gtecP3+ee++9l0OHDvHh\nhx/ywAMPXNOmiLB69WoiIyO5+eabadeuXa5iFRHWrl1LZGQkzZo1o02bNh4dc2FyOBx8/fXX7Nt3\niBYtGvHII48U+pqpvpDdPPmcLAD+Qcthc/WXN/n27VBRruLvHyhwLn0822x+UD7//PN81zt9+gzx\n9y8j0ERgmcBtAu3E37+y7N27N9O+cXFxcuzYMUlJScm0/ffff5dKlSrJCy+8IAkJCfmO6eDBgzJ4\n8CPSo8f9MmvWHBk+/Bmx2eqK1fqwWK1VZdKkj/Pdhje5XC7p3r2/WK2dBSaL1dpR7r13aL7Ws71R\n4MGNVwPaE671C7wbz5mvz5WiZGKxlBI4kd7JWyyD5KuvvspXnQ6HQ/z9AwR2CJQWCBFYIrBWoIZ8\n+OFHuaonIiLCo7VWsxIZGSmBgeVFpxsv8KOYzbXFz6+MQKz72E+KyRSY7RqqRcG+ffvEZqsukOKO\nOUHM5vJy7NgxX4fmdXhw49UJDEVb8s8TBuA7tDViN6KtO3aT+/cNwJfk8aOFovjCCy88h83WB5iF\nwfAGNtsmBgwYkK86ExIScDpdQCsgDHgb7TGU24HpTJ06C8nFsGWDBg0KLHHY99//SGLiEEReB/5H\ncvJsHA49WlYTgFD8/Mqk3/QtihITE93L/KV1WxaMxmASExN9GZZPXe8xvEi0LJSe6Im2zlhHtDTF\n44HJaKmLb0Xr4FVyaqXIGzduFFOmPE2PHv/HsGGx7NmzhZCQ/CVjDQoKolateuj1E4CKwKUMr14m\nMvI4PXrcU6hPpTqdTlyujNd0JiAV7RacC/gOm01XZBbJyErTpk0JDEzAYBgPRGA0jiIkxJ+6dev6\nOrQiKRCY6f65CvAHcJy8dcxpdzuGuevK+Lheb7QFSK7m6089ilIo/vnnH2ncuK2ATsAqMFrgY4EK\nAovEYukmEyd+KCIiU6dOlZCQyuLnZ5HQ0PpeWXLuwIEDYrOVE5gq8ItYrc3k4Ycfl3LlQkWnM0iN\nGo1k//79Bd5uQfvnn3/k9tt7ScWKdeTOO/td92Gz4gIPZte8jjb5dhJaKoNVaMMsi4E789DRzwT6\nAve6f67i3t4ZeAi4eiqAO15FKRmcTieHDh2iXbuuXLnSGi0PYBjwDb16/c6lS6fZunUbLtdDiEwG\n1hEQ8KhXluPbuXMnb7zxPrGxcfzvf/0YOfJJdDodqampRXIBFOU/nqQa3gmsAxLQrsR/QHunGIA2\n8+adPLRfAdgBBKA9WAXaJ4IuwMir9pXRo/97qDYsLIywsLA8NKUoN6a+fYfwyy+hOBzvA05MprY4\nHHvR68vicCSjrcD533J8P/74OL179/ZlyIoPhYeHZ3p4buzYsZDHTv5xoBnauHxd9+890C4zuuci\nhgeAqsD7aHdu9gJH0Mbm1wNT0dImzL+qnLqSV0qkc+fO0b79ncTEQErKOUSuoNO1JDV1NVAeOIT2\nXyoFm60ZK1dOV6s1Kek8uZLXoXXo5YGJaKtDTUMbvjmaizYtaMMzFQE/tM7+b+AbtDs6EcBjXDuO\npDp5pcRKSUlh3759iAizZv3Mp5+WBd5Em7PwGXA3NttOOneuxdKlc9KzWyqKJ518S7SkGJ6+7inV\nySsFJjY2Fn9/f8xms69DybNly5YxePDLJCSsBSpgNPajXr3TjB79OgMGDFDL8SmZeLIyVFdgNtAP\nqI02nl4VuAeYh3fXeVWUfLl8+TIdOnQlJKQKgYGlefHF13M17zyjjKs5nT59miNHjnhlhaeLFy9m\nub1379688sqDGI03YTAE0KZNKhs3/s69996LiPDmm2MJDW1EvXq3sGTJkgKPSykZQtHG0DejDQhu\nBMYB3pwo66MJSEpxct99D4rJ9Ig7f3q02GzN5KeffspV2e3bt0vlyjeJTqeX0ND60q1bX/H3LyM2\nWzWpX7+lnD9/vkBijI6OloEDB0r37t1z3M9ut1+TsuCNN8aI1dpOYLfAb2K1VpT169cXSFzKjQkP\n0hr4iq/PlVIMVK5cT+CvDPnTp8jw4SOvW+7SpUsSHFxRYKH7DeIhgRYC8QIuMRpflJ4978+y7P79\n++WDDz6QTz/9VC5cuJBjO4sWLcpXzplq1RoL7MpwfB/I008/n+d6lOKDbDr5nNZ4VZQbVmhoKGfP\nbkKkMSCYzZupVat1jmV27tzJb7/9hsMRAvR3b7WgzSC2AeBwDGXPnoHXlF2/fj09etxDauoQjMZ/\nef/9T9i3bxvlypXLtF9MTAwjR45k9+7dzJ8/3+PZMVarFTif/rvBcI7AQJtHdSlKYfP1G6JSDOzf\nv19KlaokgYE9JSCgtTRr1j7HK+aXX35LrNZqYrP1cy+n94n7CvkdgTD3iksiBsN46dy59zXlmzTp\nIDA//craz2+4vP326Gv2W7p0aYFkjFy6dKlYLBUExovB8JyUKlVJTp48ma86lRsb+bySr4uWXGwf\ncAYtkYWiFFk1a9akTZs2rF69HIPBj3vuGeW++tWICN988x3z5/+KyaRn7dr1JCcfRHtW7wjQFLP5\nD/T69ZQrZ+XChQYYDKWx2S4yffqaa9q7dOkSUCf9d7u9Lps2rWb27Nn06tWLwMBAQLuZWhAPMPXu\n3ZtVq8owd+5iAgJsPPXUdkJDQ/Ndr1IyjUR7aGkP8AJZ55spSL5+Q1SKgYceekrM5nsE4gSOidVa\nRxYtWiQiIvHx8TJmzHtitTYR+Fl0uncEAgVOZcgZX1XGjh0r69evF6fTKbt27ZKNGzdKfHx8lu09\n9dQLYrHcJRAl2qLaIeLvf6vYbN2levUG1x2jV5T8woPcNWk2o2WNXIOWB3UXWn5Ub3HHqyieq1q1\nAadPzwOauLdMYciQ/ezbd5CDB/ficDjRkqOOcr/+IFpOvs+ABZQp8xxnzx5Lz9ciImzZsoUzZ87Q\nokULateunam9lJQUnnjieRYsmE9ysgOHozNapu4+mEyP8+yz5Zg48T2vH7dScnkyTz69LJmHZ5IL\nKCZF8ZoKFSqgZdLQmEx/sm7dFiIiuuBwJAIH0DJrbAPAYLDg5zcdk6kUISEvsnLlkkwd/IMPPkm3\nbsN49NE5NG3alsWLM89L9/f3Z8aML4mLiyYkpCxaLj+t7tTUlpw8ec7rx6wonhqJNj/+JPAb8JKX\n2/PtZx4lR3///bf07TtE2rXrLhMmTBan0+nrkLK0fft2CQgIEat1mNhsd0mtWo3FaPR3T4VMm3b4\nuMAjotN9JIGBIXL06FGJiYm5Zqm4devWic1WN0PZnWK1lr7m2NPmvQcHlxKTqaN7/7NiszWTGTNm\nFubhKyUQ+bjx+hnamHxjtNwzni4iotzgTp8+TZs2YVy58jwiDfnzz/c4c+Y8H388wdehXaN169b8\n9dcOVq1ahdVqpW/fvtx0U1POn9+OluXagcm0m+rV7dStG88HH6y9ZggmzalTp9DpWpI2jRJakpqa\nREJCQvoN1Q0bNjBw4EAGDRrEsWORPProMyxbVga93sCIES8xbNjQwjhsRblGbsbkh6PNrnkJWIGW\n6uAHL8bkflNSiprPP/+cl1/eTXJy2lruUVgsTUhMvJRjuaJi1apV9Os3BL2+C/A3bdtWY8WKRRgM\nhhzLRURE0KrV7SQlrQUaodNNJTT0U06ciEjf58SJE0RFRWWa9+5wONDr9SrHjFIoshuTz82V/JNA\n2lMkvdCGbrzZyStFlPZHlPH2jLPIZ0GcMGEy48dPwuFIZfDgIezevZFdu3ZRtuxQunbtet0OHqBh\nw4ZMmzaFxx5rh4ie8uUrsHLl0kz7VK9enerVq2faZjSqZw0V38vN/9CdaJ28uPffDLT3YkzqSr6I\nOnfuHA0btiQ29nFcroZYrR8wYsRdTJgwztehZWnOnJ959NExJCYuBYKwWh9gxIj2TJjwDrGxsQwc\n+Ai///4rAQGl+fjjD6hUqSIrV64kJSWF9u3bc99992V6E7Db7cTGxlK2bFmvvrlFRETwwQefEB+f\nxMMP30fPnj291pZSfGR3JZ8bbwGbgClAOPBagUWVNd/evVBydOzYMRk8+BHp3LmvfPrpF9fcpCxK\n7rvvIYFpGW60bpL69duIiEirVrcJDBGIFdgtBkNZMRjKCpQXeEpMplukS5fekpycLHv37pWDBw+K\ny+WSRYsWybBhw3Idw7p166Rq1fpiNgdJx47d5ezZsznu//fff0tAQIjodO8JfCNWa6j8+GPuEqsp\nJRv5TFDWHLgfbaUob/P1uVKKiZEjXxSj8fkMnfw30rHjXbJ582YBs8DZDK+9IOAnEOn+3S5Wa0Op\nUqWumM0aXXOYAAAgAElEQVS1BEqLTmeS4ODSEh4enqv2jx8/7l4Y+xeBC2I0viI339wxxzLPP/+y\n6HRvZohrjdSp06ogTodSzJFNJ5/THaHH3N/fB+4DbgYGoqUeVpQi7/XXX6RMmUVYLEMwmZ7AZnud\njz8ex9Kly4HSaHPlQfu/kTanvqb7u5Hk5DhOn+5KcvIkwIxIJeLjS/PLL9emNcjK5s2b0ek6o62a\nWQaH4332799FfHx8tmVSUx2IWDJsseJwOHJ/0IpylZw6+ZPu70fQpk6mfR3ydlCKUhAqVarEgQO7\n+PDDDkyYUJ8//9xGy5YtCQoKwGBoAgwCnkZbT34H2to4bwNXgG9wueKAymgjlPOBN3E6mzBv3tKs\nG7xK6dKl0VbKTOukT6DX67FYLNmWueee3uh0E4CfgJXA/+jb9868H7yiuOVmkH41UJh/Ze5PHoqS\nd//++y+xsbHUqFEDo9GY5Q3S6OhoGjduzcWLLXA4EvHz28Lrrz/H559P5+LFWCCFgIAgEhNDcLl6\nAO+gLUvcDahKo0ZH2b9/y3VjcTqddO7ci927E0hJuQWTaR4ffPAaI0c+lW2Zd955l3Hj1uNw+AFJ\nQCitWkWxc+daz06IUmJ4ssZrmrloc+MP8d/8ucMFFtm1VCev5JmI8NxzrzJt2te4XFbs9isYjQ6G\nDn2EoUPv48knX+Hff8/TuXMY3377KcnJyXzzzbdcuRJPnz49ad9emzDmcDgwGo0sXLiQoUM/IDEx\nFbADcUAsZrOJpUtn07Vr11zF5XA4mDNnDmfOnKFdu3bceuutOe7/6KMjmD69DvCse8s+qlYdxKlT\nB3Iqpij5ml0TDqy76subfHrzQrkxLVmyRGy2RgIX3Tcsxws0FaOxlhiNAe5c70fF33+odO3aL8s6\nMi7rl5qaKm3b3iFWaycxGgeK0VhKevbsI7t27fLqccydO1es1gbubJZJ4u8/UIYNe8KrbSrFA/nI\nQgkQAtRCG5/PetXhguOOV1Fyb8yYsbzzjh2Rd91bzqP9yfYBfgHmoN0ATcZgCCIlJSl9Dnzaak1n\nzpwhPDw8fYjHbrczd+5czp8/T6dOnWjdOueVpQqCiDB27HjGj38Pp9NB9+59mDdvJjabWvVJyVl+\nruSfQLt7tARtyGZwwYWVJR+/HypFTVRUlPToca/UrNlM+vQZnOVC2j/99JPYbG0FktKnS0Jr98/r\nBGq6fz4qZnNQ+vz+3K61mpSUJLGxsV47xqs5nU5JTU0ttPaUGx/5mCf/J5C2pI4VLZ+8N/n6XClF\nSFJSklSr1kAMhrcEdomf3wtSr14LsdvtmfZzOp3St+9gsVqrCzQRKC2wz92xXxEwCbwrVmtNmTLl\n0/SMkXXq1JFNmzZl277L5ZJHHnlSdDo/0eks0qRJa7l8+bK3D1spQRwOhyxevFimTp0q+/bt87ge\n8tHJrwIyJvhYne9uPGcFePqUG922bdskMLBZhoeDXGKz1ZKIiIhr9nW5XLJnzx6ZOHGi+PmVFTgg\nYBej8QWpWbOxvPTSq/Lbb7+JiEh4eLg8//zz111r9eOPPxYIEHhG4F2B0tKpUxevHKtS8jgcDunS\npbfYbK3Ean1YrNbyMnfuPI/qIh+d/DJgC9pDUauB7Wjphz8tkC79WgV8GpUb2d69e8VmqyWQ6u7k\nk8RiqSCRkZE5lvvuu5lisQSLXm+UJk3aybp16yQ1NVUcDkee2m/cuKXAcxneZJaJ0RiSn0NSlHRL\nliyRgIBW6QvFwy4JDCznUV148MRrminAG2hpht8DXgUWur8UxauaNGnCLbc0wGLpB3yFxdKT0qWD\n6Nq1D/37309cXFyW5R56aBiXLp0nLKw7kZGn6NFjKFZrefz8TFSpUocdO3bkqn1t8e/KGbZUQq8v\n2pk3lRvH+fPncbma8l9C4GbEx18q9k85F/B7pXKjS0lJkYkTP5QhQx6VoKDyAhUFhglUlZCQmpKa\nmiq//fabTJs2LdMUx/HjJ4jZ3EXga4EqArMEHAILJTi4Yq7G1n/77TfR6UoLrHQv0N1Mhg8f4c3D\nVUqQv/76S6zW8gI7BexiMLx13fxG2SGfCcoKUwGfRqW4WL9+vYBV4Lz7o+0FgUBp3ry9mEx1xGR6\nQCyWSvLVV1+LiEi7dmECwQJDBRpmGHIRCQ6+RbZs2ZKrdufOnSuVK9eXsmVrynPPvZznIR9Fycm8\nefMlMLCc6HQGad68k0RFRXlUD/mcJ1+Y3PEqN7ply5YxYsTrxMVdpmfPu/n6609yzNtyPYsWLWLA\ngBeAfzJsrYaWG+Yo2uSvSPz8mtK3792sXbuWuLj6pKb+BLRAS71UHriI2Vyf/fu3Zrvkn6IUtrSn\nrT3lycpQM7LZLsDDHkeilAi7du1i0KDHSEycDdRmwYIXcLlGMmvWtx7Xeeedd2IwXMLpnAPcA7wO\nnAZu5b9Zvv9itydRpkwZjhw5Qr9+/2PnzjDsdjMORzP8/e/GYFjP8OGPqA5eKVK8tZJYTlfyrdzf\nXwbWABuAdsDtwDCvRKNRV/LFwLhx7zJmTBwuV9oi31EEBrbkypXzeaonISGBmTNnEhNzgTvu6AxA\nt24DSEyMR3uitRHwf8CvQCdgPP7+k0lMvIBer8flcnHw4EFSU1O5ePEihw8fpn79+tx+++0FdqyK\nUhR4ciWf9tBTWeAb98+HgAcKNDKlWAoODsJk+ovk5LQt/2CzBeVY5ujRowwf/gL//HOStm1b0a5d\nM8aO/ZC4uGbY7Y2ZOPF+vvpqAosW/cA997xKfPxOwA+YDtwFpAKV6Nu3W/ri2Xq9nkaNGqW3cccd\ndxT8wSpKEZabKZQW4A4gCC35x/VXPtb+5/2IdvW/HW0B8JvQlhHcAHxJ0bwfoBSQYcOGUaHCX/j7\nD0Knexur9V4++ST79WYuXbpE27adWb/+No4fn87PPyfzzDNvcuFCXVJTlyIynsTE/2PEiBc5ffo0\nUB/tzwy00UMBzuLvX5W7777b+weoKDeI3HS09YBJ7u8RwPNkvvOVlQeBpsALaEvw/AnsASajdfJf\noa2IsCSLsmq4ppiIjY1l+vTpXLoUy113dUtP55uRiDB+/CSmTPmUS5eqIZKWp90BBACPAp+7t10G\nKlCxYmUuXowhNbUZ2gPZ76HXf4fVWob27evy668LMi3ArSglQX4SlAHUBe4GQsnd1b8N7X8oaMM9\nkcCpDK/35r//uVcrqJlJipfs379fGjVqI1ZraWnevJMcPnw4x/03b94sffoMkZ49B8mqVasyvfbR\nR5+JzdZM4AuB5gIu9zTHS+51WMsKrHKn3r3XnWLAIEajn5QqVUEMBj9p2rS9fPfdd7J+/XpxOp3e\nPHRFKbLIxxTKkUBfoAzaEEwtYEQuygEEAkvRxvQ/BKq4t3cGHiLr8X0ZPXp0+i9hYWGEhYXlsjnF\n2+Li4qhZsyEXL45GpA863WwqVvyM48cP4O/vD0BUVBRbtmyhdOnSmM1munXrT1LSWMAfi+Ut5s//\nNn1IpWXLzvzxxytofxJhaH8it6N92CuPdhvInuFLDwwAFvHHH+u4+eabs1z9qahJTEzkiSeeZ/ny\nXwkOLs1nn42nZ8+evg5LuYGFh4cTHh6e/vvYsWPBwyv5zWjj8GmLheQ2C2UosBNt6AYyX8n3Qct/\nkxVfvyEqOdi8ebMEBd2S6cGiwMB68tdff6W/HhAQIoGB/SQgoJmULVtL4H6BegJ1BAZJhw53pdcX\nFtZLYLq7rniBrlKjRhOpXbuB+6r9TvdrvwpUFygjIGIwDJavv/76uvGeOHFCRo8eK6+99qbs2bPH\na+flegYOfFjM5v4CxwRWicUSIrt37/ZZPErxQz6eeN2C9u6Q1slvykWZCsBBtEuyNMuA29w/TwXu\nzaasr8+VkoOIiAixWCq7O2RtWMVsLiOnTp0SEZFatZoKLHK/ZhedrpxADYHtAnsFGkv16o3S69uy\nZYtYreUE3hK9/iUJDCwvBw8eFIfDIQMHDhSD4TF3XecE3nGnDN4vNltj+fXXX3OM9dixYxIcXFEM\nhmdEp3tLrNZysn79eq+en+wEBJQTOJ3+xmgwvCTjx4/3SSxK8UQ+EpTNQbtZWhv4jaxvll7tDSAY\nGMV/Swa+BYxFe9MwAgtyUY9SxNSvX5/+/Xtgs92KXv86NlsnHnpoGFWrVgXg3LlTQEf33kZEyqAt\nhN0aaAZMxGj0T6+vXbt2bN36O6+84uS118z88cdmAgICOHv2LKNGjcLffzHwLdASOID2iEZr2rSp\nRvfu3XOMdeLET4iLewSn8xNExpGY+AmvvPJujmW8RZs+eiL9d5PpBIGBgT6JRSlZcvOI1VTgd6Ax\n2nPhp3LeHdBWIX42i+1huY5MKZJ0Oh0//vg1CxYs4NChQzRuPI4+ffqkv96yZVu2bp2Mw/E+EIXB\ncBGX6yT/TZg6RY0a1TLV2bRpU5o2bUpSUhI9etzL1q1b0en0tGvXhv7972bOnJdxOocCn7hLtCUl\nZf51x+JjY+Nxuepn2FKVK1eyzlrpbR999B6PPjqApKRHMZmOUr78foYO9fzpX0UpCJXQpk1uQ5td\nUw9oAOQuR6vnfP2pp8RLSEiQ5557Vdq27SYPPfSUREZGyqRJk+T119+UjRs35lj27Nmz0rRpO/Hz\ns4mfn0VefPEVCQwsLwbDc6LTvSo2WznZsWNHlmWffPJZ0etDRVu2L1n0+p5iNNYR6CowLcN9gI1S\nv36b6x7HsmXL3CtFbRLYJ1Zra3n33QkenZOCsHHjRnnzzbdl8uTJanUppcDhweyafsAzwM3AXvc2\nF9pwy9sF2atfxR2v4m0ul4vU1FTMZnP6NhHhttt6sHNnEMnJQ/HzW4zIAgyGXqSk1MJq/Ybp0z9i\n4MD7c6w7NjYWq9WKn58fx44d4/vvf8ThcGC1momLS6Bp08YMGjQo/Wp80aJFDBw4GLu9O9oIoQVt\nYtZUtIlYbwOLgSCs1qE8++ytjB8/5rrH+N13Mxkz5kPs9lQefngI48a9nf40rKIUJ/mZJ98Dbd47\nZF49wVt8/H5YMkyb9q34+weIwWCS5s07ydmzZ0VEm41iNpfPsBLTxwL9MlxFb5KKFW/Kc3sul0v6\n9RsiNlt7gXfEZmspw4Y9kb7Wat26daVnz/5iMj3lnivvEnhI4El3ux8JBIm/fyl5/PFnr1njVVFK\nOvJx47U18Kb754+A1wqoM1d8ZOvWrTz//ChSUnbhdCbx11/tGTBAyzmnXQ1k/Fu5gvZoRJrqJCbm\nfVw7IiKClSs3kJDwO/A2CQnrmDt3Pjt27KBKlSrs3buX77//hurVtxAY2IrAwJYEBq7AbD4ILMNg\nOEu5ckGsWLGYTz6ZkOeMfYsWLaZbt3vo23dIrleFUpSS4o+rft+S5V4Fx9dviMXehx9+KCbTsxmu\nzmPFz88iItoVd+fOPcVs7iewSIzGvqLTBbmfOo0Us7mP/O9/j+W5zS1btkhQUMur5tfXlf3792fa\nLzk5WdavXy8bNmyQuLg4GTVqnLRr103Kl68lVmtNCQxsLLVqNZFz587luu1Zs2aL1VpN4EeBz8Vq\nLafmqCvFDvmYJ78TSJvzZgK2FkRPngNfn6ti76effhKbraNoS+GJwBqpUKFW+utJSUnyyitvya23\n9pTHH39W5syZIzVqNJEyZUJl2LAnJDExMc9txsfHS/nyNUSn+0TgHzEYxktoaH1JSUm5btlx48aL\nxdJHtMWOXeLn97L06/e/XLfdpElH98NUaW8wH8jDDz+V52NQlKKMbDr53E6h/AvYj5b6b0LOuytF\n3f3338+0aT+xZ09bROohspLvv/8p/XWz2cyECeMylRk4cGC+2kxKSmLkyEdYunQJR49OoGHDxsye\nvQKTyXTdsn/+eYikpF6k/bna7f3Yv/+ZXLet/f1nTFhmcG9TlOIvN2Py04EOaJ37rcD3Xo1I8Tqj\n0ci6dcuZM2c0n3/ehT//3Eq3bt281t6iRYto0qQJly9fZvv2NVy6dJrNm1dSvXr1XJVv2bIRFssC\ntHzxgsk0h+bNG+e6/RdfHI7V+iTa83ffYrFMYPjwoURHR+NwODw5JEW5YeQ03eZtYBzafLaMBBjs\ntYjUFEpEhCtXrhAQEFBkU+ZeuXKFqKgoQkNDs31yMyYmhpEjR/LHH38wY8aMLFMN50Zqaiq9ew9k\nw4Zt6PUWqlUrw4YNv1GuXLlc1zF79hymTp2N2Wzinnu68cYb44iPT8Bo1DFv3o/06NHDo9gUpajw\nZAplM/f3MLScMxm/vMmn41q+FhkZKbVrNxU/P5v4+wfIjBnf56u+efPmS2hoQylbtpoMH/5MrsbA\nRbQbsB999Jm0b3+X9OkzWA4cOJChzgVisZSWwMC6YrOVzTKHzM6dO6VixYrywgsveDSGn1U8R44c\nkQMHDuRr+mRycrKULl05Q36dLWKzlZMzZ87kO0ZF8SU8uPE6LJuvoQXapV/L1+fKp+rXbyV6/UT3\nPPEIsVorepw9cePGjWKxVBQIFzgqFkt3eeKJ53JV9s03x4jV2kJgieh0H0pgYHn5559/5OzZs2Kx\nlBH4w91JbhabrazExsZmKh8bGytbtmzxKO6cuFwu+ffffz1+YvTQoUMSEFAz0yyf4OAwWb16dQFH\nqiiFCw/myZdzfw0GugJmtKv6/gXcqStuqampHDq0B5frRbRPXQ2Au9i5c6dH9S1b9gtJSU+iffiq\nTVLSRyxa9H+5Kvv559NITPwZ6IPIiyQn92f+/PkcPXoUk6ku0Ny9Z3v0+gocP348U/mgoCDatWvn\nUdzZuXLlCp06dadq1TqEhFThoYeexOVy5amOChUqYLdfAI66t8SQmvp3eoI1RSlucurkJ7u/dMAQ\nYBra8+UBOZRR8sHPz4/AwLJoST/jgWT0+t1UqVLlOiWzVqpUEH5+JzJsyX3mw6sfitLpXOh0OmrU\nqEFKymG0xb4AIrDbzxAaGupRjBm5XC6ef/41rNZSWK2leemlNzJ14iNHvsquXZVITY3Bbj/DvHn7\n+OqraXlqIzg4mE8+mYzF0oGgoP5Yrc157rknqF+//vULK0oxtRttnVbQlurJ7aIhnvL1px6fcTqd\n0r17HwGjgEkMhhDp3XuguFwuj+qLjo6WihVrick0THS6N8ViKS/Lli3LVdnRo98Vq7WZwHzR68dL\nUFAFOXnypIiIfPHFNLFYykpwcEcxmQKkUaPG4nQ65d9//5U+fQZLaGgj6dy5txw7dizTsZ05c0aS\nk5OzbXPSpI/Eam0j2lJ/p8RqvUWmTPk0/fXatVu489KnDbVMk/vvf9ijcxMRESHz5s1TD0UpxQb5\neBiqL3AMbSHuY4D35tppfH2ufObLL6eK1dpWtPVNU8Rkulcee2xkvuqMjo6WiRMnyltvjZLt27fn\nupzL5ZIvv5wmt9/eR+69d5gcOnQo0+t//PGH3H777VKrVi3ZvHmzOJ1OadSotfj5PSuwV/T696Vi\nxVoSFxcnf/31l1SsWEvM5nLi7x8oM2f+kGWbHTveLbAkQye+SG69tVf661279he9/gP3ay7x9x8s\nb701xrMToyjFDPno5EF7kiQU8CuQbjxnvj5XPjNgwDCBbzN0cpulXr3Wvg7rGgsXLrxm5kxkZKRY\nrZXlv4W4RYKC2sratWulSpU68t8SfxFisZTPNFsnzT33DBW9fnx6eb1+nNx334Ppr0dGRkpISHUJ\nCuosgYGtpHHjNhIXF5dljL/88ouEhjaQwMDy0q/fELly5Yp3ToaiFBHko5O/De1p14NoKzs9UkCd\neXZ8fa585pVX3hST6aH0jlKvnyhdu/b3dViZrF+/XurWrSubN28WEUkfSjpz5oz4+5cSiJO0pf8C\nAurJmjVrxM/PdlXOmvvkp59+uqbuI0eOSKlSlcTff5D4+/eUoKAKEhkZmWmfy5cvy/Lly2X16tXZ\nTgfdt2+fWK0hAqsFTou//wNy9933FfCZUJSihXx08huBsmhL+AVxbcKygubrc+Uzly9fljp1mklg\nYEcJDOwhZctWlaNHj/osnsTERLl48WKmewIul0uSk5Pl7Nmz0qbNHWIw+InFUlbatg2TJk3aiNXa\nQeBTsVh6SocOXSU1NVWs1tICO9yd/BWx2Wpnu/jIokWLxGwuLWZzbfH3D5Yvv7z+Yt1XmzJliphM\nT2d4Y7kkJpPN4/OgKDcC8tHJr3d/X+f+Hp7fXvw6fH2ufCoxMVGWLVsmCxYskAsXLvgkBpfLJa+9\nNkqMRrOYTIHSsuWtEhMTk2mfli1vE6PxFYFE0VZeKi0mU2epXbuhPPjgEzJp0ofpN1kXL14iVms5\nCQrqJTZbDRk+/Jksbybb7XYJDq4gsNLdOR8Vi6W8/P3333mK/7vvvhOr9a4MQ0e7pHTpyp6fEEW5\nAeDBylBppgPRaIuHzEFLUjaswLr0a7njVXxl4cKFDBs2ioSEmUBL/PyepWvXf1m+fC4Adrsds9mK\ny5XEfznuHgLaYrNNYMuWJTRt2jRTncePH2fv3r1UqVKF1q1bZ9nu6dOnqVOnJUlJ59K3BQX14uGH\n67Bv33ECA62MGvUiLVq0yDH+xMREWrToxMmToaSkNMTffyZTp05k6ND/eXZCFOUGkF1ag9xkoXwS\nbRx+E9rk7ccKNDKlSElKSmL16rUkJBiB4cAu7Pbn2L79jvR9jEYjZnMgiYkHgSaAE4gAeqPXW0lN\nTb2m3po1a1KzZs0c2w4JCcFgcACb0XLinSExcRNTp0aQnDwe+Jc1a7qxbds6GjfOPkGZ1Wpl9+4N\nfP/998TEXOCOO+bToUOHvJ4KRSkxVhVye77+1FMi7dixQypUqCk6nUF0Or3o9ZUE4t3DHTOkWbOO\nmfb/4YefxGKpIDrdIwItBdqL0fi83HRTs1znx8nKr7/+KjZbOQkObisWSzkpXbqmwIYM4+tvy/PP\nv5zfw1WUYod8LP93CeiDNkxT1/2lFBEul4vx4ydRr15rmjcPY+XKlXmuIz4+ni5denH+fGVEaiPy\nARCPzdaeoKBeBAW9xsyZn2Uq88ADQ9i48Rfee6827dsHUreunb59L7B586pc5YjPzl133cXx4xEs\nXz6JiIidlCoVROZPoDpcLjWcpyi5lZsx+XCufYe4veBDSed+U1Jy45133mfChIUkJn4M/IvV+iS/\n/76Utm3b5rqOvXv30rHjfSQk9EWbJWshKOgWxo4dQrVq1ejQoQMVKlTw1iHk6IsvpvLKK1NITHwf\nOI/NNpqtW9fSpEkTn8SjKEVVdmPy1+vkg9AGXBO8EFN2bthOPiYmhiVLluB0OunVqxeVK1f2epvV\nqzfh5MkZQCv3lvd45plLfPLJh7mu48yZM9Su3Zjk5ANAJSAas7khBw/upEaNGgUfdB7NnPkDM2Ys\nIDDQypgxL9GqVavrF1KUEsaTG68jgBcBBzASWOGVyIqJqKgoWrToQEJCW0RMvPrqGLZvD6devXpe\nbddsNqONqGn0+stYLP7ZF8hC5cqVef31V5gwoQ06XRgiG3jmmaeLRAcP8OCDQ3nwQW9nuFaU4imn\nK/mtaE+7BgE/Ad0LJaIb9Er+4Yef4ocfgnE63wdAp/uQHj12sXz5z15td968+Tz44HMkJb2KXn+e\ngIDp7N27NduZLDExMcyaNYtnnnkm7Z0/3fbt24mIiKBevXoer+KkKIpveHIln4S2qGYMhZOz5oZ2\n+nQ0Tmen9N9FmnLu3G9eb/e+++6ldOlSzJq1iMBAK88/vyXbDn7x4sU8/fTTDBw4EKfTidGY+Z+/\nTZs2tGnTxusxK4pSeHLq5DO+I+RmFk6J1rv3HWzaNJnExFsBE1breHr2vLNQ2r7zzju5887s20pb\na3X37t3MmzePjh07ej2mw4cPc+rUKRo2bEilSpW83p6iKFnLqfNuBMxGe8q1ofv7HPc25SpPPfU4\nTz/dHX//BphMNRkypClvvfWqr8Ni3759NG3alEqVKrln0Xi/gx816l1uvrkTAwaMo06dpixfvtzr\nbSqKkrWcxuTD0KZOXr2P8F8+G2+4Icfk06TFfvV4t68kJyezd+/ePE2pzI8///yT9u17kJi4B22N\nmW3YbHdz6dI5/PzUqJ+ieIsnY/Lh3gqmOCsqnXsas9lcaB08QGRkJEZjK7QOHqAtTqeeCxcuULFi\nxUKLI69cLhepqanu2UqKUnx4e6y9Df9lr7wJLf/NBuBLcvcglpIHReETUKNGjbDbtwFH3FuWYbGY\nCAkJ8WVYOfr448+xWIIICAimXbsuxMTE+DokRSkw3uzkXwG+AdImbU8B3gBuRevg+3ix7SIrPj6e\ne+4ZSmBgCJUq1WHx4sWZXj927Bhr1qzh5MmTeap38eLFdOjQAbvdXpDh5lm9evX45JP38fdvRUBA\nbUqVeoJff12IwWDwaVzZWbt2LW+++SGpqftwOhPZvbshgwerHHyKkhv90a7et7p/j8rwWm/g82zK\n+Sq/T6EYMOAB8fcfJHBGYL1YrRVk586dIiLy6adfisVSToKDw8RiKSfff//jdeuLjo6WgQMHSp06\ndbJdiMMXLl++LH///bckJSX5OpQcjRkzVnS6NzIkQDsrAQHlfB2WouQZ+UhQ5qlFaE/Lpsk4PBMP\nBHux7SJrxYpfSUmZgpY+4FZSUh5g9erVnDp1ildffZukpJ3Exq4jKWkDjz8+kosXL2Zb1+LFiwt9\n5kxuBQcHU69evSI/xl25ciUsll2Ay71lJyEhasqnUnzkJp98QXFl+DkQuJzdjmPGjEn/OSwsjLCw\nMK8FVdgCA0uTkHAU0G5CmkxHKVWqKydOnMBkqkNSUg33ng0wmSoTFRVFmTJlrqnnjz/+4NVXXy20\nee/FzalTp/j7779p3749jRrN5uDBDkAtRFYxY8YCX4enKNcVHh5OeHj4dffz9s3PGmhz69sBy4DJ\naNMvpwK/A/OzKOP+5FE8LViwkKFDnyY1dRgm0xGqVDnGnj2bSEhIoFatRiQmrgJaABux2fpx5swx\ngkcQ4KQAAAy8SURBVIKCsqzLbreraYkemD37Zx59dAQmU1NSU/fz9tuv0LBhHS5fvsytt9563cVN\nFKUoym4KpbfVALa4f66DNi1zC/BtDsH4emjL63bs2CHvvfeefPHFFxIXF5e+feHCRWK1lpaAgFpi\ns5WVFStW+DBKTXR0tNx9930SElJTWrW6Xfbv35/vOvft2ye33nq31KnTSkaMeKlQx+3j4uLEYikl\nsM89Bh8lFkuIHDlypNBiUBRvIB9rvBY2d7wlU3x8PKdPn6Zq1arYbDYADh065PVsllkREZo370hE\nxC3Y7U+j062lVKl3OHJkH2XLlvWoztOnT9OwYUvi4kYj0hyL5X169izFvHnfF3D0WTt8+DAtW95F\nfHxk+rbg4M7Mn/96jqkhFKWoy+5KXuWkKWICAgKoV68eNpuNmJgYBg0aRP/+/bNcN9Xb/v33X/7+\n+2/s9ilAHUQex+lszNatW69bNjsrVqzA4bgDkSeBtiQl/cSiRT/jdDoLLO6chIaGotfHA2vcW/Zh\nt/9F/fr1C6V9RSlsqpMvojLOnNm5c2e+ltTzlNVqxeVK5r989U5crnMEBAR4XKfJZEKni82w5QoG\ngxG9vnD+FC0WC0uXziUoaAgBAbWwWG5j+vQvCA0NLZT2FaWwqeGaIubChf9v7/6Do6jPOI6/IRFI\nMEltqSlahGlQh6IoFgoDKkHbIjpUqqWio4V0Rmgbglo7ZqQEGQaDPwpImtrWxlSnrRQtRhgVxVpS\nLKCURAgtAWsbKamlQ2JtlIs1P65/PHveciYk5H5m9/OacW73bm/3+3jk2e/ufvfZZhYtWkRNTQ2V\nlZUxGTnT3t7OW2+9RU5OzinfeXr77cVUVLzI8eM3kpGxnYsv/pDt27d8rExxb7W0tHDBBV/k6NHp\ntLWNJzOznDvuuJ6VK+/p0/r6qrW1lcbGRoYPHx7VTkskVfT18X/J4Osk39jYSHl5OcuWLSMzMzPq\n9TU0NJCffw3Nzcdpa3uXoqJFPPjgyl7X2AkGg2zYsIFdu/YwevRIFixYwODBp/bkqUjNzc3cd99q\nGhv/zcyZ+dxyy80pV/NHpL9RkvepiROnU1t7FZ2dxUAzQ4deyvr1DzBr1qxkN01EYkgXXn3qwIF9\ndHZ+C2gG/kUgcDX79u1LdrNEJEGU5JOkqamJ0tJSOjs7e144CueckwcUA3nAHILBR2hvb+/hWyLi\nFUrySRAaOdPU1BT3hHvvvXcDG4FaoB54knXrfpawIYsiklyJrF3je8l41ipAVtY03nvvc87cTD74\noJ1jx46l9EM8RCQ21JNPkEOHDsWlYmRbW9tJb5QaPXo0HR17gKPOOztITw8ybNiwmGxfRFKbknyC\n5OXlsXnzZtasWROToZGdnZ0sXLiYjIzTyczM4oYb5neZ7MeNG0dx8WKGDLmQnJypDB06m6ee+lWf\nx7mLSP+iIZT91Jo1ZZSUbCAQeBYYREbGHIqKJnD//Su6XL6hoYEjR44wZsyYHm+Ieu655ygvf5z0\n9DSKiwtVylikH9A4+QQKBoNxv7lnxow5bN16PTDXeeclLrlkFTU1v49qvZs2beKmm75LIFAKfEBm\nZgkvvfQMU6ZMibbJIhJHGiefIFVVVYwfP57W1ta4bmfUqLNIT9/90Xxa2m5GjIj+iUarVj1MIFAG\nzAMWEggsY+3aR6Jer4gkh07Mxoh75ExlZSUZGRlx3d6KFUt49tlLaWmpBwYzeHANa9duj3q9dhTl\n3ven0d+PrET8TEk+BqqqqigsLGTu3Lns3bs3JhdWe5Kbm0t9fQ1btmyho6ODGTMe7XONd7c777yV\ngoLbCAQ+xE7XLKeo6MnoGywiSaFz8lE6ePAgs2fPpqKiwjMXKDdufJqysl+Qnp7GkiVFXHnllclu\nkoj0QBde46ijo4O0tLRkN0NEfExJXkTEwzS6Jgb279+f7CaIiJwSJfleCD1rdc6cOQQCgWQ3R0Sk\n15Tke+B+1mptbW1CRs6IiMSKhlB245133qGwsDDhFSNFRGJJPfluBINB8vLyYloxUkQk0TS6RkTE\nAzS6RkTEh3yf5Juamli6dCltbW3JboqISMz5OsmHRs4EAgE981REPMmXo2uS9axVEZFE811PvqGh\nIS7PWhURSUW+G10TDAapq6vjoosuits2REQSTQXKREQ8zJdDKHUxVUT8LtFJfiDwU2AnsA3Ii9eG\nqqqqGDt2LC0tLfHahIhIykv06JrZwCBgCjAJWO28FzORz1rNzs6O5epFRPqVRPfkpwIvONOvARNi\nuXJ3xUiNnBERSXxPPhtwnz/pwHY0ndGu+PDhw5SUlGjcu4iIS6KTfAuQ5ZrvMsEvX778o+n8/Hzy\n8/N7XPHIkSOpq6tj4EBPX0sWEQGgurqa6urqHpdL9BDK64BZQAEwGSgBrolYRkMoRUROUaqMkx8A\nPAyMc+YLgDcillGSFxE5RamS5HtDSV5E5BT58mYoERG/U5IXEfEwTyX53lxp9hrF7A9+i9lv8UL8\nYlaS7+cUsz/4LWa/xQtK8iIi0gdK8iIiHpaKQyirgWnJboSISD/zByA/2Y0QERERERERERFfSNgT\np1LAJCxGgNHAH4HtWE2gVLzGEq3TgF9iMb6GFbjzctxpQCUW3yvAWLwdr9uZwBHgPPwRcy32t7wN\neBR/xNxn12F/GGBJ8JkktiWe7gLqsJ0ZwGbgcmf6J8T4KVspYj6wxpk+A/gHsAnvxn0tUOFMT8Ni\n9XK8IacBVcBB4Hy8/297CJbk3bwec1RWA99wzTcmqyFxdh22t9/lzLvj/CpQnvAWxd9Q4HRn+lPA\n37DeXogX405zXucBj+GP3/kh4CtYr/Z8vB/zJGyH9iLwMlZ6PS4xe2WcfHdPnPKap4F217z7cO59\nICexzUmI41hsWcBTwFJO/G29GHcHltzXAb/G+7/zfOAYsNWZH4D3Yz4OPAjMAL6N/c5uMYs50U+G\nipdePXHKg9wxZgHvJqshcTYC28H9GFgPPOD6zKtxzwdygd3YoX2IF+MtAILAl4CLgceBT7s+92LM\nbwBvOtN/BZqB8a7PYxazV3q7O4CrnenJ2HlrP3id8I1jM7ELNl6Ti/Xw7sJ6t+DtuG8B7namW7Fe\n/R68Gy9YbPnAdGAv8E3gBbwdcwF2mhngLCypb8XbMUdlAHahYofz33nJbU5cjSJ84fVc7A7hndjF\nOi9ejV8HvE14FMI27Mli1Xgz7gxgA3b34k5sNJEffueQbdjfr9djTic8amw71jn1eswiIiIiIiIi\nIiIiIiIiIiIiIiIiIiJ+8UNsbHQ9cNiZfjKB25+HjUWPxkPA2didqd8D/gTchhXdCsnE7uE435nv\nrnJqd5UIb3XWuwu45iRtORP4UVTRiIjEwTygNNmN6IPJWA0SgLXAD4D7sZu4ljvvT8DuWn2b8I16\n3VVO7aoS4Wewu7hPw+o01QGDTtKmUtc6xOe8UtZAvMF9h99jWMLbgSW69a7PjjqvI4DnsZ7w88Bn\nI9Y3H/gN8DvsdvlQ6dY/Axuddd4DLHTeL8dq1r+OVQEEWIXVdd8JfL2LNi8GnnCmz8QqCwaA2wkn\n+UHOtg+5vjcVu3UfZ5sTnOlLCN/OvgWr5zLR+f/QhtVpehO763cq8Kqz/AuEq3U+gR1JiCjJS8oK\nYiVYpwL/6eIzsFM9ZVjNk9XAfV0sNxBLlFdhp1XSsPLFK4AbXct+DStlPMlZ3wTnO6OAy4ArsF56\nZGXAy4H9zvRdwPVY/ZmVwCec93fy8fLXXVVOTePEHd17zvaygf928f612E5sGtbrP8P5vB64FBGU\n5CW1hXq+kTU8QvMXAkuwnnwJ1pOO9LLzehSr6jcsYt0h5xGu0/8usAzrLX/BWf8WrN7IyIjvpREu\n//xP4CasJ92AVVPsTleVUzs4sbJottOWyGWzsB1fKXYt4GXsKKPN+bzDNS0+pyQvqSzUY28FhjvT\nI4FPOtP1QDHW816EFfaKNNF5zcUufh5z5iNLUde7ls3BTv/UYwl+OvBlrJ793yO+10p4p/Mi8Hks\nyW7DzqV3p7vKqV1V2NyNHU0Mdto2BvgLcDN2WusK4ACwwPneAE587oD4mFfqyYs3BLuZ34P1aF/F\nEm8o0X4fO00xBKveuLiLdZ6LnZPPBr6DJfeutrMZO63zCvZ3sRxL2vlYoj0dq2n/fsR3d2C9/T3Y\n0UQZVgv9MuCOk8Rahe04djjzBc7rncDPsfP4B4DfOu0rc9o2EDt6+R+W/CuwB1B0EE7yFxKuVCoi\n4lnzsKQZT5Oxc/1uy+K8zZ48AExJchskReh0jXhdZK891l7Fev5nu95bEedtnkwuds5ePXkRERER\nEREREREREREREREREREREfGr/wOATUZTAqbYcAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The prediction at least correlates with the true price, though there\n", "are clearly some biases. We could imagine evaluating the performance\n", "of the regressor by, say, computing the RMS residuals between the\n", "true and predicted price. There are some subtleties in this, however,\n", "which we'll cover in a later section." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many examples of regression-type problems in machine learning\n", "\n", "- **Sales:** given consumer data, predict how much they will spend\n", "- **Advertising:** given information about a user, predict the click-through rate for a web ad.\n", "- **Collaborative Filtering:** given a collection of user-ratings for movies, predict preferences for other movies & users\n", "- **Astronomy:** given observations of galaxies, predict their mass or redshift\n", "\n", "And much, much more." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exercise: Gradient Boosting Tree Regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many other types of regressors available in scikit-learn:\n", "we'll try a more powerful one here.\n", "\n", "**Use the GradientBoostingRegressor class to fit the housing data**.\n", "\n", "You can copy and paste some of the above code, replacing `LinearRegression`\n", "with `GradientBoostingRegressor`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.ensemble import GradientBoostingRegressor\n", "# Instantiate the model, fit the results, and scatter in vs. out" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Solution:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load solutions/05B_houses_regression.py" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 } ], "metadata": {} } ] }