{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear regression exercises\n", "\n", "Credits: Matthew Graham, Pavlos Protopapas\n", "\n", "This notebook provides exercises on linear regression. \n", "\n", "First we need to do some Python setup." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import sys\n", "import numpy as np\n", "import scipy as sp\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import sklearn as sk\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LinearRegression\n", "sns.set(style=\"ticks\")\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load and Explore Data\n", "\n", "For these exercises, we're going to use a data set of galaxies with known (spectroscopically confirmed) redshifts and SDSS magnitudes. We're interested in determining the redshift of a galaxy from its colors (photometric redshift).\n", "First we will load the data and have a look at it. The data can be downloaded from: http://www.astro.caltech.edu/~mjg/sdss_gal.csv.gz\n", "\n", "Note that you will need to uncompress the file before using it." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "sdss_gal_df = pd.read_csv('sdss_gal.csv', low_memory=False)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
u-gg-rr-ii-zredshift
01.882350.954590.446310.326590.091214
11.978710.959310.463580.322850.117409
21.840070.926700.402680.322950.091852
31.897171.096660.475450.346840.153276
40.981440.381450.344040.043650.090731
\n", "
" ], "text/plain": [ " u-g g-r r-i i-z redshift\n", "0 1.88235 0.95459 0.44631 0.32659 0.091214\n", "1 1.97871 0.95931 0.46358 0.32285 0.117409\n", "2 1.84007 0.92670 0.40268 0.32295 0.091852\n", "3 1.89717 1.09666 0.47545 0.34684 0.153276\n", "4 0.98144 0.38145 0.34404 0.04365 0.090731" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sdss_gal_df.head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1841297, 5)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sdss_gal_df.shape" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['u-g', 'g-r', 'r-i', 'i-z', 'redshift'], dtype='object')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sdss_gal_df.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll plot a random subsample of the data to get an idea of what it looks like." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "sdss_gal_sample = sdss_gal_df.sample(n=1000, random_state=0)\n", "redshift = sdss_gal_sample['redshift'].values\n", "gr = sdss_gal_sample['g-r'].values" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n", "\n", "ax.scatter(gr, redshift, color='gray', alpha=0.1)\n", "\n", "ax.set_xlabel('g-r')\n", "ax.set_ylabel('Redshift')\n", "ax.set_title('SDSS galaxy redshifts:\\n SDSS g-r color vs Redshift Scatter Plot')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The syntax of a regressor\n", "\n", "Scikit-learn models have a fixed syntax so it is the same for a simple linear regression operation as it is for something much more complex such as random forest. The specific model is represented as a class with model parameters defined in the class constructor:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m class sklearn.linear_model.LinearRegression(\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "class sklearn.linear_model.LinearRegression(\n", " fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The class will also have a fit method for fitting (training) the model which takes the data (X) as a Numpy array of shape [n_samples, n_features] and the response values (y) as a Numpy array of shape [n_samples, n_responses]:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def fit(X, y):\n", " ..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modeling the Data\n", "\n", "We're going to use train_test_split method to create our training and test data sets for a random subsample. We'll set the test set to be half the size of the training set:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "sdss_gal_sample = sdss_gal_df.sample(n=1000, random_state=0)\n", "\n", "y = sdss_gal_sample['redshift'].values\n", "X = sdss_gal_sample['g-r'].values\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X.reshape((len(X), 1)), y, test_size=0.33, random_state=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we define our basic linear regressor and fit it to the data. You can confirm that the values of the slope and intercept are what you would expect from a MSE loss function." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The equation of the regression line is: -0.061056359632285784 + 0.30472302853419486 * x\n" ] } ], "source": [ "regression = LinearRegression(fit_intercept=True)\n", "regression.fit(X_train, y_train)\n", "\n", "regression_line = lambda x: regression.intercept_ + regression.coef_ * x\n", "print('The equation of the regression line is: {} + {} * x'.format(regression.intercept_, regression.coef_[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And what does the regression line look like with the data:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVYAAAFiCAYAAACtRPA4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzsnXmYY1WZ/z+pSlJZautudmgBEQ9Igygi44A/kEURHG1UNkEHBRUdRjZx2gVoQKcVUUBkUwREaBTZGpBFZHEBERjUGbaDLYh0s/RaS5JKUknu749z39M3qaSSqk5qPZ/nqac7udu5tyrfvOfdTsjzPBwOh8PRPNomewAOh8Mx03DC6nA4HE3GCavD4XA0GSesDofD0WScsDocDkeTccLqcDgcTcYJq2PSUEotVkpdP9nj2BiUUtcqpb7ZwH7/UEodWGPbe5VSOvBaKaX+rJQaVEp9qZnjdUwM4ckegKNxlFL7AOcDuwBF4DngFK31E0qp44CfAEP+7quBh4ElWusXAuc4HjgD2BrIAE8CR2mtB5VS2wAXA/sCEeCfwPe01tfWGE8XcA7wUWBTYC3wOHC+1vrxpt14E1FKLQa+DuSAAvAscLrW+o+TNSat9e8BFXjrK8DDWut3gBFvYIXW+hu1zqGU8jC/Tw9zb38BfqS1/kUjY1BK7Qdcr7XeZjz34CjHWazTBKVUN3AXcAkwFyOM52A+RMIftdadQA9wIEZk/0cptcA/x77AfwNHa627gJ2BmwLH/wx4BdgWmAd8Cnijxng6gAeBXYEPAd3++X4OHLLxd9xSfuE/p02Ah4BfTvJ4KtkWeGYcx73dvy8FXAv8UCl1djMH5mgMZ7FOH94KoLW+0X89BPy62o5a6yLwd+CLSqk3AYuBjwN7YsT3z/5+64CfBg7dEzhVa532X/95lPF8EtgG2C+wfxq42f8BQCl1Mcai7QH+hrGwf1/thEqpXwLvBeLAX4EvaK2fUUpFMZbwT7TWlyil2oHfAfcBPwJeBOZrrdf659kDuBfYSms9XOsGtNYFpdQNwNeUUptqrVf7x38I+CawHcaiPVFr/b/+tndgZgY7AndjLEQZ/yYYQdsHKGHEcV+tdcnfZXel1Pcxwnkv8O9a62zQWlRKPYiZMeyjlLoIOA04BvCUUqcAD2mt/63WPfn3tQb4mVJqCLheKfVDrfVapdSnMdbwNpgZzXe01lcqpZLAPUCHUirln+at/n4XY74wh4BbgNO01vnRru9wFut04gWgqJT6qVLqg0qpOQ0edytGrAD+BHxAKXWOUmpv3+oM8hhwqVLqKF+QR+NA4L6AqNbiCWB3jJW9FPilUipWY997MIK1GfAUcAOA/0E+FjhXKbUzsAhoB76ltX4d4/I4InCeY4GfjyaqAL5gfwrjwljvv/dO4Grg8xir/UrgDqVUh7//7RjLfi7G0v1Y4JSnAyswbpHNga8REF5/jAcD2wO7AcdVjklrvT/we+AkrXWn1vpH/nM43389qqhWsAxjPL3bf72KDbOLTwMXKqXe6f8OPwi86l+jU2v9KsbddCrGsn8PcADwxcDzu0sptWgM45k1OIt1mqC1HvB9rP8F/BjYQil1N/BZrXXV6brPqxgRQGv9e6XURzEfjpOBsFLqR8AZvpV7uH/+M4GdlFL/55//iSrn3QTjnwVAKbU7RuDagNe01sq/ZjA49T2l1DcwU9W/VrnHqwPnWwysV0r1aK37tdZP+0Gi2zCi9W5/zGCs7i8Bl/vW7NHAh0d5Jkf4VmkX0Ad8TGtd8Ld9FrhSa/0nObdS6mvAv2BEMgJcpLX2gJuVUqcFzjsMbAlsq7VejhHIID/wBQul1J2YL5yWobUeVkqtYcPv/1eBzb9VSv0a86X7VI3j/yfw8h9KqSsx1vRF/vYPtWTgMwAnrNMIrfVz+FaOUmon4HrMH/nRoxy2NbAucI57gHuUUm3A+zBWl8aIyXqMNbjIn9ZeANyulNrGF5IgazEiIuf9C9DrR76vkveVUqcDJwBbYYSpGyPKZfiC+C2MuG+KmUrj79vv//+n/j63aK3/Fjh8GXCFUurNmClsf53g2U1a62P9e7wF2APzpQBmmv7vSqn/DOwfDYx/ZcWzeDnw/+9i3C6/VkqBCR59O7D99cD/M/45W4ZSKoJ5luv81x8EzsY8ozYgAfzfKMe/Ffg+8C5/3zDwP7X2d2zAuQKmKVrr5zH+vAV1dj2MkZYTWuuS1voBTABqxDl8P90FmA//3CrnfQB4v++fq4pS6r0YC/gIYI7WuhcjkqEqu38C+AjGxdCD8W9Sse9lmADeB3zrXcaaxQThjsH4fn9Wa0xB/Hv8PLBYKSVfEq9gXAy9gZ+E79t+DdhaKRUc05sC5xvUWp+utX4z8G/AaUqpAxoZSx3G24LuI5jMh8d9t88tmN/p5v7v4m42PN9q17gceB7YUWvdjXFtVPvdOSpwFus0wbdQD8VEtFcopeZjLNXHquzbjvnAnwbsh/GPoZT6CCYwdB9mCrwnZmp3ir/9OxhRet7f7wvAcgkKVXAdcCJwmz8dfg4zTX5XYJ8uzAd7NcbtsAhjsVajC5PhsBZjHf13xT19EmNZvh0zzf+pUurtWmsJtlzn/2yGSadqCK3180qp+zBBnVMxbpbblFK/wQTMEphn+Dvgj/79fEkpdak/jndjMgsk6PU8JnA4gPFRFtl43gDe3OjOSqm5GJ/p9zEBqrV+alwH5ndR8K3X9wNPB64xT1wv/ntd/n2k/L+/L/jHO+rgLNbpwyCwF/AnpVQaI6hPYwImwnv8qO4AZmrbDeyptZbp3nqMD/Fv/j7XA9/VWt/gb09gfJh9mEj7ttTwVfpW4vswUfNf+efTGLGWQNJ9mIDUC5gpcxZjEVbjOn+flf457ReGH0i7CPiU1jqltV6K8e9eGBjPIxj3wVNa63/UuEYtvgt8Tim1mdb6Scwz+iHmeS3Hd7/4QbSP+q/XA0digoPCjsBvgBRGhC/TWj88xrFU4yfA25RSfUqp20fZ76/+7385xv1yqtb6LH/sgxg/9E3+2D8B3CEH+jOgG4EX/etsBXzZ328Q84VTlhOrlLrH9z87Kgi5RteOmYKfqrRUa31V3Z0djhbiXAGOGYFSak/gnRi/osMxqThXgGPao5T6KWYKfoo/5XU4JhXnCnA4HI4m4yxWh8PhaDJOWKc4SqmrpnvkdSbcg6NxlFIHK6WWT/Y4JhMXvJog/JShZwNvJdnQ5g3gg9Wak2itT9iIa/4Bk1c67F/nBUy6zUWtaqShlDoBOFZrvZ+8tzH30GqUUm/BpJ8Fex5orfUeE3Dt7TBpZPtgcoBfBr7tp5ON95w7AU9rrcOB904EPq61rtoPdpzXORGTkpbFpLktB76mtb53jOf5uT/euj1tpxPOYp0gtNb/DDS46PTffnvgvRGi6if6bywn+i0Ct8IkwR8L3FVRPdQQSqkZ+0Uc/N2MR1TH+WxuxOT+zseU7n4aWDOO87SUUe7tYf9veQ7mXn6plOqsse+sYsZ+UKYjynTT7wd2wDTHONS3AJdrrRcH6vCvxjRRGQC+qrX+eb1z+xVKD/rVV88CHwDu9a+5XGu92B/DgcBVWuvt/NcrMK3jPoVpnhL1G6l8BlOH/k9/DHcopXbFWDERP1E9q7XepMo1TsQkn8/BlNt+QWv9mv8BHsZUdJ2B6S71M631iC76fuWZBraUSiE/5epXmC+RN/vP6u3+OX+ttf5EvedUcY2dgCswnaiKmBLQkyTzQCn1OqZE9NOYjlUJf1w/BPbG/H7O11pfUeXcIcxs4tNaa2lO/j8V++wHfBvTtq8fWKS1XqqUOgzTk2B7TLL/lVprqVT7HdCuNrT/ey/GKg7776W01lsopeLAEkx3rgimZ8SXtdY5pdTB/j38FDgJU0jw2VrPSWtdVEpdjWnCvl2Ve90VU468K+bv5b+01vcoszrCx4DD/Kq8e7TWh9e6znTCWaxTj09gGlh3Yap3KtnG37YVcDxwtT+dbQit9UuYPqvvrbdvgKMwJZI9/usXMMLRg2mKslQptblf4XUS8Hvf8qvWbOX9wLmY/rBbY7pv3VCx2yGY8tV3AMeqKkuaaK1fwVRffTTw9icwDVYK/rh+hRHvbYBLx3C/Qc4FtsCIgmJkueyRwEGYctB2jPg+ivn9HIzp9bpvlfF7mDaOVyqljlBm9QaL/zu9C1MVNg/zPKT59YB/r72YXhBf9sUQ4P8BxYD1/WdMyfLD/ust/P0uxDwXua+3YhrwCNthBHc+pmKrJv4X4vEY8X+pYlvMv4/bMV/EZ2As2+211j/A9C84zx/bjBBVcBbrVOQ2vWGZkJzfJSlICThba53DWKD3YjpCLRnDNWwrwQa5WGu9Ql5orYOrDiz1A1PvwghZPY7BWMR/AfAtlfW+sEj3pyW+FdqvlHoY017vN1XOtRTTL+Eav1vXkRjBBmOlboexaFcCj4w2KKVUX+DlYq31RX6Z5/P+e68r03j65IpDL9QbWgHuC8S01t/xt72glLoG88X02yqXXYhpUnOOOVw9hWnT+GdMM5k7tda3+Puu9n/wm+cITymlbsL0fGjIv+kL4WeA7bXWff5738ZYlef4u+UwgjdaT9t9/edWwMweFmqt0xV/s/IF/n3/y+Q+pdT9mN/Vt5mhOGGdetSqpRfWaq0zgdcvM/b2c1tjPgjjGpMy62udiuklACDLnDTCVhiLDrB9Ztf7YxJhrWyvV8tv90tMs+bNMR26slprOffpwHnAk8r0JL1Aa/3TGufB7/ZUhl8vfzHwr5hZQhumw1WQ4LPZFtiuQqTbqf6lIN21zgDOUEpthpmy34qZ4s/HNHMZgVJqb0yTmrdhWhp20GBHL5+tMNboMwERDGEEUni9jqgC/LaBgNhWwD/1yFaLW49hvNMO5wqYetSr2Jjn+8eEN2Es0IbwI9G7s6GVYBrTfEXYovIYypcfeTOmndwXgHm+ID3P6O3ngrzKBkGWBQnnYJqvjAm/69aDGIv9E5gAimx7TWt9gtZ6S+A/gB8ppbYf4yW+i3k+C/y2eScwsm1e8H5fAZ7X5S0Hu7TWhzVwL6sw3ai2U6YV4ysYX3s1bsI0RJmvte7BtI8c7flXvvcaRkR3CIyzR2s9b5RjxsurBFor+ryJDb/vGVmh5CzW6Ucbpn/omRhL6oOU+8aq4n9Y98RYRY9gOk+BWc3zJKXUEiBGHX8axnr0MNPSkB9c2ymw/Q1gG6VUpIbFcyOm5d/PMVbzEoxPdsU4I+tLMT7Et2DSlgBQSh0BPOK7Afr8MY+1hV8XJtgy4KfLnVZn/z/41z4FE/QqYKzKsNZ6RJd+pdQFmECkxjzXEzGpR2ml1HXAX/xA1R0Y182WmMbUnZiZS1Yp9a+YL5bb/NOuwgSv3qS1/qf/3hvAfPmdaLOywNXAxf5Y12L8rTtpre8f4zOqx++BNv86P8R0RHs/xlKXsTXcEnG64CzW6ccKjBX1GiZqe4Iu76ZfyRVKqUHM9Pr7GEvn0MDU7FpML9WXMT66UTMMtFlU7weYXqWvYUT1T4Fd7sfkhb7hR80rj78XExC6zT/+TRi/63i5HSNe/9RaB1c23Qt4QpkWi7cC/xEQmkY5CyPW/f54bxltZ/+L5BDMF97LmC+fy6ntyujGiGY/Jg90U/xgnNb675iGMl/DRP6fBHbxf28nAhf4v9evEFhlVptVIM7HrM7bp8ySOfcC/wBW+VkeYL6MXvXP2+/v03AQtFG0aS/5IYzvey3mb/BI//7ALAa5pz/Wutkt0wXXK2AaUZkK5XA4pibOYnU4HI4m0zIfq+/D+RCwSms9Yk0lpdQxmFQTMB3Xv6C1HrFyp8PhcEw3WmmxXotJkK7FS8C+WuvdMGkxP2rhWGYEWuvfODeAwzH1aZnFqrX+nZ/aU2v7o4GXj2Gikg6HwzHtmSrpVsdjFp0bF8os7bsnJsrcjFUxHQ6HA0yBx5bAE361Y0NMurAqpd6HEdZ96u3r778YOLuVY3I4HI4K3oufp9wIkyqsSqndMB2IPqirr10/Ar9D0uKK8+wALL/hhhvYYotqhUMOh8Mxdl5//XWOOeYYGFnKPCqTJqx+JcutwCe11i9s5OmKAFtssQXbbONctQ6Ho+mMycXYynSrG4H9gE38ao+zMY0f8PtTnoVph3aZ3wiioLV+V6vG43A4HBNFK7MCjq6z/QRMUwuHw+GYUbjKK4fD4WgyTlgdDoejyThhdTgcjibjhNXhcDiajBNWh8MxYVx88cU8+uij9Xesw5/+9Cc+//nPA/DAAw/wox9NrVYjk1555XA4WovneXieR1vb+O2oQqFAOLzxcnHyyZVrMW48BxxwAAcccEDTz7sxOGGdIsgffygUIhSqXFbJ4RgbK1as4LOf/Sx77bUXf/nLX7j00kt56aWXuOSSS8jn88yfP58lS5aQTCb57W9/y5IlS5gzZw677LILr7zyCldeeSWXXHIJq1atYuXKlcyZM4fzzz+fCy64gMcff5x8Ps8xxxzDUUcdxapVqzj11FNJpVIUi0UWL17MO97xDr7+9a/z9NNPEwqF+NjHPsZxxx3HokWL2G+//Tj44IP54x//yHe+8x2KxSILFizgnHPOIRqNsv/++7Nw4UIeeughCoUCF110ETvsUGv5L7j11lt5+umnOeuss1i0aBGdnZ08/fTTrF69mjPOOIODDzZN9q666iruuece8vk8Bx10EF/6Ur1ViMaPcwVMATKZDAMDAwwODjIwMEAmk6l/kMNRh5deeomFCxdy++23E4/Hufzyy7nmmmu47bbbWLBgAddccw25XI6zzjqLH//4x9x4442sW7eu7BzPPPMMl112Gd/73ve4+eab6erq4pZbbuGWW27hpptu4pVXXuGuu+5in332YdmyZSxbtoyddtqJ5557jjfeeIO77rqLO++8k49+9KNl583lcixatIgLL7yQO++8k2KxyNKlS+32OXPmcNttt3HUUUdx9dVXj+m+V61axdKlS7nyyiv53ve+B8Af/vAHXn75ZW6++WaWLVvGM888wxNPPDHOJ1sfZ7FOMplMhkKhUDZNKxQKZDIZEonEKEc6HKOz1VZbsfvuuwPw17/+leXLl3P00aZuZ3h4mN13350XX3yR+fPnM3/+fAAOPfRQbrrpJnuO/fffn1gsBsAjjzyC1pr77jPrUA4ODvLyyy+z66678rWvfY1CocCBBx7IzjvvzPz583nllVc477zz2Hfffdlnn/IeSy+99BLbbLMN229vFs497LDDuOGGGzjuuOMAeP/73w/AggULuP/+sa1veOCBB9LW1sZb3vIW1qxZY8f+yCOPsHDhQsB87v7xj3+w5557juncjeKEdRLxPI/h4eERvq9QKMTw8LB1DThmAAsWwDPP1N+vUXbZBZ5+etRdgl/Mnuex99578/3vf79sn2effXbUc8TjG1Za9zyPb3zjG7z3ve8dsd/111/Pb3/7W77yla9w/PHHs3DhQpYtW8Yf/vAHli5dyj333MOSJUvKzjUakUgEgLa2NorFsXUCjUajI97zPI/Pfe5zHHXUUWM613hxroBJpN4fl1vocQbx9NPgec37qSOqley+++489dRTvPzyywAMDQ3x0ksv8eY3v5lXXnmFFSvM4q133313zXPss88+3HjjjQwPm1XNX3rpJTKZDCtXrmTevHkcccQRfOxjH+OZZ55h3bp1eJ7HBz7wAU4++eQRAv7mN7+ZlStX2vEsW7asZdajjP2WW24hnU4D8MYbb7B2bUMN9caFs1gnkXrWqLNWHc1i7ty5LFmyhNNOO418Pg/AKaecwvbbb8/ZZ5/NCSecwJw5c9htt91qnuPwww9n5cqVfPSjH8XzPObMmcNll13G448/zk9+8hPC4TCJRILvfOc7rFq1iq9+9auUSiUATjvttLJzdXR0sGTJEk4++WQbvBI3RSvYZ599+Pvf/24t1kQiwXe/+13mzZvXkuvNiOWv/SVgXnrggQemXdtA8bEGRdTzPPtH6nC0mnQ6TTKZxPM8zjnnHLbbbjvr65ztrFixQlK5ttda/6PR45zFOskkEgkymYydXoHxLzlRdUwUv/zlL7ntttsYHh5m55135sgjj5zsIU17nLBOARKJhMtjdUwaxx13nLNQm4wT1imCE1SHY+bgsgIcDoejyThhdTgcjibjhNXhcDiajBNWh2OWcMkll/CTn/yk5vbf/OY3LF++fAJHNHNxwupwTBE8z6NUKk1axZ0T1ubhsgIcjilAq3KZL7/8cm6//Xa23HJL5s6dyy677MJNN93EL37xC4aHh9l22205//zzee6553jwwQd5/PHHufzyy7nkkkt47LHHRuwX7B3gqI0TVodjkmlVh7Onn36au+++m9tvv51i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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n", "\n", "x_vals = np.linspace(0, 3, 100)\n", "ax.plot(x_vals, regression_line(x_vals), color='red', linewidth=1.0, label='regression line')\n", "ax.scatter(X_train, y_train, color='gray', alpha=0.1, label='data')\n", "\n", "\n", "ax.set_xlabel('g-r')\n", "ax.set_ylabel('Redshift')\n", "ax.set_title('SDSS Galaxy Redshift Data:\\n Trip Duration vs Fare Scatter Plot')\n", "ax.legend(loc='best')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluate and Interpret the Model\n", "\n", "Let's have a bit more of a look at the linear model we've fitted." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Train vs Test Error\n", "\n", "Firstly how the MSE values look for the training and the test data sets:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The train MSE is 0.023277148842551346, the test MSE is 0.025720449934822826\n" ] } ], "source": [ "train_MSE = np.mean((y_train - regression.predict(X_train))**2)\n", "test_MSE = np.mean((y_test - regression.predict(X_test))**2)\n", "print('The train MSE is {}, the test MSE is {}'.format(train_MSE, test_MSE))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Uncertainty in the Model Parameter Estimates\n", "\n", "Now we're going to generate a whole load of random subsamples, fit these, and look at the distributions of the model parameters:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def find_regression_params(regression_model, samples):\n", " sdss_gal_sample = sdss_gal_df.sample(n=samples)\n", "\n", " y = sdss_gal_sample['redshift'].values\n", " X = sdss_gal_sample['g-r'].values\n", "\n", " X_train, X_test, y_train, y_test = train_test_split(X.reshape((len(X), 1)), y, test_size=0.33, random_state=0)\n", "\n", " regression_model.fit(X_train, y_train)\n", " \n", " return regression_model.intercept_, regression_model.coef_[0]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%" ] } ], "source": [ "regression_model = LinearRegression(fit_intercept=True)\n", "\n", "total_draws = 500\n", "samples = 1000\n", "regression_params = []\n", "\n", "for i in range(total_draws):\n", " if i % 10 == 0:\n", " out = i * 1. / total_draws * 100\n", " sys.stdout.write(\"\\r%d%%\" % out)\n", " sys.stdout.flush()\n", " \n", " regression_params.append(find_regression_params(regression_model, samples))\n", " \n", "sys.stdout.write(\"\\r%d%%\" % 100)\n", "regression_params = np.array(regression_params)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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s2YBUFFRwdq1a6mvr2fdunV07dqVnj17tjseEVEDWaRz+vGPodC9mMcfD1df3eoqCxYs4LrrrmPo0KGMHTuWGTNmcM899zB79mx+//vfc+ONN/L73/+e4cOHc/nll7Ny5UqOP/54vvzlL7Pddttx++230717d6qqqjj33HOZNm0aAK+++ioPP/ww/fr14+STT+a5555jn332aXLs2267jRkzZrSI6Qtf+AI///nPW427urqagQMHArD55puz9dZbs2zZMvr06dNknQEDBmx63L9/f1588cUm+6mrq+Ohhx7iwgsvbPV40ozydZNM+Zop99r6I+zBBx/k6KOPBoI/+mbPns3+++/PunXruOCCCzY1tkWkfdRAlk1qamDNmqbLttoKevRIJh5Jn0GDBmFmAOy000586UtfoqKiAjPj/fffB4LesMcff5w//vGPAKxfv55FixbRr18/Lr74Yl5//XW6dOlCVVXVpv3usccemxoIu+yyC++//36LBseZZ57JmWee2a64GxpaTtLQvMcvl3V+9atfsc8++7SITdKps+RrLrkXddNNN7HZZpsxevRoIPj2o0uXLjz55JOsXLmSU045hS9/+cubvg2RdKutrc14XUPXrl3p1q1bAhEJqIEsEWvWwIIFTZcNHqwGcipdfXWbvWdxiBbrLl26bHpcUVHBhg0bNj33u9/9jk9/+tNNtr3++uvZfvvteeihh9i4cSN77LFHxv1uttlmTfbVKJ8eud/+9rfMmTMHgIceeogBAwawaNEiBgwYQH19PatWrWrRwzZgwAAWL1686XF1dTX9+vXb9Hjy5Ml89NFHTJ48ueWJkdYpXzfJlK8DBgzgmWee2fS4urqafffNPAJm+vTpzJkzhylTpmxqRM+cOZMDDjiArl27st1227HXXnvx0ksvqYHcSdTV1WUcc967d281kBOkBrKIFNT+++/PXXfdxS9+8QsqKip49dVX2XXXXVm1ahUDBgygS5cuTJ8+PWOjojX59Mj98Ic/5Ic//OGmx4ceeijTp09nzz335O9//zvDhw9v0UP3uc99jqqqKt577z369+/Pww8/zDXXXAMEF/nNmzePKVOm0KWLrm0uJWnI1/3335/f/OY3mxpJ8+bN49xzz22x3ty5c7n11lu566672HLLLTctHzhwIE8//TRjxoxh7dq1zJ8/n9NPPz2veEWkKVX6LN743hu88b03kg5DSlQp59fZZ59NfX09o0ePZuTIkVx33XUAnHLKKUyfPp0TTjiBqqoqttpqq6LFNHbsWJYvX86IESO4/fbbOe+884Cgp278+PFAMDb5l7/8JWeeeSZf+cpXOProoxk6dCgAF110ER9++CEnnngiY8aMUS9yCUlDvm6zzTacffbZjB07lrFjx3LOOeds+objwgsv5KWXXgLgkksuoaamhm9+85uMGTOGX/7ylwCceuqp1NTUMHLkSMaOHctxxx3HLrvs0uZxS7kOSeeTtnysyDT2qTNovHvT7NmzGTRoUNLhlISlSzMPsejbN4eNhwwJ/o+M0xMpdwsXLuSwww4D2NHdqxIOJxaqxVL2Ovj5V1NTk3WIRQ+NcSyI9tRi9SBn8fqHr/P6h68nHYaUKOWXiCRNdUjSJG35qDHIWRx111EAVE2sSjYQKUnKLxFJmuqQpEna8lE9yCIiIiIiEWogi4iIiIhEqIEsIiIiIhKhBrKIiIiISIQayCLSIVOmTGHt2rUZn5s2bRoXX3xxh4/x8ssvM2rUKEaMGMGll16a8da8DQ0NXHrppYwYMYJRo0bxyiuvAPD+++9z3HHHMWbMGI455hjuueeeDscjnVfa8/W1117jxBNP5JhjjmHUqFE88sgjHY5HRPKnWSyyuG30bUmHICWslPLrjjvuYPTo0U3u7FVolZWVXHzxxQwbNozx48czd+5cDjrooCbrzJ07l6qqKh599FHmz59PZWUl999/P3379uXee++lW7du1NTUMGrUKA499FD69+8fW7ySXmnP1y222IIrr7ySIUOGUF1dzde+9jX2339/evXqVfA4S6kOSeeXtnxUAzmLwz99eNIhSAnrjPm1Zs0aJk6cyOLFi9m4cSNnn302H374IUuWLOH0009nm2224c477+TBBx/klltuoW/fvgwZMoRu3bp16LhLlixh9erV7LnnngAce+yxzJ49u0WDY/bs2Rx77LFUVFQwbNgwVq5cyZIlS+jXr9+mdWpra9m4cWOH4pHOobPm64477rhpnf79+9OnTx8++uijWBrInbEOSelKWz6qgSzSSQ25dkjG5T/+8o85Z99zADht+mk8+d8nW6wzfNBw7h17LwC3Pncrlz15WZtzTz755JP069ePW265BYBVq1ax9dZbM2XKFKZOnUqfPn1YsmQJ119/PdOmTaNnz5584xvfYNddd22xr6eeeorLL7+8xfItt9ySe++9t8my6upqBgwYsOnxgAEDqK6ubrFttvX69evHokWL+Pa3v82CBQs4//zz1XucAOUrOa0X/YPuxRdfpK6ujsGDB7f6WqV4amtrqaura7JsK6AimXAkRmogZ7HvrfsC8Mz4ZxKOREpRZ8yvnXfemSuvvJKrr76aQw45hH322afFOi+++CL77rsvffr0AeArX/kKVRluvzp8+HAeeuihnI6bafxmRUXLj6PW1hs4cCAzZsygurqac845hyOPPJLtt98+p+NL59SZ8xWCnugf//jHXHnllXTpEs/lQp2xDiWtrq6uxW2ht2xoyPgeS37Slo9qIGexpGZJ0iFICStEfuVyt6E7v3pnm+uM33s84/ce3+Z6O+64I9OmTeOJJ57gmmuuYb/99mPChAkt1svlgyKfHrkBAwawePHiTY8XL17cpJctn/X69+/P0KFDefbZZznqqKPajFMKR/lKzuutXr2a73znO0ycOJFhw4a1GV976XNO0iRt+agGsojkpLq6mm222YYxY8bQo0cPpk2bBkCPHj2oqamhT58+7LHHHlx22WUsW7aMnj17MmvWLHbZZZcW+8qnR65fv3706NGDF154gc9//vP85S9/4bTTTmux3qGHHspdd93FMcccw/z589l6663p168fixcvZptttmGLLbZgxYoVPP/884wbN65D50LSr7Pma21tLeeccw5jxozh6KOP7thJEJF2i62BbGZbAHOB7uFxHnD3i8xsCnAQ0PgdxTh3fyGuOESkMN544w2uuuoqunTpwuabb05lZSUAJ5xwAuPHj6dv377ceeedTJgwgZNOOom+ffuy6667FuSiuMrKSi644ALWrVvHgQceyIEHHgiwacq2k08+mYMOOognnniCESNGsOWWW/LrX/8agLfffpsrrriCiooKGhoa+Na3voWZdTgmSbfOmq9/+9vfePbZZ1m+fDnTp08H4IorruCzn/1sh+MSkdxVZBoHVQhmVgH0cPfVZtYVmAf8APguMNPdH+jg/ocA786ePZtBgwZ1ON7mGi8oyeVrwVKxdCksWNB02eDB0LdvDhsPGRL8n2H8nrRUjvlVjhYuXMhhhx0GsKO7VyUcTizirsUSH9Wh/NXU1LQYgzzgS1+iS0VFuz//Mu0ToHfv3vTo0aNd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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 2, figsize=(10, 5))\n", "\n", "ax[0].hist(regression_params[:, 0], bins=50, color='blue', edgecolor='white', linewidth=1, alpha=0.2)\n", "ax[0].axvline(x=regression_params[:, 0].mean(), color='red', label='mean = {0:.2f}'.format(regression_params[:, 0].mean()))\n", "ax[0].axvline(x=regression_params[:, 0].mean() - 2 * regression_params[:, 0].std(), color='green', linestyle='--', label='std = {0:.2f}'.format(regression_params[:, 0].std()))\n", "ax[0].axvline(x=regression_params[:, 0].mean() + 2 * regression_params[:, 0].std(), color='green', linestyle='--')\n", "\n", "ax[0].set_xlabel('Intercept')\n", "ax[0].set_ylabel('Frequency')\n", "ax[0].set_title('Histogram of Estimates of Intercept')\n", "ax[0].legend(loc='best')\n", "\n", "\n", "ax[1].hist(regression_params[:, 1], bins=50, color='gray', edgecolor='white', linewidth=1, alpha=0.2)\n", "ax[1].axvline(x=regression_params[:, 1].mean(), color='red', label='mean = {0:.2f}'.format(regression_params[:, 1].mean()))\n", "ax[1].axvline(x=regression_params[:, 1].mean() - 2 * regression_params[:, 1].std(), color='green', linestyle='--', label='std = {0:.2f}'.format(regression_params[:, 1].std()))\n", "ax[1].axvline(x=regression_params[:, 1].mean() + 2 * regression_params[:, 1].std(), color='green', linestyle='--')\n", "\n", "ax[1].set_xlabel('Slope')\n", "ax[1].set_ylabel('Frequency')\n", "ax[1].set_title('Histogram of Estimates of Slope')\n", "ax[1].legend(loc='best')\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. The Effect of Sample Size on Uncertainty\n", "\n", "We can also look at what the effect of sample size is on the model parameters:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%" ] } ], "source": [ "regression_model = LinearRegression(fit_intercept=True)\n", "\n", "def compute_SE(total_draws, samples, regression_model):\n", "\n", " regression_params = []\n", "\n", " for i in range(total_draws):\n", " regression_params.append(find_regression_params(regression_model, samples))\n", "\n", " regression_params = np.array(regression_params)\n", " return np.std(regression_params[:, 0]), np.std(regression_params[:, 1])\n", "\n", "total_draws = 100\n", "samples = range(100, 10001, 900)\n", "ses = []\n", "\n", "for i in range(len(samples)):\n", " out = i * 1. / len(samples) * 100\n", " sys.stdout.write(\"\\r%d%%\" % out)\n", " sys.stdout.flush()\n", " ses.append(compute_SE(total_draws, samples[i], regression_model))\n", "\n", "sys.stdout.write(\"\\r%d%%\" % 100)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ses = np.array(ses)\n", " \n", "fig, ax = plt.subplots(1, 1, figsize=(10, 5))\n", "\n", "ax.plot(samples, ses[:, 0], color='teal', label='SE of intercept')\n", "ax.plot(samples, ses[:, 1], color='brown', label='SE of slope')\n", "\n", "ax.set_xlabel('Number of Samples')\n", "ax.set_ylabel('SE')\n", "ax.set_title('Uncertainty in Parameter Estimates vs Sample Size')\n", "ax.legend(loc='best')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Residual Analysis\n", "\n", "In residual analysis we want to check that the residuals are uncorrelated and normally distributed." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sdss_gal_df = pd.read_csv('sdss_gal.csv', low_memory=False)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The equation of the regression line is: -0.0610563596323 + 0.304723028534 * x\n" ] } ], "source": [ "sdss_gal_sample = sdss_gal_df.sample(n=1000, random_state=0)\n", "\n", "y = sdss_gal_sample['redshift'].values\n", "X = sdss_gal_sample['g-r'].values\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X.reshape((len(X), 1)), y, test_size=0.33, random_state=0)\n", "\n", "regression = LinearRegression(fit_intercept=True)\n", "regression.fit(X_train, y_train)\n", "\n", "regression_line = lambda x: regression.intercept_ + regression.coef_ * x\n", "print 'The equation of the regression line is: {} + {} * x'.format(regression.intercept_, regression.coef_[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also check the value of $R^2$ for both the training and test data sets." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The train R^2 is 0.499745586579, the test R^2 is 0.458760740679\n" ] } ], "source": [ "train_R_sq = regression.score(X_train, y_train)\n", "test_R_sq = regression.score(X_test, y_test)\n", "print 'The train R^2 is {}, the test R^2 is {}'.format(train_R_sq, test_R_sq)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n5iOfFqA38bwfaC1ivA3AhuQ2iymZ7Rwdx3Ecx3EWO4spf78PaE48bwZ6FmgujuM4juM4i5rFVGLk\nfuBJItIBDKCu1C8u7JQcZ3FhRaM9YcZxnMVGoU4a+4N34ZiZBbfEicgZIvLOEMI48EHgeuA3aHbq\nloWdneMsHrq6YMsW2LpVH6Mi5CXn17/+Nd///vf32v66172OzZs379NYv/vd7/jABz4wV1NzHGeB\nyWbn5me+qLT1a0EscVENlBOi37+b2P5T4KcLMSfHWcx0dWkR6XQ67goyPKzbS12D8OSTTy7tCzqO\n48wRlbZ+LSZ3quM4BcjltHh0ftu2VEq3t7fP3rX6ox/9iGuvvZZsNstb3vIWrrzyStLpNMcddxwf\n/vCHueuuu/j85z9PdXU1DQ0NfOUrX+G///u/efjhh/nwhz/Ml7/8ZW655RZWr15Nd3c3AP/6r//K\n8uXLeeMb38hDDz3Ehg0buOqqq/jlL3/J1VdfzcTEBKlUiq997WuT5vLxj3+cTZs2MTIywlvf+lZO\nP/302V2U4zhLAl+/XMQ5zqInk1EhVwiLkavej//klpYWPve5z3HGGWdw7bXX0tDQwHnnncdtt93G\nrbfeymmnncaZZ57JjTfeSF9f357z7rnnHu644w5++MMfMjQ0xItf/OJpX+fRRx/lW9/6Fg0NDXz6\n05/m1ltv3dPKZmBggDvuuINrrrkGgNtuu232F+Q4zpJhqa9fLuIcZ5FTVRW7UPNJpfa20O0rhxxy\nCI899hhdXV28853vBGBwcJDHHnuMc889l0svvZQzzzyTVatWcfTRR+8579FHH+WpT30q6XSapqYm\njjjiiGlfp7Ozk49+9KMsW7aMhx9+mGOPPXbPvqamJj7xiU/wqU99ioGBAV7xilfs30U5jrMkWOrr\nl4s4x1nkpFLQ2KgxcEm3aS6nfXn3N0s1nU6zbt061qxZw+WXX05NTQ0/+tGPOOqoo/jJT37Cq171\nKj760Y/yzW9+k2uuuYa1a9cCcPjhh3P11VeTzWYZGRlh48aNANTV1bFz504A7rvvPgD6+/v56le/\nyk033QTA2WefTbJv844dO7jvvvv4+te/zujoKM973vN45StfOakpteM4i5+pvnDO3+st7fXLV0jH\nKQM6OjSJYXBQxVsqpQJurpIaOjo6OOuss3jLW95CJpPhgAMO4LTTTmNsbIzzzz+fhoYG0uk0F110\n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\naEjFX3V1HHNmIg90zsnyGkmsR6lZJu16xsbUbWyZuqOjKjQHBuL5JK/PkkQGB/W+NDTERZZHRjQW\nL5VS0dbUpNt37tSYt+T9tqLKExOTLaNWgDmf2YiqQqK+vV3HMkFY6O9jPmrLOY6zb7ir1FmMuIgr\nAbNpe9TVpS7U0VG1ym3dGrd0GhuLLVbmJty+PS54m3TF7dihIm9sTM+1Hq0mKgcH4/6hDz+sr5NM\nnLCiuVVVKqZSqTgDN2mJMpFhddsgtuwlM0/tPCvzYQkW27froyUQWP27gQEVX6C/g94XE6VWS89a\nhS1bFvdPtRi3LVt0TqOjao3bvj3OJk6StBqaZXSq92a2oiop6u3erFkztQt2pq4anvzgOI6zdHER\nVyL2paq+fXD39cV1ziwof+vW/9fevQdHdpZ3Hv+27tJIoxmNPGhkD0wImSeJvVyWJJjEJCQLFUxB\nQSWwy9oQJ0AlMdQua6o2xCkTD1Xs5gZk2U0CwWUHE0NcuUBwCsxCLa6NbUxMYtjYOHnsoQZwgmfs\nuUozo9G194+nX5+jntZdfbqP9PtUqdQ6p8/pp9/uPv3ovUZN1dGj8aWf5j2bm4uftNJDZ2c8Xkq0\nUgLY05MlgidORJJz5kwkP3v3xjlOnMjWJf3hH84mzq1Uoi9dmmKjuztbAzafqJ04EedPj93bG+dL\nSVJfXyRQjz4atXGzs9E0m+ZnO3Uq6/d26lTEkZKevr6IZXo6S9bS85uayppmU23ik09myXCqVUtT\ntYyMLB5IMDi48mu0VFIFUY67dq38n3rqS5gS7rQKRaN1VlezqoYGP4iIbE+6/LehlBSdPx8J0Oxs\nfNEfPZot1p7mljt+fHGzXvrd2ZmtypD6mg0MZAlYtZotFZUmHD52LJpx9+yJZOTkybid5jq7cGHx\n6gdp6oz8QICJiUj08n2/duyI86c1RS9cgG9+Mx47zeuWErE0n9sTT8TxfX1ZEnP+fCSanZ3xXPKL\n1Q8NReKYmjzSVB+p9u7IkbjP1FT0kTt6NJpVU+LU3x9NwyvVajVKqlJT8uzs4vn9lpIGo5w7t/Q6\nqylBy9f21Ws0+KGVNPBCRKRYSuLaUGdn1syYkpLBwWyOsrQOaJpyI9XCLSxEIpE6+lerWc1QGpE5\nOxsJREpwUuIBWVPrxEQkc3NzcaxZJCbp2DT3XH9/NoFvb2+cLz8it1qN+37rWzElSKrpmpzMmkxP\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 2, figsize=(10, 5))\n", "\n", "errors = y_train - regression.predict(X_train)\n", "ax[0].scatter(X_train, errors, color='blue', alpha=0.1, label='residuals')\n", "ax[0].axhline(y=0, color='gold', label='zero error')\n", "\n", "\n", "ax[0].set_xlabel('g-r')\n", "ax[0].set_ylabel('redshift')\n", "ax[0].set_title('SDSS Galaxy Redshift Data:\\n Predictor vs Residual')\n", "ax[0].legend(loc='best')\n", "\n", "ax[1].hist(errors, color='blue', alpha=0.1, label='residuals', bins=50, edgecolor='white', linewidth=2)\n", "ax[1].axvline(x=0, color='gold', label='zero error')\n", "\n", "\n", "ax[1].set_xlabel('g-r')\n", "ax[1].set_ylabel('redshift')\n", "ax[1].set_title('SDSS Galaxy Redshift Data:\\n Residual Histogram')\n", "ax[1].legend(loc='best')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple Linear Regression\n", "\n", "Clearly redshift is not just a function of one color but of several so here we will look at fitting a linear model wiht multiple parameters." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "sdss_gal_sample = sdss_gal_df.sample(n=1000, random_state=0)\n", "#sdss_gal_sample['lpep_pickup_datetime'] = nyc_cab_sample['lpep_pickup_datetime'].apply(lambda dt: pd.to_datetime(dt).hour)\n", "#sdss_gal_sample['Lpep_dropoff_datetime'] = nyc_cab_sample['Lpep_dropoff_datetime'].apply(lambda dt: pd.to_datetime(dt).hour)\n", "msk = np.random.rand(len(sdss_gal_sample)) < 0.8\n", "train = sdss_gal_sample[msk]\n", "test = sdss_gal_sample[~msk]\n", "\n", "y_train = train['redshift'].values\n", "X_train = train[['g-r', 'r-i', 'i-z']].values\n", "\n", "y_test = test['redshift'].values\n", "X_test = test[['g-r', 'r-i', 'i-z']].values" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The equation of the regression plane is: -0.118278181823 + [ 0.04995913 0.60563456 -0.07310092]^T . x\n" ] } ], "source": [ "multi_regression_model = LinearRegression(fit_intercept=True)\n", "multi_regression_model.fit(X_train, y_train)\n", "\n", "print 'The equation of the regression plane is: {} + {}^T . x'.format(multi_regression_model.intercept_, multi_regression_model.coef_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Train vs Test Error\n", "\n", "Again we can look at various model diagnostics: first comparing the MSE and $R^2$ values for the training and test data sets:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The train MSE is 0.00803744339786, the test MSE is 0.0120804080393\n", "The train R^2 is 0.824913861836, the test R^2 is 0.760122581872\n" ] } ], "source": [ "train_MSE= np.mean((y_train - multi_regression_model.predict(X_train))**2)\n", "test_MSE= np.mean((y_test - multi_regression_model.predict(X_test))**2)\n", "print 'The train MSE is {}, the test MSE is {}'.format(train_MSE, test_MSE)\n", "\n", "train_R_sq = multi_regression_model.score(X_train, y_train)\n", "test_R_sq = multi_regression_model.score(X_test, y_test)\n", "print 'The train R^2 is {}, the test R^2 is {}'.format(train_R_sq, test_R_sq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Uncertainty in the Model Parameter Estimates\n", "\n", "And the uncertainties in each parameter estimate (u-g, g-r, r-i, i-z):" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def find_regression_params(regression_model, samples, cols):\n", " sdss_gal_sample = sdss_gal_df.sample(n=samples)\n", "\n", " y = sdss_gal_sample['redshift'].values\n", " X = sdss_gal_sample[cols].values\n", "\n", " X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)\n", "\n", " regression_model.fit(X_train, y_train)\n", " \n", " return np.hstack((np.array([regression_model.intercept_]), regression_model.coef_))\n", "\n", "\n", "def plot_hist_se(vals, bins, title, xlabel, ax):\n", " mean = vals.mean()\n", " std = vals.std()\n", " ax.hist(vals, bins=bins, color='blue', edgecolor='white', linewidth=1, alpha=0.2)\n", " ax.axvline(mean, color='red', label='mean = {0:.2f}'.format(mean))\n", " ax.axvline(mean - 2 * std, color='green', linestyle='--', label='std = {0:.2f}'.format(std))\n", " ax.axvline(mean + 2 * std, color='green', linestyle='--')\n", "\n", " ax.set_xlabel(xlabel)\n", " ax.set_ylabel('Frequency')\n", " ax.set_title(title)\n", " ax.legend(loc='best')\n", "\n", "\n", " return ax" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%" ] } ], "source": [ "total_draws = 500\n", "samples = 1000\n", "regression_params = []\n", "\n", "for i in range(total_draws):\n", " if i % 10 == 0:\n", " out = i * 1. / total_draws * 100\n", " sys.stdout.write(\"\\r%d%%\" % out)\n", " sys.stdout.flush()\n", " \n", " regression_params.append(find_regression_params(multi_regression_model, samples, ['g-r', 'r-i', 'i-z']))\n", " \n", "sys.stdout.write(\"\\r%d%%\" % 100)\n", "regression_params = np.array(regression_params)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n+ACvf/3refDBB7n00kuZPn06PT09vP3tb+ess87i9NNP58477+Ttb3/7hsc67rjjOO644xqubcWK\nFRsCfezYsTz77LOb3OeNb3xjzd8dOXIk73vf+3j00Ue5+uqrh/iqFGpvYExE3Eol+z8JTAXuqN5+\nM3AIbTrB7HavWjq5L8qU0StWrGDrrbfe8PPYsWP53//9303uUyu3t9hiCxYvXszHP/5xdt99d3bY\nYYcsXyblYLj13ste9jJOOukkZsyYwf3338/s2bO57rrrWLVqFY899hiTJ0/mzjvv5K//+q+zf7EE\ndHZWtxvHUnmyv9SMwfpmuO2v1NpX/vOf/8wvf/lL5s6dy2mnncanPvUpbrzxRo488sgX/brV4gRz\nHefedS7QXiHV0wO9vQOX/UUfjOgqpp5Wa8cx3awLL9zsu3N5eeUrXwnAuHHj2H333enq6mLChAms\nXr2apUuX8tRTT3HSSScBlfBeunQp++67L5dffjnXXXcdXV1drFmzZsP61r87t+OOO7J69eoBj1Xv\nHb8nnnhiw6ks3vnOd7L11lvT09Oz4bGHeiTyNddcw2OPPcY//MM/8IMf/GBIv1ugXuAi4ArgFVQm\nlLtSSn3V258FJtRbSUR0A2fnVGNuOm67p3bWQ2flfT2l6AszekAmr3+8jXN5c7k9ZcoUfvjDH/Jv\n//ZvfPnLX+YjH/nIi3ptOoa911Dv7bXXXowcORKAfffdlz/84Q8AfPazn6W7u5vRo0ezxx575PZx\nU5Ukqws02N/zMWNg7NjW1/NidPpYKl/2V3218qT0WZLz/spgfTPc9ldq7StPmDCBsWPHst9+lfNM\nv+lNb+Kee+5xglnZ6e2FpUsHLtu2D3DCQRnq6hq8oSZOnMiOO+7IVVddxahRo7jhhht45StfySWX\nXMJRRx3FQQcdxPXXX8+NN97Y0PrqveO3yy67sHDhwg0/P/vss9xxxx28+tWv5s4772Tq1KkNPacv\nfelLbL/99vzd3/0dY8eO3fAfzmHiUeBX1QnlRyPiSSpHMK83Dni63kpSSt1Ad/9lETGZyjmdVSK1\nsh7Me1WUKaO33nprRo0axdKlS9l55525++67N7lwyT777LNJbvf19fHe976Xyy+/fMMO9HPPPTeE\nV0FFGG6998UvfpGXvvSlnHjiifziF79gxx13pKuri7vvvpsrr7ySUaNGceqpp/Lud797CK+C1LjB\n/p5PmlTySSFJpVMrT8yS2obb/kqtfeUtt9ySyZMnb7hOxH333ccrXvGKIbwKQ+MEs6SW23bbbTn+\n+OOZOXMma9eu5eUvfzkzZszg0EMP5bOf/Sxf/vKX2WGHHfjTn/6Uy+Mfc8wxnHnmmRxzzDGMGjWK\niy++GICrr76aSZMm8Za3vKXm7x1xxBGceeaZXH/99axdu5bzzjsvl/pyMgt4FfChiNgJGA/cGhHT\nUkq3AzOARQXWJ6kkisjoz3zmM5xxxhmsXbuW/fffn7333huAWbNmMW/evJq53dXVxaxZszjxxBMZ\nPXo0L3vZyzjnnHMyq0mtV8beO+mkk5g9ezZ33HEHI0eO5Pzzzwdgu+2246ijjmLLLbfksMMOy/U/\nbJIkqTzKuL8y2BzHeeedx2c+8xnWrl3LxIkTcz0Hc1dfX1/9e5XI+iPlbrvtNiZOnJj7403+/GQA\nlpy2JPfHapXlyzd912rKuyYzcgSwZEkRJbVUO46pyu03v/nN+knrXVNKS4qoISJGAwuASUAfcCbw\nR2A+MBp4BDgxpbS2iXVPpoW53IxO3O5rZT10Vt7X04l9oXJkct6GQy5LjeqYrJ48ufLvRn+fB/t7\nPmkSvOxluVeVqcHG0lxWFjomK5pRzZfl9y2peQTzcMuSLNk3tTWTyx7BLEkdIKX0HHBsjZsOanUt\nkiRJkiSpfYwougBJkiRJkiRJ0vDkEcx1PPrhR4suQRlzTKXO43avWuwLFS0i5gDvpHKqosuAO6ic\nzqgPeAg4JaW0rrACpRIwq9uHY6k8dUJ/9fRULtTX35gxXqTvxeiEvmkVj2CuY/TI0YweObroMpQh\nx1TqPG73qsW+UJEiYhrwt8AbqZyuaGfgc8DclNIBQBdweGEFSiVhVrcPx1J56oT+6u2tnJO9/9fG\nE84amk7om1ZxgrmOX/zxF/zij78ougxlyDGVOo/bvWqxL1SwtwI/A24EvgN8F5hK5ShmgJuB6cWU\nJpWHWd0+HEvlyf5SM+yb7HiKjDoO/eqhgFeUbCeOqdR53O5Vi32hgv0lsAvwDmBX4CZgREqpr3r7\ns8CEeiuJiG7g7JxqlApnVrcPx1J5sr/UDPsmOx7BLKllvvrVr26ybPXq1bz5zW8e8rrWrVvHpz/9\naY4++mhmzpzJE088scl9fvjDH3LEEUdw9NFHc+211wLw/PPPM3v2bI499liOPPJIbrvttqE/EUlq\nQ2Z0yz0J3JJSei6llIBVDJxQHgc8XW8lKaXulFJX/y8qE9bDRhl6D+Bd73oXM2fOZObMmcyZM2fI\njy1JktpXGfZXnnvuOU4//XTe8573MGvWLJYsWTLkx86LE8ySWubyyy/PbF0/+MEPeO655/jmN7/J\n6aefzr/+678OuP3555/n/PPP56qrrmLhwoV885vf5I9//CM33XQTL33pS/na177GFVdcwb/8y79k\nVpMkDWdmdMvdDRwaEV0RsRMwFritem5mgBnAXUUV10pl6L3Vq1fT19fHwoULWbhwIeeff35mNUmS\npOGvDPsr1157LWPGjOHaa69l7ty5pdpX9hQZUgeY/PnJNZfP/tvZnPK6UwCYeeNM7npi0//H7jdx\nP75x5DcAmP/AfM6969y6Hx95/PHHmTNnDltssQXr1q3j4osv5tvf/jZ//vOf6e7uZvbs2Zxxxhk8\n88wzTJo0aZPf7+np4eSTTx6w7PWvfz2nnnrqhp8feOABDjjgAACmTJnCQw89NOD+jz32GJMmTWLC\nhMrBYFOnTuW+++7j0EMP5a1vfSsAfX19jBw5crPPRZLyZkZ3ZkanlL4bEQcC/03loI9TgMeB+REx\nGngEuC7PGuy9F3pvp512YuXKlcyaNYs1a9bw8Y9/nClTpmz2+UiSpPy5v/LC/sqvfvUrDjzwQAB2\n2203Hnvssc0+l1ZygllS5n70ox/x6le/mtmzZ3P//ffz7LPP8o//+I989atfpbu7myuvvJI99tiD\nj33sY/z0pz/l3nvvHfD7Y8eOZeHChZt9jBUrVrD11ltv+HnkyJGsWbOGLbbYYsPt48aNG7DOFStW\nMHbs2A23f+QjH+G0007L6mlL0rBgRpdHSukTNRYf1PJCWqTMvbfllltywgkncNRRR7FkyRJOPPFE\nvv/972/4PUmS1BnKvL/yyle+kkWLFjF9+nR++tOfsmzZMtauXVuKgzLcY5I6QCMnrF/4rs0HIMCJ\nU0/kxKkn1r3fkUceyfz58/ngBz/IuHHj+NjHPjawniVLOOigyv+f9957703+89bIO35bb701PT09\nG35et27dgPVsfHtPT8+GgP7d737HKaecwrHHHsthhx1W9/lIUp7MaDO6KPbeC7236667sssuu9DV\n1cWuu+7KS1/6UpYvX86OO+5Y93lJkqT8uL/ywv7K9OnTeeyxxzj22GPZZ5992HPPPUsxuQxOMNd1\n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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 4, figsize=(20, 5))\n", "\n", "ax[0] = plot_hist_se(regression_params[:, 0], 50, 'Histogram of Estimates of Intercept', 'Intercept', ax[0])\n", "ax[1] = plot_hist_se(regression_params[:, 1], 50, 'Histogram of Estimates of Slope of g-r', 'Slope of g-r', ax[1])\n", "ax[2] = plot_hist_se(regression_params[:, 2], 50, 'Histogram of Estimates of Slope of r-i', 'Slope of r-i', ax[2])\n", "ax[3] = plot_hist_se(regression_params[:, 3], 50, 'Histogram of Estimates of Slope of i-z', 'Slope of i-z', ax[3])\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluating the Significance of Predictors" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from statsmodels.tools import add_constant\n", "\n", "predictors_multiple = ['g-r', 'r-i', 'i-z']\n", "predictors_simple = ['g-r']\n", "\n", "X_train_multi = add_constant(train[predictors_multiple].values)\n", "X_test_multi = add_constant(test[predictors_multiple].values)\n", "\n", "X_train_simple = add_constant(train[predictors_simple].values)\n", "X_test_simple = add_constant(test[predictors_simple].values)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Measuring Significance Using F-Stat, p-Values" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "F-stat: 1268.95711135\n", "p-values: 1.02412136235e-30 (intercept), 1.32043878503e-07 (g-r), 4.33015330103e-186 (r-i), 0.000478572181169 (i-z)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/mjg/anaconda2/lib/python2.7/site-packages/statsmodels/compat/pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.\n", " from pandas.core import datetools\n" ] } ], "source": [ "import statsmodels.api as sm\n", "multi_regression_model = sm.OLS(y_train, X_train_multi).fit()\n", "print 'F-stat:', multi_regression_model.fvalue\n", "print 'p-values: {} (intercept), {} (g-r), {} (r-i), {} (i-z)'.format(*multi_regression_model.pvalues)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Measuring Significance Using AIC/BIC" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AIC for ['g-r', 'r-i', 'i-z']: -1604.44293822\n", "BIC for ['g-r', 'r-i', 'i-z']: -1585.64493686\n" ] } ], "source": [ "print \"AIC for ['g-r', 'r-i', 'i-z']:\", multi_regression_model.aic\n", "print \"BIC for ['g-r', 'r-i', 'i-z']:\", multi_regression_model.bic" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AIC for ['g-r']: -749.128600308\n", "BIC for ['g-r']: -739.729599627\n" ] } ], "source": [ "simple_regression_model = sm.OLS(y_train, X_train_simple).fit()\n", "print \"AIC for ['g-r']:\", simple_regression_model.aic\n", "print \"BIC for ['g-r']:\", simple_regression_model.bic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Measuring Significance Using R^2" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Simple Model: train R^2 = 0.495510533769, test R^2 = 0.443654760099\n", "Multiple Predictor Model: train R^2 = 0.824913861836, test R^2 = 0.760122581872\n" ] } ], "source": [ "simple_model = LinearRegression(fit_intercept=False)\n", "simple_model.fit(X_train_simple, y_train)\n", "\n", "print \"Simple Model: train R^2 = {}, test R^2 = {}\".format(simple_model.score(X_train_simple, y_train), simple_model.score(X_test_simple, y_test))\n", "\n", "multiple_model = LinearRegression(fit_intercept=False)\n", "multiple_model.fit(X_train_multi, y_train)\n", "\n", "print \"Multiple Predictor Model: train R^2 = {}, test R^2 = {}\".format(multiple_model.score(X_train_multi, y_train), multiple_model.score(X_test_multi, y_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. The Effect of Number of Predictors on R^2" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "multi_regression_model = LinearRegression(fit_intercept=True)\n", "\n", "cols = ['u-g', 'g-r', 'r-i', 'i-z']\n", "train_R_sq = []\n", "test_R_sq = []\n", "for i in range(1, len(cols) + 1):\n", " predictors = cols[:i]\n", " X_train = train[predictors].values\n", " X_test = test[predictors].values\n", " \n", " multi_regression_model.fit(X_train, y_train)\n", " \n", " train_R_sq.append(multi_regression_model.score(X_train, y_train))\n", " test_R_sq.append(multi_regression_model.score(X_test, y_test))" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(10, 5))\n", "\n", "ax.plot(range(1, len(cols) + 1), train_R_sq, color='blue', label='train R^2')\n", "ax.plot(range(1, len(cols) + 1), test_R_sq, color='red', label='test R^2')\n", "\n", "ax.set_title('Number of Predictor vs Model Fitness')\n", "ax.set_xlabel('Number of Predictors')\n", "ax.set_ylabel('R^2')\n", "ax.legend(loc='best')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple Linear Regression with Interaction Terms\n", "\n", "Now we'll consider multiple linear models with cross terms:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.preprocessing import PolynomialFeatures\n", "\n", "y_train = train['redshift'].values\n", "X_train = train[['g-r', 'r-i', 'i-z']].values\n", "\n", "y_test = test['redshift'].values\n", "X_test = test[['g-r', 'r-i', 'i-z']].values\n", "\n", "gen_cross_terms = PolynomialFeatures(degree=3, interaction_only=True)\n", "cross_terms = gen_cross_terms.fit_transform(X_train)\n", "X_train_with_cross = np.hstack((X_train, cross_terms))\n", "cross_terms = gen_cross_terms.fit_transform(X_test)\n", "X_test_with_cross = np.hstack((X_test, cross_terms))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's get fit statistics for the model with cross terms:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The train MSE with interaction terms is 0.00596191392412, the test MSE is 0.0147494452823\n", "The train R^2 with interaction terms is 0.870126801102, the test R^2 is 0.707124226133\n" ] } ], "source": [ "multi_regression_model = LinearRegression(fit_intercept=True)\n", "multi_regression_model.fit(X_train_with_cross, y_train)\n", "\n", "train_MSE = np.mean((y_train - multi_regression_model.predict(X_train_with_cross))**2)\n", "test_MSE = np.mean((y_test - multi_regression_model.predict(X_test_with_cross))**2)\n", "print 'The train MSE with interaction terms is {}, the test MSE is {}'.format(train_MSE, test_MSE)\n", "\n", "train_R_sq = multi_regression_model.score(X_train_with_cross, y_train)\n", "test_R_sq = multi_regression_model.score(X_test_with_cross, y_test)\n", "print 'The train R^2 with interaction terms is {}, the test R^2 is {}'.format(train_R_sq, test_R_sq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compare to models without the cross terms:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The train MSE without interaction terms is 0.00803744339786, the test MSE is 0.0120804080393\n", "The train R^2 without interaction terms is 0.824913861836, the test R^2 is 0.760122581872\n" ] } ], "source": [ "multi_regression_model.fit(X_train, y_train)\n", "\n", "train_MSE = np.mean((y_train - multi_regression_model.predict(X_train))**2)\n", "test_MSE = np.mean((y_test - multi_regression_model.predict(X_test))**2)\n", "print 'The train MSE without interaction terms is {}, the test MSE is {}'.format(train_MSE, test_MSE)\n", "\n", "train_R_sq = multi_regression_model.score(X_train, y_train)\n", "test_R_sq = multi_regression_model.score(X_test, y_test)\n", "print 'The train R^2 without interaction terms is {}, the test R^2 is {}'.format(train_R_sq, test_R_sq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polynomial Regression" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "y_train = train['redshift'].values\n", "X_train = train[['g-r', 'r-i', 'i-z']].values\n", "\n", "y_test = test['redshift'].values\n", "X_test = test[['g-r', 'r-i', 'i-z']].values\n", "\n", "gen_poly_terms = PolynomialFeatures(degree=2, interaction_only=False)\n", "X_train_with_poly = gen_poly_terms.fit_transform(X_train)\n", "X_test_with_poly = gen_poly_terms.fit_transform(X_test)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The train MSE for degree 2 poly model is 0.00578648851031, the test MSE is 0.0122138882614\n", "The train R^2 for degree 2 poly model is 0.873948234949, the test R^2 is 0.757472100948\n" ] } ], "source": [ "poly_regression_model = LinearRegression(fit_intercept=True)\n", "poly_regression_model.fit(X_train_with_poly, y_train)\n", "\n", "train_MSE= np.mean((y_train - poly_regression_model.predict(X_train_with_poly))**2)\n", "test_MSE= np.mean((y_test - poly_regression_model.predict(X_test_with_poly))**2)\n", "print 'The train MSE for degree 2 poly model is {}, the test MSE is {}'.format(train_MSE, test_MSE)\n", "\n", "train_R_sq = poly_regression_model.score(X_train_with_poly, y_train)\n", "test_R_sq = poly_regression_model.score(X_test_with_poly, y_test)\n", "print 'The train R^2 for degree 2 poly model is {}, the test R^2 is {}'.format(train_R_sq, test_R_sq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Effect of Polynomial Degree on Model Performance" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%" ] } ], "source": [ "from sklearn.preprocessing import MinMaxScaler\n", "\n", "train_R_sq = []\n", "test_R_sq = []\n", "max_deg = 10\n", "\n", "min_max_scaler = MinMaxScaler()\n", "X_train = min_max_scaler.fit_transform(X_train)\n", "X_test = min_max_scaler.fit_transform(X_test)\n", "\n", "for d in range(max_deg + 1):\n", "\n", " out = d * 1. / max_deg * 100\n", " sys.stdout.write(\"\\r%d%%\" % out)\n", " sys.stdout.flush()\n", "\n", " gen_poly_terms = PolynomialFeatures(degree=d, interaction_only=False)\n", " X_train_with_poly = gen_poly_terms.fit_transform(X_train)\n", " X_test_with_poly = gen_poly_terms.fit_transform(X_test)\n", " \n", " poly_regression_model = LinearRegression(fit_intercept=False)\n", " poly_regression_model.fit(X_train_with_poly, y_train)\n", " \n", " train_R_sq.append(poly_regression_model.score(X_train_with_poly, y_train))\n", " test_R_sq.append(poly_regression_model.score(X_test_with_poly, y_test))\n", " \n", "sys.stdout.write(\"\\r%d%%\" % 100)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nho8+lgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 2, figsize=(15, 5))\n", "\n", "ax[0].plot(range(max_deg + 1), np.array(train_R_sq), color='blue', label='train R^2')\n", "\n", "ax[0].set_title('Number of Polynomial Degree vs Model Fitness')\n", "ax[0].set_xlabel('Degree of Polynomial')\n", "ax[0].set_ylabel('Train R^2')\n", "ax[0].legend(loc='best')\n", "\n", "ax[1].plot(range(max_deg + 1), test_R_sq, color='red', label='test R^2')\n", "\n", "ax[1].set_title('Number of Polynomial Degree vs Model Fitness')\n", "ax[1].set_xlabel('Degree of Polynomial')\n", "ax[1].set_ylabel('Test R^2')\n", "ax[1].legend(loc='best')\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Examples of Overfitting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We're going to overload the train_test_split method to return a number of samples and also a validation set if requested:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sdss_gal_df = pd.read_csv('sdss_gal.csv', low_memory=False)\n", "\n", "def train_test_split(df, n_samples, validation=False):\n", " if validation:\n", " sdss_gal_sample = df.sample(n=n_samples)\n", "\n", " msk = np.random.rand(len(sdss_gal_sample)) < 0.8\n", " non_test = sdss_gal_sample[msk]\n", " test = sdss_gal_sample[~msk]\n", " \n", " msk = np.random.rand(len(non_test)) < 0.7\n", " train = non_test[msk]\n", " validation = non_test[~msk]\n", " \n", " return train, validation, test\n", " \n", " else:\n", " sdss_gal_sample = df.sample(n=n_samples)\n", "\n", " msk = np.random.rand(len(sdss_gal_sample)) < 0.8\n", " train = sdss_gal_sample[msk]\n", " test = sdss_gal_sample[~msk]\n", "\n", " return train, test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Too Many Features\n", "\n", "The SDSS galaxy redshift data set only has four features but for a higher dimensional data set may be more prone to this effect:" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "train, test = train_test_split(sdss_gal_df, 50)\n", "y_train = train['redshift'].values\n", "y_test = test['redshift'].values\n", "\n", "multi_regression_model = LinearRegression(fit_intercept=True)\n", "\n", "cols = ['u-g', 'g-r', 'r-i', 'i-z']\n", "\n", "train_R_sq = []\n", "test_R_sq = []\n", "for i in range(1, len(cols) + 1):\n", " predictors = cols[:i]\n", " X_train = train[predictors].values\n", " X_test = test[predictors].values\n", " \n", " multi_regression_model.fit(X_train, y_train)\n", " \n", " train_R_sq.append(multi_regression_model.score(X_train, y_train))\n", " test_R_sq.append(multi_regression_model.score(X_test, y_test))" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nQLn3AOsbB1TABuRneBJoFX7Or7Huwxk5PYD3flf4cYp47+fvc25/17kH1pq6KPy7zcvyo9letwP8\nnXIzCpjpnKu+n99pf6+rnK5Pnq6bSLxLCoVyG5oiIiIiItFGLXEiIiIiMUghTkRERCQGKcSJiIiI\nxCCFOBEREZEYFJfrxIVXNj8HWxk+LZe7i4iIiAQpBVv8+lvv/e7c7pwhLkMcFuByWkFdREREJBrV\nIby/8YGI1xD3O8CHH37IcccdF3QtIiIiIjlas2YNrVq1gnB+OVDxGuLSAI477jjKlSuX231FRERE\nokGehoBpYoOIiIhIDFKIExEREYlBCnEiIiIiMUghTkRERCQGKcSJiIiIxCCFOBEREZEYFK9LjESl\n3bt3M27cOJo3b35A9x81ahSHH344l112Wa73bd26NTt37qR48eKkp6ezZcsWHnroIS666CIAHnnk\nEUqVKkXXrl0BmDBhAu+99x4pKSlUqVKFHj16kJysTC8iIhIrFOIiaP369QwfPvyAQ1zTpk3z9PjP\nP/88lStXBmDZsmV07NiRiy66iJUrV7Jjxw42bNjAunXrKF26NK+88grjx4+nePHiPPDAA3z66acH\nFBZFREQkOijERVDfvn1ZsmQJvXv3JhQK8f3337Njxw6efvppxowZw/z589m0aRNVq1bl2Wef5fXX\nX6ds2bJUqlSJfv36UbhwYVatWkX9+vW588479/tcq1evpnTp0n89b5s2bdi+fTv9+vWjc+fODBky\nhOLFiwOQmppK0aJFC/z3FxHJKhSClSthxw77PuNYxr/ZHcvp37zct6AfPxruG021RMN9D+XxCxWC\nW26BChWIOgkb4jp1guHD8/cxmzeHnj1zPt++fXsWL15Mhw4deP3116lUqRJdu3Zl27ZtlC5dmgED\nBpCens6///1v1q5d+7efXb16NePGjWPPnj3UqVMn2xD3yCOPUKhQIVavXs2ZZ57Js88+S1paGlWr\nVuWcc84hFAqxcuVKkpKSKFu2LAADBw5kx44dXHDBBfl6LUREsrN1K3zyCUyaBJMnW4gTiXZFi8Jj\njwVdxT8lbIiLBhUrVgSgaNGi/PnnnzzwwAOUKFGCHTt2sHfv3r/dt0qVKhQqVIhChQpRrFixbB8v\nozt1yJAhTJgwgeOPP56UlBRuuukmAJKSkv76Pj09nZ49e7J8+XJef/11kpKSCvA3FZFEFQrBggWZ\noe2LLyDjz9uRR0KzZnD00XY7489Qdv/u71w03jeaaonn+0ailkKF4OyziUoJG+J69tx/q1lBSE5O\nJj09/W+3AT7//HN+//13XnnlFf7880+mTp1KKKMdNywvIev6669nzpw5vPzyyzzyyCPZ3qdbt24U\nKVKEPn36aEKDiOSrLVtg+vTM4Pbrr5nnzj4brr7avs49194gReTg6H+fCCpTpgx79+6lZ8+ef2tN\nO+OMM+jTpw+tWrUiKSmJk046iXXr1h3Sc3Xp0oWGDRvSqFEjqlat+rdzCxYsYMSIEdSsWfOvlrk2\nbdpQr169Q3pOEUlMoRDMm2ehbdIkmDULUlPt3FFHwQ03WGi78ko45phgaxWJJ0n7tvjEA+dcBWD5\n9OnTKVeuXNDliIjEnU2bYNq0zNa21avteFISnHOOhbarrrLvU1KCrVUk2q1atSpjhYiK3vsVB/pz\naokTEZFchUIwd25maPvyS0hLs3Nly0KrVhbcrrgic4ybiBQshTgREcnWxo0wdWpmcFuzxo4nJcF5\n52WObTv7bNDQWpHIU4gTEREA0tPh++8zx7Z99ZUdAxvL1qaNdZFecQWUKRNsrSKiECciktD++AM+\n/tha2iZPhow5VcnJUKtWZmvbWWeptU0k2ijEiYgkkPR0mDMns7Xtm28yW9uOOw5uvtlC2+WX28xS\nEYleCnEiInFuwwaYMsVC25Qpdhts1ugFF1gX6dVXQ40aam0TiSUKcRG0e/duxo0bR/PmzfP0c99+\n+y2lSpX623pvq1atomHDhpx++ul/PXaJEiV49dVXOfzww9m8eTOXX345AwYMoHr16uzdu5fHHnuM\n3377jT179nDnnXdqw3uROJWWBt9+mzkh4dtvM/eBPOEEaNs2s7XtiCOCrVVEDp5CXAStX7+e4cOH\n5znEjRw5kvr16/9j0d5TTjmFgQMH/nX7xRdfZMSIEdx6662899573HHHHfTt25fevXszbtw4jjji\nCHr27MmmTZto3LixQpxIHFm3LrO17eOPbawb2I4Idetmjm37v//L3FZIRGKbQlwE9e3blyVLltC7\nd29uuukmunTpwsaNGwHo2rUrzjk6d+7MypUr2bVrF23atOGUU07hiy++YMGCBZxyyimccMIJ2T52\nKBTi999/p3z58mzdupUZM2YwfPhw7r//fhYuXMhVV13FlVde+dd9U7T6pkhMS0uDr7/OHNs2Z07m\n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\nh2oAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(10, 5))\n", "\n", "ax.plot(range(1, len(cols) + 1), train_R_sq, color='blue', label='train R^2')\n", "ax.plot(range(1, len(cols) + 1), test_R_sq, color='red', label='test R^2')\n", "\n", "ax.set_title('Number of Predictor vs Model Fitness')\n", "ax.set_xlabel('Number of Predictors')\n", "ax.set_ylabel('R^2')\n", "ax.legend(loc='best')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Degree Too High\n", "\n", "We've already seen this for the polynomial with multiple predictors but we can demonstrate it even with just one predictor:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train, test = train_test_split(sdss_gal_df, 5000)\n", "y_train = train['redshift'].values\n", "y_test = test['redshift'].values\n", "\n", "poly_regression_model = LinearRegression(fit_intercept=False, normalize=True)\n", "\n", "X_train = train[['g-r']].values.reshape((len(train), 1))\n", "X_test = test[['g-r']].values.reshape((len(test), 1))\n", "\n", "train_R_sq = []\n", "test_R_sq = []\n", "max_deg = 30\n", "\n", "min_max_scaler = MinMaxScaler()\n", "X_train = min_max_scaler.fit_transform(X_train)\n", "X_test = min_max_scaler.fit_transform(X_test)\n", "\n", "for d in range(1, max_deg):\n", "\n", " gen_poly_terms = PolynomialFeatures(degree=d)\n", " X_train_poly = gen_poly_terms.fit_transform(X_train)\n", " X_test_poly = gen_poly_terms.fit_transform(X_test)\n", " \n", " poly_regression_model.fit(X_train_poly, y_train)\n", " \n", " train_R_sq.append(poly_regression_model.score(X_train_poly, y_train))\n", " test_R_sq.append(poly_regression_model.score(X_test_poly, y_test))\n" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nEal+ynSOzNYEcTHAU089RdOmTeOORURE0uSbb76hb9++EP3fl23S+VFEpJoo7zkyWxPETQBNmzal\nWbNmccciIiLpp3LJ0tH5UUSk+inTOVKD1IiIiIiIiAigBFFEREREREQiShBFREREREQEUIIoIiIi\nIiIiESWIIiIiIiIiAihBFBERERERkUi2TnORkdatW8fEiRPp2bNnqfZ/7rnnaNCgAccdd9w29z3/\n/PNZs2YNderUoaCggJUrV3LNNddw1FFHAXDttddSr149brrpJgAmTZrEqFGjyMvLY++992bYsGHk\n5up6gYhIpjKzXGA40B5YB1zk7vPijUpEpHoo6/f4pPfff5969erRtm3bn7ctXLiQbt26se+++/58\n7B122IF7772XBg0asGLFCo4//nieeOIJ2rVrx4YNG7jhhhv4+uuvWb9+Pb/61a9KlR+UlzKCSvTd\nd9/x9NNPl3r/M888s0w//DvuuIMxY8bw1FNPce+993LnnXcC8OWXX7J69Wrmz5/PkiVLWLt2LX/7\n298YPXo048aNY9WqVcyYMaPM70dERCpVD6C2u3cGrgPujjkeEZFqo6zf45OeffZZlixZstX2Nm3a\nMGbMGMaMGcOECRPYb7/9eOaZZwAYNWoUgwYNYsSIEQBMnDiRhg0bMnbsWB599FH++Mc/bt+b2Qa1\nIFaiESNGMG/ePB544AESiQSzZ89m9erV3Hbbbbzwwgt88sknLF++nLZt23L77bdz//3306RJE1q1\nasUjjzxCjRo1WLhwIaeccgq/+tWvSnytRYsWUb9+/Z9ft1+/fvz000888sgjXH/99YwbN446deoA\nsHHjRmrVqpX29y8i8Ugk4Omn4fPPYdddw61p07DcZReoWTPuCKWUDgemALj7O2Z2UCxRFBTAgw/C\nN9/E8vJVTk5O2fZPJNITR9wKfw5F3c/NDcvU9eKWyecnP6+yLEuznhpX4ZiK21ajBjRsCI0abV4m\nb7Vrl/+zk4yQ+j2+f//+3Hjjjfzwww8A3HTTTZgZ119/PV9++SVr166lX79+tGnThjfffJM5c+bQ\npk0bdt999yKPnUgkWLx4MXvuuSc//vgjb7zxBk8//TRDhgzh008/5aSTTqJr164/75uXl5fW95q2\nBHFbpTBmNgS4CPgu2jQI+G9Jz6lIv/1t+MJUkXr2hKjRrkiDBw/ms88+4/LLL+f++++nVatW3HTT\n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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 2, figsize=(15, 5))\n", "\n", "ax[0].plot(range(1, max_deg), np.array(train_R_sq), color='blue', label='train R^2')\n", "\n", "ax[0].set_title('Number of Polynomial Degree vs Model Fitness')\n", "ax[0].set_xlabel('Degree of Polynomial')\n", "ax[0].set_ylabel('Train R^2')\n", "ax[0].legend(loc='best')\n", "\n", "ax[1].plot(range(1, max_deg), test_R_sq, color='red', label='test R^2')\n", "\n", "ax[1].set_title('Number of Polynomial Degree vs Model Fitness')\n", "ax[1].set_xlabel('Degree of Polynomial')\n", "ax[1].set_ylabel('Test R^2')\n", "ax[1].legend(loc='best')\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameters are Too Extreme" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = np.linspace(0, 40, 20)\n", "y_train = np.hstack((2 * X_train + 10, np.array([(2 * 45 + 10) * 10000])))\n", "X_train = np.hstack((X_train, np.array([45])))\n", "\n", "regression_model = LinearRegression(fit_intercept=True)\n", "regression_model.fit(X_train.reshape((len(X_train), 1)), y_train)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nEUCbNm1o167d+q5FkiRJktaXKt9W6AOCJEmSJEl5Z9iUJEmSJOWdYVOSJEmSlHeGTUmSJElS3hk2\nJUmSJEl5Z9iUJEmSpBpg0SKYNCn9d0OwTqc+CSHsBVwXYzw4hLAtcC+QABOAc2KMK0IIZwBnAoXA\nVTHG50MImwIPAq2A+cDJMcaZIYS9gVuybV+NMV6eHWcocES2/LwY4zshhC2Bh4FNga+AU2KMG8jb\nVrNcffXVnHLKKfzgBz9Yq/1vu+02ttxyS3bZZRdGjx5Nv3798lLXHXfcwWuvvcby5cs54YQTOO64\n4xgwYACzZs0C4Msvv+THP/4xN998M/feey8vvPACAAcddBD9+vVj/vz5XHTRRSxYsIDly5czcOBA\ndt1111LHKGu/RYsWccEFFzBv3jzq16/PddddR+vWrXnvvfe47rrrKCgoYI899uCiiy4qbmfx4sX0\n6NGDCy64gAMPPJBFixYxbNgwpk+fzvLly7nsssvYeeedeeWVV7jzzjspKCigW7dunHzyyaxYsYJh\nw4YRY6RBgwZcddVV/PCHPyxu+7nnnuPBBx/ksccey8t1LWnZsmVceumlTJs2jSZNmvCb3/yGDh06\nlHnsTz75hGuuuaZ43fjx47n99tvZddddGTBgAIsWLaJBgwYMHz6cli1bMn78eK6++mrq1q3L/vvv\nv9rnoqioiGuvvZYJEyawbNkyfv3rX3PIIYcwZcoUhg4dyvLly2nQoAE33XQTLVq0AGDKlCn069eP\n5557rlRb77zzDhdddBFjxoxh5syZnH/++cXrPvnkEy644AKOPfZYBg4cyJdffkmdOnW48sor6dSp\nE7Nnz2bIkCHMmzePoqIirr/+erbeeuu8X2tJkrThKiyECy+EZ5+FqVNh663hqKPghhugXm2erDJJ\nknXyk8vlLs7lch/lcrm3st//nMvlDs5ej8zlckfncrk22TYNc7ncZiVen5/L5YZl2/bI5XK3ZK/H\n53K5TrlcriCXy72Yy+V2zeVynXO53GvZsq1zudy72ba35nK5PtnrgblcbsD/cC4dcrlcMm3atET5\nd+uttyYPP/xwXtt86623kjPPPDMpKipKFixYkNx6662l1n/33XdJ9+7dkxkzZiRTp05Njj766KSw\nsDBZsWJFcvzxxyeffPJJcssttyT33HNPkiRJMmnSpOTnP/95qTbK2++ee+5JbrvttiRJkuSpp55K\nrrzyyiRJkuToo49Opk6dmiRJkpx44onJxIkTi9saOHBgctRRRyVjxowpviZ33nlnkiRJ8sknnyRP\nP/10UlhYmPzkJz9J5s2blxQWFiY//elPk9mzZyevvPJKcskllyRJkiQffvhh0rdv3+J2J06cmJx0\n0knJcccdl69LW8oDDzyQDBkyJEmS9BqdeuqpVTr2iy++mJx//vlJkiTJvffem1x33XVJkiTJY489\nllx77bVJkiRJ9+7dkylTpiQrVqxITj/99FLXK0nSazt06NAkSZLkv//9b/F71bt37+TDDz9MkiRJ\nXn755eSDDz5IkiRJnn766eToo49O9t1331LtfPXVV0nfvn1XW54kSfLBBx8kvXv3TgoLC5O//OUv\nybnnnpskSZK8+eabSb9+/ZIkSZJLLrkkeeGFF5IkSZJx48Ylr7/+ehWunCRJ0vf6908SWP2nf//1\nXdn3pk2bluRyuSSXy3VIqpij1uUw2knAL0r8vhswJnv9EnAYsCcwNsa4NMY4F/gc2BnYH3i55LYh\nhGZAwxjjpBhjAryStbE/aS9nEmOcCtQLIbQsq411dJ7rzahRo+jVqxcnnHAC48aN46WXXuL444/n\nhBNO4IYbbgBgzpw5nHrqqZx44olcdtll/OQnPwHgyCOPpF+/fgwYMID58+dz7rnn0rt3b3r37k2M\nEYBLL72Unj178otf/IJnnnkGgJtvvpkePXpw7LHHcueddwLQu3dvJk2axLx58zjzzDPp1asXPXr0\nYNy4cQB069aNK6+8khNPPJHevXszf/78Ms/n7bffZsCAAQD89Kc/ZeDAgRx//PGcffbZFBUVsXz5\ncgYNGlR8zm+//TYA99xzD6NHjy7V1ptvvkkul+Occ86hb9++HHzwwaXW33bbbZx44om0atWKNm3a\n8Mc//pG6detSUFBAYWEhDRs2pE+fPvTo0QNIe9EaNmxYqo2K9jvrrLMA+Oqrr2jWrBkAjz/+OO3b\nt2fhwoUsWLCARo0aAfCnP/2JXXfdle23375U/fXr1+e0007jD3/4AwcccAB169blxRdfpGnTpnz3\n3XesWLGCBg0a8P7773PAAQcAsMsuuzBhwgQAvv32W2666SYGDRpU3O7HH3/MEUccwaJFi3jqqafo\n379/me/FbbfdxiOPPFLmupI+//xzDjzwQAA6duzIpEmTyj32SosWLeK2225j8ODBAORyORYuXAjA\nggULqFevHgsWLGDZsmVsvfXWFBQUsP/++/OPf/yjVDtvvvkmrVu35le/+hVDhgzh0EMPZcmSJcyZ\nM4fXX3+d3r17M378eHbeeWcANttsMx588MFSbSxdupShQ4cybNiw1epMkoQrr7ySYcOGUbduXbbZ\nZhuKiopYsWJFcZ0AH3zwATNmzKBPnz4899xz7LnnnpVeN0mSpJUWLYLsT+3VPPts7R5Su846ZWOM\nT4UQOpRYVJCFREiHxm4GNAPmltimrOUll81bZduOwBJgdhXbqFQIYRgwtCrblnLRRfDEE2u8W4WO\nOw6GD69wk2bNmjFixAi+++47evbsyVNPPcWmm27KRRddxNixYxkzZgxdunShV69ejB07lrFjxwLp\nH/xnn302O+64I8OHD2fvvfemZ8+eTJ48mUsvvZS77rqLd999l8cffxygeL/nnnuO+++/n1atWjFq\n1KhStYwYMYJ9992Xk08+mRkzZnDCCScwevRoFi5cyBFHHMFll13GBRdcwN///neOOOKICs9r2rRp\n3HfffbRt25YePXrw0Ucf8fHHH9OiRQuuueYavv32W0488UReeOEFTjnllNX2//bbb/nqq68YOXIk\n06dP56yzzuLll1+moKCA2bNnM27cOC699FIA6tevz+abb06SJFx//fXsuOOObLPNNsVtzZw5k4su\numi14FTRfnXr1uWkk07is88+45577gGgXr16jB8/nvPPP59OnTrRpk0bxo0bx5QpU7jiiiv44IMP\nStU/b948/vSnP/HMM89w3XXXcf3111OvXj1effVVrrjiCg466CA23XRTFixYQJMmTYr3rVu3LsuW\nLWPw4MFceumlpULyjjvuyHHHHcfAgQOZPn06999/f6lzevHFF3nkkUf48ssvqV+/Pi+++CJ9+/Zl\nv/32K/N92mGHHXj99dc57LDD+Oc//8mMGTMoKioq89grPfnkk/zf//0fm2++OQAtWrRg7NixdO3a\nlblz5/LQQw+tdk6NGzdm2rRpq73HU6dO5Y477uDdd9/l0ksv5aabbuLf//43Q4YM4bzzzmPw4ME8\n/fTTHHvssRxyyCGr1XLFFVdw6qmn0rp169XWvfbaa2y33XZ07NgRgEaNGvHll19y+OGH8+233zJy\n5EggHY7drFkz7r33Xn7/+99z1113lRviJUmSVvX117DKnznFpk1L13fqVL015Ut1jgBeUeJ1U+A7\n0vDYtJLllW27rJI2FpdYVqkY4zBgWMllWWj+oir7V7eV4Wbq1KnMmTOHX/3qVwAsXLiQqVOnMmnS\nJI4++mgAdt999zL3/eyzz3jrrbd46aWXAJg7dy5NmjRh0KBBXHbZZSxYsIDu3bsDMHz4cG688UZm\nzZpV3Ju20qRJk+jWrRsArVu3pkmTJsyenX4PsOOOOwLQtm1bli5dWul5tWjRgrZt25ba57PPPuP9\n99/nX//6FwCFhYXMmTOnOLSU1Lx5czp27EiDBg3o2LEjDRs2ZM6cOWyxxRa8/PLLHHnkkdStW7d4\n+6VLlzJo0CAaN27M0KHff9cQY+T888/n4osvLrPHqrz9AO6//34mTZrEmWeeyV//+lcg7Xl87bXX\nuPnmm7nzzjuZMmUKX375Jb179+Y///kPEydOpGXLljRv3pxDDz0UgEMOOaS4FxnSXt/DDjuMgQMH\n8swzz9CkSZPinkGAFStW8OmnnzJlyhSGDRvG0qVL+fzzz7n66qsZPHgwPXr04Pbbb+fss88uFegA\nunbtSteuXYvvoz3hhBNKrV+4cCF9+/YFYN999+WMM85g0qRJ9OzZk86dO7PTTjsxceLEco8N6RcW\nt956a3Gbv//97zn99NPp0aMHn376Kb/+9a955JFHSp3TwoULi3uIS77HBx98MAUFBey5555MnjyZ\nzTbbjMaNG7P33nsXX7uxY8dy7LHHrvbezZgxg/fee4+pU6dy++23M3fuXAYMGMDNN98MwJ///GdO\nOumk4u3vvfde9t9/fy644AK+/vprTj75ZJ577rlS79Whhx5avL8kSVJVtG2b3qM5efLq69q3T9fX\nVtUZNj8MIRwcY/wbcDjwOvAOcHUIYROgIbAD6cODxgJds/WHA2/EGOeFEJaFEDoB/wF+BlxO+lCg\n60MINwDtgDoxxlkhhJVt3LuyjXV6dsOHV9oLuS7UqZOOhG7Xrh1t27bl7rvvpn79+owaNYoddtiB\nqVOn8uGHH7LDDjswfvz4Mvft2LEj3bt3p1u3bsyePZsnnniCb775hokTJ3L77bezdOlSDjroILp1\n68bLL7/MTTfdBKTBpGQPZadOnXjvvffYcccdmTFjBvPmzaN58+YAFBQUrNF5lbV9x44dadOmDX37\n9mXJkiWMGDGiuP1V7bbbbtx///2ccsopfPPNNyxevLh423HjxhUPc4V0uOTZZ5/NXnvtVRzWIR0i\n2r9/f373u9+VGuJa2X533HEHrVu35uc//zmNGzembt26JElCr169GDFiRHEgWrZsGTfeeGPxfgMH\nDqRr167ssMMO7LbbbowZM4Yf/ehHvPvuu2y77bYsWLCAvn37cvfdd9OgQQM23XRT6tSpQ+fOnXn9\n9dfp2rUr48ePJ5fLsfPOOxc/uGj69Omcf/75xWHv+uuv57TTTmPUqFEcdthhtG/fvsrvS+PGjXng\ngQeKf//www/ZZ599GDRoEB999BFfffVVhceeP38+y5YtK/4iAdLe+aZN0++LtthiCxYuXEiTJk2o\nX78+U6dOpX379rz55purPSBo5TX62c9+xqeffkrbtm3ZZJNN6NChA++99x6777477777Ltttt12Z\n59K6dWteeeWV4t/322+/UkFxwoQJdO7cuVSd9evXB9IhuYWFhRQVFRXX8fOf/7z4vZIkSaqqRo3S\nhwHdcsvq6446Kl1fW1Vn2LwAuCuE0AD4BHgyxlgUQriVNAjWAQbHGJeEEEYA94UQ3iTtueyZtdEX\neAioS3qf5tsAIYQ3gHFZG+dk216VtXEGMKtEGxukzTffnD59+tC7d2+KiorYaqutOPzwwznjjDO4\n+OKLeemll2jVqlXxfWYl9e3bl8GDB/P444+zYMEC+vXrR8uWLZk5cyY9evSgTp06nHrqqTRo0IDN\nNtuMX/7yl2yyySbst99+pZ5Ae+aZZzJo0CBeeeUVlixZwhVXXFHm8dZWjx49GDJkCCeeeCILFiyg\nZ8+e1KlTh3vuuYett96aLl26FG97yCGH8O6773LssceSJAm/+c1vinsyv/jii1IB669//SvvvPMO\ny5Yt44030u8kzj//fO68806WLVvG1VdfDUCTJk0YMWJE8fFWrFhR5n7HHHMMl1xyCU899RRFRUVc\nc801FBQUcOqpp3LGGWfQoEEDWrZsyVVXXVXuuZ555pkMGTKE448/nnr16nHdddfRpEkTunXrRq9e\nvahXrx4hBLp3705BQQFjx46lR48eJElS6omvq/rrX//K5MmTueyyy9hll1248MILefDBB4tD1Eq/\n/vWvq/Se/PCHP+SWW25h5MiRNG3atPhaleeLL75gq622KrWsf//+DBkyhIcffpjCwkKuvPJKAC6/\n/HIuvPBCioqK2H///fnxj38MwKmnnsrIkSP55S9/ydChQ/nlL39JkiRcfvnlAFxzzTVcfvnlFBUV\n0a5dOy688MIqnUtJc+bMoUmTJqW+9OjTpw+DBg2iZ8+eLF++nAEDBtCoUSMuueQShgwZwqOPPkqT\nJk1KfYEgSZJUFdnjVnj22XTobPv23z+NtjYrSJKk8q02ciuH0Y4ePZp27dqt73LWyJgxY2jRogU7\n77wz//jHPxg5cuRq9+lJkiRJWv8WLUrv0Wzbtub1aE6fPn1l5842McbJVdmnNs/aoipo164dgwYN\nom7duqxYsaJ4OKMkSZKkmqVRo9r7MKCyGDY3cJ06deKxxx5b32VIkiRJ2sisy3k2JUmSJEkbKcOm\nJEmSJCnvDJuSJEmSpLwzbEqSJEmS8s6wWc0WLYJJk9J/82np0qUceuihFW7z2GOPsXz58jVuO0kS\nBg4cyMKFC9dov+uuu47jjz+eY445hscff3yNj1uRKVOm0K1bt+Lf58yZw6mnnkrPnj0577zzWLx4\nMZDO1Thr1qy8HluSJElS5Qyb1aSwEM47D3baCXK59N/zzkuXV5c77riDFStWrPF+L730EjvttBON\nGzeu8j5vvfUWU6dO5bHHHuORRx7hrrvuYu7cuWt87LI888wzDBgwgDlz5hQv+8Mf/sCRRx7Jww8/\nzI477lj8BN7evXtz44035uW4kiRJkqrOsFlNLrwQbrkFJk+GFSvSf2+5JV2+thYuXMhZZ51Fr169\nGDZsWPHyd955h5NOOonevXvzi1/8gi+++IInnniCmTNnMmDAAIqKihg8eDCnnXYa3bp14+abbwZg\n3Lhx/P73v1/tOA888ABHHHEEhYWF9OjRgzfeeINZs2ZxxBFH8PXXX5dZ26677so111xT/HtRURH1\n6tXj3HPP5dFHH2Xx4sUcffTRTJw4scz999tvv3LPe7PNNuPBBx8stez999/ngAMOAODAAw/kH//4\nBwAdO3bkP//5D99++2257UmSJEnKP+fZrAaLFsEzz5S97tln4Zpr0glc19Sjjz5KLpdjwIAB/POf\n/+Ttt98G4N///jfDhw+ndevWjBw5kpdffpmzzjqLESNGcPPNN/P111+zyy67cNxxx7F06VIOPPBA\nBgwYwD777MM+++xT6hhLlizh66+/ZvPNNwfghhtuoG/fvrRs2ZKLL76Ytm3blllbw4YNadiwIcuX\nL2fgwIEcf/zxNG7cmKuuuoqePXsyduxYjj/+eHbaaadS+51++uksXbqUuXPn0rt3b1q1arVaz+Qh\nhxyy2vEWLFhA06ZNAWjcuDHz588vXtexY0c++OADunTpsoZXWJIkSdLaMmxWg6+/hmnTyl43bVq6\nvlOnNW/w74SaAAAgAElEQVR38uTJHHTQQQD8+Mc/pl699O1s3bo1V199NY0aNWLGjBl07ty51H7N\nmzfno48+4q233qJJkyYsW7as3GPMnTuXFi1aFP/erl07OnfuzPjx4znwwAMrrG/u3Lmce+657Lnn\nnpx55pkANGvWjO7du3PPPfdwww03rLbPH//4RyDt2XzggQeqcBVSTZo0YeHChWyyySYsXLiQZs2a\nFa9r2bIl3333XZXbkiRJkvS/cxhtNWjbFrbeuux17dun69dGp06dGD9+PAAff/wxhdkNoJdddhnX\nXHMNv/3tb2nVqhVJkgBQUFDAihUrGDVqFE2bNuXGG2/k1FNPZcmSJcXbrKpFixalHgw0fvx4/v3v\nf7PHHntw9913l1vbkiVL6NOnD8cccwznnHNO8fJp06bx/PPP07t3b6677rq1O/EydO7cmTFjxgDw\n97//nd1226143dy5c9liiy3ydixJkiRJlTNsVoNGjeCoo8ped9RRazeEFuCEE05g2rRpnHDCCTz0\n0EPUr18fgO7du9OrVy969OjBwoUL+eabbwDYfffd+dWvfsU+++zDG2+8UXyv5w9/+EO++eabMu/Z\nbNCgAVtuuSWzZ89m/vz5DB48mGuuuYaLL76YZ599lo8++ohRo0YxatSoUvs9+uijTJs2jSeeeILe\nvXvTu3dvJk+ezIUXXshll13GWWedxaRJkxg9enSZ5zZ27Ng1uhZnnXUWL7zwAj169ODDDz/kxBNP\nLF73ySefsPvuu69Re5IkSZL+NwXl9WjpeyGEDsAXo0ePpl27dmvVRmFh+jCgZ59Nh862b58GzRtu\ngHo1fDDz888/z6xZs+jTp0+Z6z/99FMmTJjAscceW72FVcHnn3/OPffcw9VXX72+S5EkSZJqrenT\np698Bso2McbJVdnHns1qUq8e/O53MHEixJj++7vf1fygCXDEEUcwceLEcufZbN68Occcc0w1V1U1\nDzzwAP3791/fZUiSJEkbnVoQdTYsjRqt3cOA1qeCggKGDx9e7vo2bdpUYzVr5vLLL1/fJUiSJEkb\nJXs2JUmSJEl5Z9iUJEmSJOWdYVOSJEmSlHeGTUmSJElS3hk2JUmSJEl5Z9iUJEmSJOWdYVOSJEmS\n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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(15, 5))\n", "\n", "ax.scatter(X_train, y_train, color='blue', label='data: (x, 2x + 10)')\n", "ax.plot(X_train, regression_model.intercept_ + regression_model.coef_[0] * X_train, color='red', label='regression line: {}x + {}'.format(regression_model.coef_[0], regression_model.intercept_), )\n", "\n", "ax.set_title('Number of Polynomial Degree vs Model Fitness')\n", "ax.set_xlabel('Degree of Polynomial')\n", "ax.set_ylabel('Train R^2')\n", "ax.legend(loc='best')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cross Validation For Selecting Polynomial Model Degree\n", "\n", "We're going to use k-fold cross validation to determine the degree of the best polynomial for our data:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.model_selection import KFold\n", "\n", "non_test, test = train_test_split(sdss_gal_df, 5000)\n", "regression_model = LinearRegression(fit_intercept=False)\n", "min_max_scaler = MinMaxScaler()\n", "\n", "y_non_test = non_test['redshift'].values\n", "y_test = test['redshift'].values\n", "\n", "X_non_test = non_test['g-r'].values.reshape((len(non_test), 1))\n", "X_test = test['g-r'].values.reshape((len(test), 1))\n", "\n", "X_non_test = min_max_scaler.fit_transform(X_non_test)\n", "X_test = min_max_scaler.fit_transform(X_test)\n", "\n", "kf = KFold(n_splits=10)\n", "\n", "x_val_scores = []\n", "\n", "for d in range(1, 20):\n", "\n", " gen_poly_terms = PolynomialFeatures(degree=d, interaction_only=False)\n", " X_non_test_poly = gen_poly_terms.fit_transform(X_non_test)\n", "\n", " validation_R_sqs = []\n", " for train_index, val_index in kf.split(X_non_test_poly):\n", " X_train, X_val = X_non_test_poly[train_index], X_non_test_poly[val_index]\n", " y_train, y_val = y_non_test[train_index], y_non_test[val_index]\n", "\n", " regression_model.fit(X_train, y_train)\n", " validation_R_sqs.append(regression_model.score(X_val, y_val))\n", " \n", " x_val_scores.append(np.mean(validation_R_sqs))" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAFQCAYAAAAcFq1pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYFNW5x/HvzIAoympUVEQYxrwuIBpkcYW4hOsS45JF\nICaiJjHR5Gr03uxhTK7GmMRo1EhiXJK473GL4BIMKovGFTVvFFQSFVwRXACBuX+c01I0PU0zTFd1\n9/w+zzPPTFdXV73dM/Pr06dOnapraWlBRETSUZ91ASIiHYlCV0QkRQpdEZEUKXRFRFKk0BURSZFC\nV0QkRZ2yLqDamFl/YA7wVGJxHXCeu1+6lsdOBS5w9xvKVmDx/d8JnObuzxRZ53Jgtrv/Mm95M3Ai\n8HJc1BmYC5zq7v8qS8EZMbMNgR8AhxB+tw3AFcDZ7p7KGEszGwXcAmzp7ksSy7sA/wHGuPujrTy2\nP+F3uImZnQD0dPezCqz3LjDI3V8sUscw4Dh3P8HMdgO+6+6fXY+nltz2lsC5wI5AC/ABcKa7/6U9\ntl+pFLpt84G775K7YWZbA7PN7BF3fzLDuopy94PWcxPXuvtJuRtmdjRwr5nt5O6L1nPbFcHM6ghh\n9y9gd3dfYmabAncAmwA/SqMOd7/fzF4GjgSuTNx1BPBca4FbYDuT1rOUnYC+cVuPAO0SuNEfgHvc\n/QsAZrYj8KCZ7eHuz7bjfiqKQrcduPvLZvYc8HHgSTP7ETAWWE745z3J3efn1jezHwA7ufu4eHtP\n4ALgcOBe4E5gBNAb+IG7X2tmnYFzgP2AFcBM4BR3X2xmLwJXAQcDmwITgT2BocCHwKHu/kpc77PA\no8CvgZFAN0Jr7nh3f3Adn/efY/COAyaZ2Q7AebGGBuA3uda/mX0XOA5YDPwdOMzd+8eWdW9gIHA7\nIdR+DoyK23gM+Ja7L4pvbhcA/Qgt7Wvc/cxkTWb2ceAhYCt3X2ZmDcBLwKeA7YEfAivja/g/7v73\nvKe1D7ADcLC7r4jP8834PPvHfUwF3orbuwi4OX7vH1/LP7r7L8ysE3A+sBewjPDJYAKwpNByd383\nr5bfAseyeuh+Fbgw1jESOBvoAmwJ3O3ux+W9Hs3Ax9z9JDPbO+63BXiY2L1oZvUU+HsA5gE/AXqY\n2WXAHwmf1AaZWY9Yxy5xe38Fvu/uy81sCXAWcACwFeFT4LmsaUtgIzOrd/eV7v6MmR0KvB3rGgH8\nBtg4vk6nuft98Xn8Augal//Q3e8ys2MIf2MbA++4+yfN7DjgG/G5vkn4X/xngVpSoz7ddmBmuwNN\nwEwzmwAcCAxz952B2cDleQ+5GDjYzHrH218Dci2SRmCyuw8HvkP4p4IQFlsBQ+JXPeEPL2dDdx8C\nnAr8nvCHPgT4N3BM3v5HxG3t7u47Ev6ZvtumJw9PAINjwNxA+Pg5lBCap5nZSDMbE2sYRngj6Ja3\nja7uvpO7fyfWsRwYGut/hfAPDPBn4NK4/eHA/mb2+eSGYlfH08ChcdGngBdjl8ovgG+4+26EcB9d\n4PnsBszMBW5iu8+5+92JRW+7+47ufj4hFP/m7oMJb3ZfNLOjgN3jPnaONc8Fdi6yPN+fgaFmNgDA\nzLYjvCFcH+//b+DH7j6C8BH9UDMbWmA7mNkG8XGnuvuuwN+AjeLdBf8e3P3fwI+Bae4+IW+TvyGE\n2OD4mg0BTov3dQHecPc9CW/yZ8Uum3ynAScBr5nZX8zsf4C57j4/NjJuAX7i7oOArwDnxU8dNwD/\nHf+/vgxckXuNCC3z0TFwR8X7947P+WzgpkKvT5oUum2zkZk9Hr9mAz8Dxsc/0gOBy9z9vbjuecB+\n8Y8eAHd/jdCqO9rMegFjWNWa+ZDQ0oXQIs0F84HAJHf/0N1XElosByZqujF+nwPMd/cnErd7J9bD\n3acTQvxrZvZLwj/GJm18LVqA9wmt/IHApWb2OHA/4Z96V+Ag4Hp3Xxj7RC/M28YDiZ8PAT4DPBa3\ncxiwo5ltTAjyn8blMwgt3l1Y08WseqOZQPgYC3ANcLOZ/QHoxao3tKSVlPZ/MQ0g1rVn7jm5+zuE\nN9kDCf3+Kwhvxj8FbnT3h4osX427Lyb8XeQC76vAH9x9Wbz9ZaCnmX2f0CruSuu/x8HAh+5+b9z2\n1YRPHW39eziQ0OptcfelhEZD8u8x1y/7KCGENy7w/O4j/A4PI3xy+zTwz9iPPBhY4e53xHX/Ed/U\nRgDPu/vMuPxp4EFWvYE+mejqOpjQGHoo/s2cDfRONHYyodBtmw/cfZf4NcjdR7v7X+N9+a9pPaEb\npy5v+YWEj47jCP90uY+Wy2KoQgi03OMKbbdz4vbSxM8fFivezA4m9FFC+OeYVKC+Ug0jhEgDsDDx\nuuxC+Lh6GaHlmtz+irxtJD9WNxBaMbltDCeEQEPcxh552z+TNd0AjIjdHaOA6wDc/QeEgHyEEMrT\n40frpBnAsNgt8REzG2Zmfy5Qcz1rvnb1QGd3X8iqFuAK4FozO6W15QWeB4QwPSa2FMez6hMRhOA/\nCPgnoRvgPwVqyWkpcN/y+Nza8vewtr/HDwB81YHH1bZnZpub2W+BFnd/wN3PdPd9gGsJbybLY83J\nxwwqsN/8fef/Lf058ffyCUKr/O21PLeyUui2v8nAhNgCAvgW8PfYGvhIbNmsJPzjXVTidk8ws84x\nKE4E7l7LY1pzAHCbu19E6Ns7jPAHuk5if1kjIdQcWGJmX4z3bUPoWhlK+Ic+MvYDQuh3a20UwGTg\nJDPbID7Pi4GfxdbLDODbcfs9CS2cz+RvwMPR/msILc4b3f19M+sU+7Q3jgeXvkH4qN4577HTCSF2\nTu4jsZltQfhk8UKBfS2OdZ0Y1+0BfAm428wOIfTRP+TuzcCfgCGtLS/0YsSW3FzCp6np7v6fuJ9e\nhAD5jrvfBGxNaNW19nt8Cqgzs4Pi4w8ltPah+N/D8vzXKJoMnGhmdXFExVdZt7/Ht+J+/zsevMTM\nuhJavo8S/p5azOyAeN8ngPuAWeGmDY/LdyL0w08tsI8pwNg4SgLgBMLrnimFbvu7BLgHmGVmzxLe\nXce3su5lwCvu/lQr9yf9HzAfeBx4lvCP8N9trHESMMrMngSmE7ogBhRo9eX7QuxSeczMniB0i4x2\n9yXxI+9ngOPjdqcAP3L3B+PHyIsJLctHgB6ELolCfgq8SDiA9gyhhXRqvG8cMNLMniJ8HL3a3a8s\ntJG4v+HErgV3Xw6cDFxlZo8S+jePzX8zjI6M+/1HfJ73ErpvJrayr/GELqSnCKFwIyHw/0roX54d\nn/ceQHOR5a25kPC7viC3wN3fJgTxo3Eb3yO8CTUV2oC7f0gI01z3zBHAa/HuYn8P04HtzezmvE1+\nC9icEOZPEULyjCLPIb+e5YT+9t2BF2I33UzC8YxL4+/lCGBirHcScETsmvsccH58va8iHIRcY9ii\nu08mHJS9Oz63cXEbmU6tWKepHbMRDzzdQvj4c23W9ZSThfGde7j7b+LtbwMjPA4VEulI1NLNgIXx\niK8D77DqSHQt+xewt5nNjq2T/YjdBCIdjVq6IiIpUktXRCRFCl0RkRTV/GnAcTjLMOBV1hwfKiLS\nVg2EU5kfbmUUTEE1H7qEwJ2WdREiUrP2ZvWzKovqCKH7KsCVV15Jnz59sq5FRGrE/PnzGT9+PMSM\nKVVHCN0VAH369KFv375Z1yIitWedui11IE1EJEUKXRGRFCl0RURSpNAVEUmRQldEJEUKXRGRFFX0\nkLE4n+dvCRM8LyVcPPH5bKsSEWm7Sm/pHka44OLuhAsW/irjekRE1ktFt3QJl6i+C8DdZ8TJsMtq\nxQq46CJ47bW1r5uvrbNkpv24SlRX5Ipcbbmvrg46dSr9q3Pn8L2hYdWy3M9r+577eeXK1r9WrCi8\nHKB/f+id6aUSJU2VHrrdCRN956wws07xUh9l8dJL8M1vlmvrIoVtuSXstBMMGrTq+447QvfuWVfW\nNi0t8PzzMHMmbL897Fb25lL1qPTQXQR0S9yuLxa4ZtZM69exKkljIzz9NLzxRtseX6xVVkmPa6uW\nlvbfZ7EWe1vvy7Uuly9v/evDDwsvTz4u9/Pavi9fDvX1ocVbX1/4q9B9K1aEcHr6abjnnvCV1K/f\n6kE8aBDssANstNG6vcbl9s47MGsWzJix6uutt8J9m24Kr7wCG2yQbY2VotJD90Hg08B1ZjaScAG8\nVsUrqzYnl5lZfwpcxbWYHXdcl7VF2sfixfDMMzB7dvh6+unw/c47w1dOXV1oHGy7bWgh9+mz6it5\nu3fv8rwpr1gR6kwG7LPPrv4mOGAAjBkTuunuvRfuvhsOPrj9a6lGlR66NwMHmNlDhKuzTsi4HpGy\n6dYNRowIX0lvvRUCOBfCuZ/vu6/49jp3Xj2Qc18bb7x6a7uurvXWeXKd554LATtrVniDyNl4Yxg9\nGkaODF8jRsAWW4T7Zs0Kt6++WqGbU9Gh6+4rCdeqF+mweveGvfcOX0lLl8KCBTB/fvh69dVVPydv\nP/kkPPxw+9Wzww6rAnbkyPDJsFMrSTJsGAwcCLfcAu+/D127tl8d1aqiQ1dEWtelS+jz7dev+Hot\nLbBw4aowXrJkzVEULS3FR1+sXAlbbw3Dh0OvXqXXWFcHRx0FZ5wBt90GX/jC+j3nWqDQFalxdXUh\nKHv1Cq3UtI0dG0L36qsVulD5J0eISJXbaScYPBj++tfQ4u7oFLoiUnZjx8KyZXDTTVlXkj2FroiU\n3VFHhe9XX51tHZVAoSsiZTdgAOy+exjmNn9+1tVkS6ErIqkYOzaMgrjuuqwryZZCV0RS8fnPhxMt\nOnoXg0JXRFKxxRaw777hrLYX1unE/Nqi0BWR1IwdG75fc022dWRJoSsiqTniiDDbWEfuYlDoikhq\nevaEAw+Ep54Kk/Z0RApdEUlVrouho7Z2FboikqpPfzpMB3n11bV1yalSKXRFJFVdu8Jhh8HcuWG+\n3Y5GoSsiqevIXQwKXRFJ3QEHhMnZr702XP6nI1HoikjqNtgAPvvZMA/D/fdnXU26FLoikomO2sWg\n0BWRTOy9N2y1FdxwQ7jeW0eh0BWRTDQ0hMv3LFwIkydnXU16FLoikplx48L3jtTFoNAVkcwMHQpN\nTXDrrfDee1lXkw6Frohkpq4uHFB7//0QvB2BQldEMtXRRjEodEUkUzvsAEOGwF13wVtvZV1N+Sl0\nRSRzY8fChx/CjTdmXUn5KXRFJHMd6RLtCl0Rydy228Iee8DUqfDKK1lXU14KXRGpCOPGhfl1a/0S\n7QpdEakIn/tcOEut1rsYFLoiUhE23xz22y9MbD5nTtbVlI9CV0QqRkcYs6vQFZGKcfjh0KVLbV8/\nTaErIhWjRw846CB45plwmfZapNAVkYpS610MmYSumR1uZlclbo80s5lm9qCZTUwsn2hms8zsITMb\nnkWtIpKuQw6BTTYJ10+rRZ3S3qGZnQeMAR5PLJ4EHAnMBe4ws12BOmAUMALYBrgRGJZutSKSto02\nCidKTJkCixdDt25ZV9S+smjpPgR8PXfDzLoDXdx9jru3AJOB/YG9gCnu3uLu84BOZrZZBvWKSMoG\nDgzfX3gh2zrKoWwtXTM7Djglb/EEd7/WzEYnlnUHFiVuLwYagSXAm3nLewCvF9lnMzCxtftFpDo0\nNobvc+fCzjtnW0t7K1vouvslwCUlrLoISH6A6AYsBJa1srzYPpuB5uQyM+sP1OD7pUjtSoZurcl8\n9IK7LwKWmdlAM6sj9PdOAx4ExphZvZn1A+rd/Y0saxWRdNRy6KZ+IK0VJwBXAg2EftyZAGY2DZhO\neHM4MbvyRCRNudCtxdOBMwldd58KTE3cngGMLLBeM3ndBSJS+7p3h499rDZbupl3L4iIFNLYCC++\nCCtWZF1J+1LoikhFamyEZctqb1Jzha6IVKRaPZim0BWRiqTQFRFJkUJXRCRFCl0RkRT17QudOil0\nRURS0dAA/fsrdEVEUtPYCK+9Bu++m3Ul7UehKyIVqxb7dRW6IlKxcvPqKnRFRFKglq6ISIoUuiIi\nKRowIHxX6IqIpKBHD9h0U4WuiEhqGhvDBSpXrsy6kvah0BWRilZrUzwqdEWkotXawTSFrohUNIWu\niEiKai10S7owpZmNA3YCzgA+6+5/KmtVIiJRrV0ZeK0tXTM7CzgIOIIQ0hPM7FflLkxEBGCbbWpr\nisdSuhfGAEcDS9x9EXAAcGBZqxIRiWptisdSQjc3Oq4lfu+SWCYiUna1NMVjKaF7HXAt0NvMTgb+\nDlxV1qpERBJy/bovvJBtHe2hlANpvwT2B14C+gET3f32slYlIpKQHMEweHC2tayvUkL3YXf/BDC5\n3MWIiBRSS8PGSuleWGBme5tZl7JXIyJSQC2Fbikt3d2A+wHMLLesxd0bylWUiEhShwpdd98sjUJE\nRFrTowf07t1BQtfMugITgf3i+vcBP3L398pcm4jIRxob4amnwhSP9VU8gUEppV8AbAwcC3wZ2ACY\nVM6iRETyNTbC0qXVP8VjKX26Q919SOL2SWb2TLkKEhEpJHll4L59s61lfZTS0q03s565G/Hn5eUr\nSURkTbVyMK2Ulu45wMNmdmu8fSjws/KVJCKypg4Tuu5+mZk9DIwitIwPd/fZbdmZmfUArgC6E/qG\nv+3u081sJHAeoQU9xd1Pj+tPBA6Oy09291lt2a+IVL9aCd1SpnYcDPzQ3S8E7gF+a4kBu+vo28C9\n7j4KOAa4MC6fBIwD9gJGmNmuZvYJQtCPAI5KrCsiHVDfvrUxxWMpfboXA5cDuPuzwE+BS9q4v18D\nv4s/dwKWmFl3oIu7z3H3FsLpxvsTAniKu7e4+zygk5lpzLBIB9WpE2y7bfWHbil9uhu7+125G+5+\nt5mdvbYHmdlxwCl5iye4+8Nm1ofQzXAyoathUWKdxUAjsAR4M295D+D1IvtsJowpFpEa1NgId98N\n770HG2+cdTVtU0rovmZmJxBCEsJH/QVre5C7X0KBFnHsrrgGOM3d748t3W6JVboBC4FlrSwvts9m\noDlvf/2BGpgQTkSSUzwOGpRtLW1VSvfCBOAQ4FVgHuHA1vFt2ZmZ7QhcD4xz978CxKtRLDOzgWZW\nR7hSxTTgQWCMmdWbWT+g3t3faMt+RaQ21MLBtFJGL8wjhG57+BmwIXBePBb3jrt/BjgBuBJoIPTj\nzgQws2nAdMKbw4ntVIOIVKmaDt0458JPgOvcfZaZnQN8BXgMGOvuL6/rzmLAFlo+AxhZYHkzed0F\nItJx1cKVgYt1L5wLdAVeNLODgPHAroSTJS5IoTYRkdXUdEsX2N3dBwOY2WcILd7ngefN7MxUqhMR\nSejZs/qneCzW0l2R+Hk04cSInA3KUo2IyFo0NobRCyur9JrkxVq6b5rZcMK0jlsTQ9fMRgP/KX9p\nIiJramyERx6BV1+FrbfOupp1Vyx0TyZcen0L4Bvu/p6Z/RD4FmHYmIhI6pL9ujUVuu7+FLBj3uJr\ngPPd/Z2yViUi0opk6O69d7a1tEUpZ6R9JB5IExHJTLWPYKjiKw2JSEek0BURSdE220BDQ/WGbilX\nA+5JODGiN1CXW+7uPyljXSIiBVX7FI+ltHSvBz5JmBehLvElIpKJxkaYPz9M8VhtSjmQ1sfdDyh7\nJSIiJarmKR5Laek+ZmY7l70SEZESJS/HXm1KaekOIgTvAsLVHOqAFndvLGtlIiKtqOYRDKWE7uFl\nr0JEZB3UeujOI0wyvl9c/z40taOIZKjWQ/dsYDvgUkLXwgRgAGtedFJEJBU9e0KvXrUbup8CdnX3\nlQBmdgfwFApdEclQYyM8/XSY4rG+ik7zKqXUTqwezp1Yfa5dEZHUNTbCkiVhvG41KaWleyUw1cyu\njrfHAlcXWV9EpOyS/bpbbZVtLetirS1ddz8T+CnQD+gPnOHuZ5S5LhGRoqr1YFqroWtmn4jf9wHe\nA24D/gIsjstERDJTrVcGLta98HXCJddPL3BfC7BvWSoSESlBtbZ0i1054ivxx2+6++zkfWY2sqxV\niYisRb9+1TnFY6uha2Z7EmYW+4OZHceqmcU6AZOAj5e/PBGRwqp1isdi3QsHAKOALYHk3LnLgd+V\nsygRkVI0NsI998D770PXrllXU5pi3QvNAGZ2tLv/ObWKRERKlJzicaedsq2lVKWM051lZucBmxC6\nGBqAAe6uEQwikqnkwbRqCd1Szki7FlgI7Ao8DmwOzC76CBGRFFTjCIZSQrfe3ScCdwGPAocBI8pa\nlYhICWo1dN83sy7Av4Ch7r4U2LC8ZYmIrF01hm4pfbpXEM5GGw9MN7P/Al4ua1UiIiXo1StM81hN\noVvK3AsXAEe6++vAaOD3hC4GEZHMNTaG0F25MutKSlPs5Igf591O3hzM6mN3RUQy0dgIjz4apnis\nhtnGirV06+LXCOBIYCWwDDgYqJLBGSJS66rtysDFTo44HcDMHgR2d/f34+1zgb+1ZWdmtjFwFdCL\nEOBfdveX41wO5xHOdpuS2PdEQsgvB05291lt2a+I1K7kwbS99sq2llKUMnphM8KsYjmdgd5t3N9X\ngH/EEyuuAP43Lp8EjAP2AkaY2a5xaslRhJb2UcCFbdyniNSwahvBUMrohYuBR8zsTsLZaAcTWqXr\nzN3PNbOGeLMfsNDMugNd3H0OgJlNBvYHlhJavS3APDPrZGabxQN6IiJADYauu//CzO4jjFxoAT7v\n7k+s7XFxZrL8i1dOcPeH4/YGEybV6Q4sSqyzGGgElgBv5i3vAbQaumbWDExcW20iUju22aa6pngs\nNnrhEHe/3cy+FBflwm6ImQ1x9z8V27C7XwJc0sp9+5rZ9sAdhNOLuyXu7kY47XhZK8uL7bMZaM57\nHv2BF4o9TkSqV+fOYW7dagndYn26w+L3T7bytc7M7HtmdnS8+S6wwt0XAcvMbKCZ1QFjgGnAg8AY\nM6s3s36E05HfaMt+RaS2NTbCq6+GKR4rXbHRCxPj9wntuL9LgT/GrocGILftEwhXHW4g9OPOBDCz\nacB0wpvDie1Yh4jUkMZGuPdeePFF2HHHrKsprlj3wgusPmphNe7euK47c/cFwH8VWD4DWOMSQIW6\nC0RE8iUPplVt6BIOnImIVLxqujJwse6FlwDiDGMHkTeJOfDj1h4rIpKmaho2Vso43ZuArkAT4QDX\nPoR+VhGRilBNpwKXckaaAfsCNwNnA8OBrctZlIjIuqimKR5LCd0F8aywfwI7u/srQJfyliUism5y\nUzy2tHr4vzKUErpPm9n5wFTgFDP7LmH+BRGRitHYCEuWhCkeK1kpoft14Dp3f4Zwiu2WhMlpREQq\nRrUcTCs2TvcGwmm8d7n7NAB3vxW4NaXaRERKlgzdPffMtpZiirV0bwVOBV40szPMbGBKNYmIrLNq\naem2Grru/id33x/YgzAL2C1mNtXMjjYzXQ1YRCpK1Ydujru/7O4/d/fBhKka9wFeKXtlIiLroF8/\nqK+v/NAt5eQIzGwTwnXSxhPG6J5dzqJERNZVborHSj8VuNiBtA0IV4kYD+xN6OM93d0fTKk2EZF1\n0tgI990Xpnjs2jXragor1tJdADwBXAZ8KXdhShGRStXUFEJ37lwYNCjragorFrq75a5bJiJSDZqa\nwvfnn6/c0C02ekGBKyJVJRm6laqUM9JERKpCzYWumXU3s53KVYyIyPrITfFYyaG71iFjZnY84QSJ\n7wCPAYvN7EZ3/2G5ixMRWRddu8LWW1d26JY64c1pwFjgL8BgClznTESkEjQ1wbx5YcaxSlRS94K7\nv0W4ZM8d7r4c2KisVYmItFFTU5hT94UXsq6ksFLn070daATuMbPrgEfKW5aISNtU+sG0UkL3WMJp\nvyPdfRnwJ+C4slYlItJGlR66pcy9sC2wDTDNzH4P7AosBB4oZ2EiIm2x3Xbhe6WGbikt3cuAZcBn\ngI8D3wZ+Wc6iRETaqtKHjZUSuhu6+/XAIcCV8SoSukaaiFSkTTaBPn3gueeyrqSwUkJ3hZkdSQjd\n283sMGBFecsSEWm7piZ46SVYtizrStZUSuh+lTDF4zfc/VXgKOD4slYlIrIemppg5Up48cWsK1lT\nKVeOeAr4NbCVmZ0MnOXuT5a9MhGRNqrkEQxrDV0zOxq4BRhAGMlwk5kdW+7CRETaqpJHMJQyZOxU\nYLi7vwlgZmcAU4FLy1iXiEibVXVLF2jIBS6Au78BrCxfSSIi6yc3bKwSRzCU0tJ9wszOBS6Jt48j\nXMZHRKQi9egBm21WvS3drwBLCd0JlxNOlPhGGWsSEVlvTU1h9MKHH2ZdyepKaen+1t0nlL0SEZF2\n1NQE06eHaR5z3Q2VoJTQHWRmm7j7u+21UzPbHpgJbOHuS8xsJHAesByY4u6nx/UmEsYILwdOdvdZ\n7VWDiNS25AiGagvdlcA8M3Pgg9xCd9+3LTs0s+7ArwhdFjmTgCOBucAdZrYrUAeMAkYQJty5ERjW\nln2KSMeTHMEwZky2tSSVErr/2147M7M64PfA9wlXociFcJfc1YfNbDKwPyGUp7h7CyH0O5nZZu7+\nenvVIyK1Kxe6lTaCoWjomlkv4Ok4TAwzGwU8U0rwmdlxwCl5i18CrnH3J8wst6w7sCixzmLChOlL\ngDfzlvcAWt23mTUDE9dWm4jUvkodq9tq6MaP+HcCE4C74uJPAVeZ2YFrOxXY3S9h1TCz3DafB46L\ngdwHmEKYSKdbYrVuhPl6l7WyvNg+m4HmvH32Byr0wh0iUi69ekHv3pUXusWGjP0SGOvuucDF3X9A\nuJLEOW3Zmbs3uftodx8NzAc+5e6LgGVmNjB2P4wBpgEPAmPMrN7M+gH1uRa3iEgpttsO5s6FFRU0\nL2Kx0O3l7lPzF7r7ZOBj7VzHCcCVwCzgMXef6e7/IITvdMJBtBPbeZ8iUuOamsI43X//O+tKVinW\np9vZzOrdfbVTfs2sHthgfXfs7v0TP88ARhZYp5m87gIRkVIl+3X798+0lI8Ua+neT+GDUj9EVwMW\nkSpQiSMYirV0vwfcaWbjgYcJ42Y/AbwGHJpCbSIi66USRzC0GrruvtjM9gE+SbgC8ErgwniNNBGR\nildVoQsKtaB3AAAOfElEQVQQT0y4L36JiFSVTTeFnj0rK3RLmWVMRKQq1dWF1u6cOeGaaZVAoSsi\nNa2pCZYuhZdfzrqSQKErIjWt0kYwKHRFpKZV2sE0ha6I1DSFrohIiirtcuwKXRGpaZttBt26KXRF\nRFKRGzb2/PPQ0pJ1NQpdEekAmprggw/glVeyrkShKyIdQCUdTFPoikjNU+iKiKSokkYwKHRFpOap\npSsikqI+faBrV4WuiEgqcsPGnnsu+2FjCl0R6RCamuC992DBgmzrUOiKSIdQKQfTFLoi0iFUysE0\nha6IdAgKXRGRFCl0RURStNVWsOGG2V9BQqErIh1CfT0MHJj9bGMKXRHpMLbbDhYtgjfeyK4Gha6I\ndBiV0K+r0BWRDkOhKyKSIoWuiEiKcqGb5QgGha6IdBh9+8IGG6ilKyKSioaGVcPGsqLQFZEOpakJ\n3n4b3norm/0rdEWkQ8n6YFqnNHdmZnXAf4BcN/Z0d/+emY0EzgOWA1Pc/fS4/kTg4Lj8ZHeflWa9\nIlJ7kqE7fHj6+081dIGBwKPu/um85ZOAI4G5wB1mtitQB4wCRgDbADcCw1KsVURqUNYjGNIO3aHA\n1mb2N+AD4BTgVaCLu88BMLPJwP7AUkKrtwWYZ2adzGwzd3895ZpFpIbUbPeCmR1HCNWkE4Gfufv1\nZrYXcAVwOLAosc5ioBFYAryZt7wHoNAVkTbr1w86d67B0HX3S4BLksvMrCuhfxZ3f8DMtiKEabfE\nat2AhcCyVpa3ysyagYnrW7uI1K5OnWDAgOxCN+3RCxOBkwHMbAjwb3d/B1hmZgPjgbYxwDTgQWCM\nmdWbWT+g3t2Lzg3k7s3uXpf8AgaU9RmJSNVpagozjS0s2owrj7T7dM8CrjCz3IiEY+LyE4ArgQZC\nP+5MADObBkwnvDmcmHKtIlKjcv26c+bA0KHp7jvV0HX3twlDwPKXzwBGFljeDDSXvTAR6VCSB9PS\nDl2dHCEiHU7ucuxZDBtT6IpIh5PlsDGFroh0ONtuGya/UeiKiKSgc2fo31+hKyKSmqYmWLAAFi9O\nd78KXRHpkJLDxtKk0BWRDimrEQwKXRHpkLIawaDQFZEOSaErIpKi/v2hvl6hKyKSii5dwjSPCl0R\nkZQ0NcErr8B776W3T4WuiHRYuREMaQ4bU+iKSIeVxcE0ha6IdFgKXRGRFCl0RURS1NgIdXUKXRGR\nVGy4IfTtq9AVEUnNdtvBv/8NH3yQzv4UuiLSoeX6defOTWd/Cl0R6dDSPpim0BWRDk2hKyKSIoWu\niEiKBg4M3xW6IiIp6NoVtt46vStIKHRFpMNraoJ582Dp0vLvS6ErIh3ekCHQ0pLOFI8KXRHp8H76\nU3jsMejdu/z7UuiKSIfXvTvssks6+1LoioikSKErIpIiha6ISIoUuiIiKVLoioikSKErIpKiTmnu\nzMwagHOA3YAuQLO7325mI4HzgOXAFHc/Pa4/ETg4Lj/Z3WelWa+ISHtLNXSBo4HO7r6nmW0NfC4u\nnwQcCcwF7jCzXYE6YBQwAtgGuBEYlnK9IiLtKu3uhTHAy2Z2B3AxcJuZdQe6uPscd28BJgP7A3sR\nWr0t7j4P6GRmm6Vcr4hIuypbS9fMjgNOyVv8OrAEOATYB7gMGAcsSqyzGGiM672Zt7xH3Ma6aACY\nP3/+Oj5MRKR1iUxpWJfHlS103f0S4JLkMjO7Brg9tmjvN7OPEwK3W2K1bsBCYFkry1tlZs3AxEL3\njR8/fh2fgYhISbYE5pS6ctp9ug8ABwE3mtkQYJ67LzKzZWY2kNCnOwY4nXDw7Gwz+yXQF6h39zeK\nbdzdm4Hm5DIz60LoC34VWNG+T2edvQAMyLiGHNVSWCXVApVVj2pZXQMhcB9elwelHboXAxeZ2QzC\ngbIT4vITgCsJT2KKu88EMLNpwHRC3/OJbdmhuy8lhH3mzAx3fzHrOkC1tKaSaoHKqke1FFRyCzcn\n1dCNAXhsgeUzgJEFljeT13IVEalmOjlCRCRFCl0RkRQpdNN1etYFJKiWwiqpFqiselRLO6hraWnJ\nugYRkQ5DLV0RkRQpdEVEUqTQFRFJkUJXRCRFCl0RkRSlfRpwzTOzzsClQH/CRO3/5+63Ju4/BTie\nVbOlfc3dvYz1PMqqWdxecPcJifs+DfyYMM/Fpe5+cbnqiPs7Bjgm3twQ2AXo4+4L4/2pvDZmNgL4\nubuPNrMm4HKgBZgNnOjuKxPr1gO/BYYAS4Hj3f35MtWyC3A+YY6QpcCX3H1B3vqt/j7buZZdgduB\n5+LdF7n7tYl103xdrgH6xLv6AzPc/ai89cv2urQ3hW77+yLwprsfbWa9gceBWxP3DyX8M/2j3IWY\n2YZAnbuPLnBfZ+DXhMmA3gMeNLNb8//J25O7X04IOMzsQkLQJ2eOK/trY2b/S5hM/7246Bzgh+4+\n1cwmAZ8Bbk485DBgQ3ffPV7h5FdxnXLUch7wTXd/3My+BnwH+HZi/VZ/n2WoZShwjrv/qpWHpPa6\n5ALWzHoBfyNvythyvi7loO6F9nc98KP4cx2hFZk0FPiemT1gZt8rcy1DgK5mNsXM7ov/HDk7AM+7\n+9vuvowwKdA+Za4HADPbDdjJ3X+fd1car80c4Ii8fd4ff/4rYQL9pL2Au+CjOUJ2K2MtR7n74/Hn\nToQ5pZOK/T7bu5ahwMFm9nczu8TMuuWtn+brknM6cL67v5q3vJyvS7tT6LYzd3/X3RfHP9IbgB/m\nrXINYVa1fYG9zOyQMpbzPvBLwnSZJwBXmlnu00134J3EurlJ4tPwfQqfUVT218bdbwQ+TCyqi/M7\nQ+HXIP91WpF4Ddu1llyYmNkewEmETyJJxX6f7VoLMAv4H3ffhzDlav481am9LgBmtjmwH/GTUp6y\nvS7loNAtAzPbhvAx6M/uflVieR1wrru/EVuXdwC7lrGUfwFXxEse/YtwJY4t432tTR5fVmbWEzB3\n/1ve8rRfm5yViZ8LvQb5r1O9u+d/emk3ZvYFwjUDD3b3/KukFPt9trebE908N7Pm7yLV1wX4LHCV\nuxeaEzvN12W9KXTbmZltAUwBvuPul+bd3R2YbWabxJDZFyhn3+6xhL42zGyruP/cR7Nnge3MrLeZ\nbUDoWphexlpy9gHuLbA87dcm5zEzGx1/PhCYlnf/g4SJ94kfW58qVyFm9kVCC3e0u88tsEqx32d7\nm2xmw+PP+7Hm7yK11yXan9D9U0iar8t6q9gmeBX7PtAL+JGZ5fp2LwY2dvffm9n3Ca3gpcC97n5n\nGWu5BLjczB4gHJ0/Fvi8mW0Sa/k24UKg9YSDWi+XsZYcI3xcDTfMxgGbZPDa5JwKXBzfeJ4ldAlh\nZn8idA3dDBxgZg8R+ujLclTczBqA3wDzgJvMDOB+d5+YqGWN32cZW5dfB843sw+B+cBXY52pvi4J\nq/3d5NWS5uuy3jThjYhIitS9ICKSIoWuiEiKFLoiIilS6IqIpEihKyKSIg0Zk/ViZv0Jg9OfiYs2\nAp4ETirnPA7ry8wOAi4CHnD38YnllxPGCL8VF3UBLnT3C4psazTQnPa5/2b2B2CSuz/Syv39ganu\n3j/NuqQ4ha60h1fcfRf46MyyMwnjXffOtKriPgucUWD+B4Afx8l5cie7/NPMHkjMi1AR3P34rGuQ\ndafQlXbl7i1mNhFYYGY7u/uTZvZd4PNAA+FkjO/E9b4FfJNw6u0/gTnu3mxmrxPOgOpDmAXt1FYe\n/yXgZEI32T8I0zKuNklMnL/h/+I6c4GvAZ8mzJK1v5mtdPc/FHk+C8zsX4Sz954EziWcodVCOM37\n54l9NQH3Af3dfaWZjQK+C/yccNLM+4SJhp4Cxrn7MjObEJ9fS3wOJ7n7u2Y2H7iN8Mb1KmEaxW8B\nfYFj3P1+M5sKNBMmK7oIGARsATiFJ4yRCqA+XWl3ce6E54Dtzey/CDNWDSOcv781MN7MdgZOjPft\nDWyX2MTHgLNi63m/Vh6/E/AVYI+43mvAack64iQpvwMOc/edCaeuXhBD9lZCi7bVwI3bGEI4G+ph\nwmQq2wA7A8OBI83s4MTzfh54ARgdF32ZVRO05Cax2QHoB4wxs8HAD4BR7j6YMJVhbmKZLYDb3X37\nePtwd9+bELIn55W5B7DM3XcHmghdPAcVe16SHbV0pVxagA8I58yPYNW5+xsRTnXdnBAqiwDM7GrC\n6dM5M+P31h7fkxDUM+IpsxsAj+bVMByY5e4vxtu/B0qZMvInZnYyoWX9PvBVd3/RzPYFLo+Trrxv\nZlcS3hSS8yVfChxtZjPifV8Hdgdmu/t/4nN9FugNbAvc5u5vJuq7LLGt3FwDLxFas7mfk68T7v53\nM3vTzE4Eto+vyyYlPE/JgEJX2l2cx8AIB9f2Jcwedk68rydhjuHjKPJJy90/iD82FHn8de7+rbh8\nE9b8e87ffl2BdQr5qE+3Ddu7HjiD0Gd8p7svjW8KyW6PlvjYotuLnxhyWp1LwMwOBX5CmAT9MsIn\nhbrW1pdsqXtB2pWFy7icTrikyhxCH+fRcfawTsAthEC6FzjIzLrHkD6SEEb5Wnv8VOBwM9s8Hry7\niDU/ds8ERsaj+BAmbfkbbXcf8GUzazCzrsD4/O25+/uEFuqZFJ77NWkqcKiFK4xA6C5pS337E96A\nLiNMTrMP4c1KKpBCV9rDVmb2uJk9DjxB6HcdB+DutwE3EgJwNuHyRX9099mEWbWmE6ZTXEzojlhN\nkcc/QQj3+4CnCX/LZ+U9dgEhaG82s6cJfa0nrMfz/B3wn/gcHwNudfebC6x3LbDI3WcWuC9Z35PA\nz4D7zeyfhC6T/EnvS3ExMNbMHgNuAmYAA9qwHUmBZhmTTJjZxwkTdf863v4L8IcYslUrTtF4JrAg\n1yUikqQ+XcnKS8AwM5tN6FaYTLj6bLV7BHgDODTrQqQyqaUrIpIi9emKiKRIoSsikiKFrohIihS6\nIiIpUuiKiKRIoSsikqL/Bzt6cIINq+hHAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n", "\n", "ax.plot(range(1, 20), x_val_scores, color='blue')\n", "\n", "ax.set_title('Polynomial Degree vs Cross Validation Score')\n", "ax.set_xlabel('Degree of Polynomial')\n", "ax.set_ylabel('Cross Validation Score')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "best degree is: 7\n", "the test R^2 for a degree 7 model is: 0.310278377147\n" ] } ], "source": [ "best_degree = range(1, 20)[np.argmax(x_val_scores)]\n", "\n", "gen_poly_terms = PolynomialFeatures(degree=d, interaction_only=False)\n", "X_non_test_poly = gen_poly_terms.fit_transform(X_non_test)\n", "X_test_poly = gen_poly_terms.fit_transform(X_test)\n", "\n", "regression_model.fit(X_non_test_poly, y_non_test)\n", "test_R_sq = (regression_model.score(X_test_poly, y_test))\n", "\n", "print 'best degree is:', best_degree\n", "print 'the test R^2 for a degree {} model is: {}'.format(best_degree, test_R_sq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparing Ridge and LASSO Regression" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import Ridge, Lasso\n", "\n", "train, validation, test = train_test_split(sdss_gal_df, 5000, validation=True)\n", "\n", "y_train = train['redshift'].values\n", "y_val = validation['redshift'].values\n", "y_test = test['redshift'].values\n", "\n", "regression_model = LinearRegression(fit_intercept=True)\n", "\n", "all_predictors = ['u-g', 'g-r', 'r-i', 'i-z']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Ridge Regression" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ridge regression model:\n", " -0.107296556217 + [-0.01089472 0.03796666 0.57678514 0.05883413]^T . x\n" ] } ], "source": [ "X_train = train[all_predictors].values\n", "X_val = validation[all_predictors].values\n", "X_test = test[all_predictors].values\n", "\n", "ridge_regression = Ridge(alpha=1.0, fit_intercept=True)\n", "ridge_regression.fit(np.vstack((X_train, X_val)), np.hstack((y_train, y_val)))\n", "\n", "print 'Ridge regression model:\\n {} + {}^T . x'.format(ridge_regression.intercept_, ridge_regression.coef_)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train R^2: 0.788223837824, test R^2: 0.807231240996\n" ] } ], "source": [ "print 'Train R^2: {}, test R^2: {}'.format(ridge_regression.score(np.vstack((X_train, X_val)), \n", " np.hstack((y_train, y_val))), \n", " ridge_regression.score(X_test, y_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. LASSO Regression" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lasso regression model:\n", " 0.373451620107 + [-0. 0. 0. 0.]^T . x\n" ] } ], "source": [ "lasso_regression = Lasso(alpha=1.0, fit_intercept=True)\n", "lasso_regression.fit(np.vstack((X_train, X_val)), np.hstack((y_train, y_val)))\n", "\n", "print 'Lasso regression model:\\n {} + {}^T . x'.format(lasso_regression.intercept_, lasso_regression.coef_)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train R^2: 0.0, test R^2: -0.00172620882533\n" ] } ], "source": [ "print 'Train R^2: {}, test R^2: {}'.format(lasso_regression.score(np.vstack((X_train, X_val)), \n", " np.hstack((y_train, y_val))), \n", " lasso_regression.score(X_test, y_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Effect of the Regularization Parameter" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": true }, "outputs": [], "source": [ "reg_params = np.hstack((10.**np.arange(-7, 0), 10**np.arange(0, 4) + 0.01))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Ridge Regression" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train_R_sq = []\n", "test_R_sq = []\n", "\n", "for reg in reg_params:\n", " ridge_regression = Ridge(alpha=reg, fit_intercept=True)\n", " ridge_regression.fit(np.vstack((X_train, X_val)), np.hstack((y_train, y_val)))\n", " \n", " train_R_sq.append(ridge_regression.score(np.vstack((X_train, X_val)), np.hstack((y_train, y_val))))\n", " test_R_sq.append(ridge_regression.score(X_test, y_test))" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n", "\n", "ax.plot(reg_params, train_R_sq, color='blue', label='train')\n", "ax.plot(reg_params, test_R_sq, color='red', label='test')\n", "\n", "ax.set_xscale('log')\n", "ax.set_title('Regularization Parameter vs Test R^2')\n", "ax.set_xlabel('Value of 1/lambda')\n", "ax.set_ylabel('R^2')\n", "ax.legend(loc='best')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. LASSO Regression" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train_R_sq = []\n", "test_R_sq = []\n", "\n", "for reg in reg_params:\n", " lasso_regression = Lasso(alpha=reg, fit_intercept=True)\n", " lasso_regression.fit(np.vstack((X_train, X_val)), np.hstack((y_train, y_val)))\n", " \n", " train_R_sq.append(lasso_regression.score(np.vstack((X_train, X_val)), np.hstack((y_train, y_val))))\n", " test_R_sq.append(lasso_regression.score(X_test, y_test))" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nUQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n", "\n", "ax.plot(reg_params, train_R_sq, color='blue', label='train')\n", "ax.plot(reg_params, test_R_sq, color='red', label='test')\n", "\n", "ax.set_xscale('log')\n", "ax.set_title('Regularization Parameter vs Test R^2')\n", "ax.set_xlabel('Value of 1/lambda')\n", "ax.set_ylabel('R^2')\n", "ax.legend(loc='best')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cross Validation: Selecting the Regularization Parameter" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": true }, "outputs": [], "source": [ "X_non_test = np.vstack((X_train, X_val))\n", "y_non_test = np.hstack((y_train, y_val))\n", "\n", "\n", "kf = KFold(n_splits=10)\n", "\n", "x_val_scores = []\n", "\n", "for reg in reg_params:\n", " ridge_regression = Ridge(alpha=reg, fit_intercept=True)\n", " \n", " validation_R_sqs = []\n", " for train_index, val_index in kf.split(X_non_test):\n", " X_train, X_val = X_non_test[train_index], X_non_test[val_index]\n", " y_train, y_val = y_non_test[train_index], y_non_test[val_index]\n", "\n", " \n", " ridge_regression.fit(X_train, y_train)\n", " validation_R_sqs.append(ridge_regression.score(X_val, y_val))\n", " \n", " x_val_scores.append(np.mean(validation_R_sqs))" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVoAAAFXCAYAAADjz4aoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcVXX9x/HXDIsISIgbgsyoP+1T7iguuIULlmipaf0U\nXALRcMnSyrI00X6ampqmouGCuZRaSZkLZomlEKLiAiofIzeSVTRwAwTm98f3e+VwvXPnzjBnzr13\n3s/Hg8dwzrnnnM+5y+d+7vd8z/fUNDQ0ICIi6anNOgARkWqnRCsikjIlWhGRlCnRioikTIlWRCRl\nSrQiIinrmHUAWTCzBmAGsBJoALoCS4BT3P3pFPb3DeAodz+0Gev0AX7v7nu2cJ8jgc7uPsbMRgE9\n3f2SlmyrwLb3AH4GbED4sp4NfM/dX4zL/wIMdfe3W2N/TcSSPM7RwIbufnob7PcEYBSwLtAZeAI4\n293/m/a+4/67A3OAL7r7P/OW/RmY6O5XFln/deCoOPlDdz+qwGPuJ7wHby2ync8A4919/zj9HDCo\nNZ4HM+sEXAR8ifA5rQHuAn7m7hXVL7VdJtpov2QiMLPvAdcAA7MLaTV3nwO0KMlGexO+THD3G1ol\nKMDM1gHuBw5y92lx3rHAQ2a2hbuvBAa31v5K8MlxthUz+xFwMHC4u8+PCeEq4M/APm0Rg7u/b2a3\nASOATxKtmW0GfAE4rsTtPM3qhNsS6wO7Jba301psK993gC2Bnd19RUzqjwJvA2NbcT+pa8+J9hNm\n1hGoA95JzPsxcCShYnsdONXd55jZVsAtQC9gLuFb9g7gMWCGu3eP62+enE5sdw/gMmAdYFPgEXc/\nMT7+ceBlYHPghLisu5mNA/rHTXQGPg8cSEgwvwI2AXoDbwBfB/YCvgIMNrOPgI2IlZ6ZbQtcS6hG\nG4Ar3P02MxtEqB5eBbaL8Z3m7hPznq6uQE8geVx3En4RdDCzm+K8iWY2JB7Tk8AOwI+AqXH/dUAn\n4C53vzge/9+AB4Hd4/P7Y3e/28y6AjcAewD/BV6K+/hT3nECfM7MJsbndj5wtLvPTTz/tfF5OiL3\n68XM7gL+DkwEbga6EF7Xm9x9TPLgzaxbPI7+7j4fwN0/NrPvA0eYWee4fGCM4QVgOHAlcADhV9ST\nwJnu/p6ZnUKojJcDS4FvuvtLjc3Pey3GAP80s++4+wdx3onA3e7+XzPbhALvD3dfkDieQcC17r5d\n/BX1a6BPfOzGiceNAL5JeP/1Ai5x9+uBccC6sZLdBVgBbOTub5vZecAxcd4rwOnuPs/MHiN8OexF\neB88Dpzg7qvyjm9TwntkHWCFuy82s+OITZ5m1pvwvvgcsAq4wd1/Gb9srid8jmqAX7v7zwt8xr4A\nbAFcCnSL2xjt7vfTytpzG+1EM3vezOYQ3gQQPhCY2fHA9sBu8Rv6QSCXQG4Hfuvu2wFn0PwK+NvA\nT9x9d2Ab4CtmtktcthnwU3f/LCGJA+Duw2Mc/YHngevd/W/A0cA/3X0g4Zv/Q+A4dx8P3Af8wt2v\ny20nfqHcB1zj7jsQqrKLzSx3DLsTEm9/QsIZnR+8u78LnA1MMLNXzez2+Lz91d2Xu/vw+ND93H12\n/P8Md/98jOt24BZ334VQCR1oZl+Pj9sSeNjddwN+QPhCAjiPUBR8jvAF0z/GUug4tyQkk88B7wIj\n8+JfRfii/EZ8TtYnVOC/Ab4P/DnGNgTYNybmpM8BH7r7v/K2+6G73+nuy+OsekIldixwLiF57Rj/\n1QI/N7MOhEr4S+6+K6FK27ux+QVei5eAacDX4rHUEirca+NDCr4/8reTcB0wxd23Jby3Pxe32x04\nCRgS3xv/y+rXZjjwkbvvFH/NENcZTnh/7RrfazOAWxP7+h9gEOFztj8h6eW7EugLvG1mj5nZRcA6\n7p77BTMGeCW+1gOBk2MhdCeh6WR7QjI/1syOjuskP2NLCV8Ux7n7zoQv7evNrK7Ic9Qi7TnR7ufu\nOwKHEKq0yYlv+kMJ1dPT8Zv6W4DFD+VuxKTr7i8TqrDmOAHoGX9+jon7zlWHK0j8DCzgCmC9GA/u\nfjUw2czOitvajjUrzXyfBbq4+71x/TnAHwhtYABvuPtz8f/TCJXLp8S2v00IH8a5hKT4bPxpV8jj\n8Ek1+AXgp/F5nUKoaHI/Nz8mfKnl738IcLO7r3L3JYSqqzGPuPvC+P/nSVRlCbcAX4/V5zGE5LoY\nGA+cbWb3Al8FzihQZa2itM/NFHdfEf9/MKHa+jhu7xrg4JiYfkd4Da8FFsfjLDi/kf2MISTX3H5m\nu/vz0KL3x4HEZOjuswg/03H39wmfiUPM7KfAj5vYTi6WcYlK+2rggPicQ3jOV7n7e8AsCrzX3P0/\n7j6AUCn/DjBCBX9qIt6x8bGLY/Ezl5Bcr8vNj8d0cFwn+RnL/er4Y3w/Pkj4lbdDE8fWbO050QLg\n7s8CZwI3xZ8WAB2AS+O39E7AAMKLl/vGrklsIjevIW9+Zwp7nJA4ZgIXAv9JrLcs8eFcg5l9l5Ck\n/jdXOZjZpXEbCwlvuL/kxZCv0OtdS/h5BvBRYn7+8eTi2MvMvu/u77n7/e5+NrAtIQE11jb7fvzb\nIW5zz8RzuwdwcVy+PJHYkvtfQeHnvJCPmzoGd3+DkMgPJVRkN8b59wNbA/cQqubpZvY/eau/BHSK\nldMnzKyLmT0Yf34njxk+/bx/8pzHivfLhGTzA+DeYvMLGA/8j5ltTag6c9VsS94f+c/XiridzYDn\nCFX6E4QKvSmFjrljYvulvNcuM7PPuvtL7n6dhxN2I4Fcol0R1809fsu8fST3nXuPJz9jHYCXc+/F\nxPvx4RKOr1nafaIFcPffEr7lroqzHgZGmlmPOH0hcHuspiaxuolhC0K7WwOh7bCzmW0T1zkifz+x\nIh4A/CBWlX2BrQgveKPM7BjgNODQRIUA8EXgKne/HVhASHS5ba1g9Zvrk0MFlpvZV+N2+xDaoR8p\ntv88C4FzzSz5U3ZTQhvX9Di9ssC+ic/fFOCsuP+ehOfzsCb2+QAw3MxqY3vtUFZ/wAodZyluJCSw\nru4+KcbzG8IX2V2ED/MSoF/eMSwjtOndEttAcycIfwF0i78S8j0MjDKzTvHn/WnAI2a2oZnNBha5\n+1WEBLZjY/MLHURMGjcSmqR2JvxCySn2/ihkAnByPKY6YL84fwDhdf8/d3+Y8AVFbOJYQWibz09u\nDxNes25x+gzgH/H5K9XGhF8/XeP+aghV7bS4/K+s/ix+hvDrcivCe+y0xPzjKfwenwJsbWb7xsfu\nBPyL0MzTqpRoVzsdONjMvkhoGrgfmGJmLxJ+SnwjPu54ws/O5wk/T14jtNktJrRdPmRmT5H4ps2J\n7Zs/A6aZ2dPAOYREs1X+Y/PcGv8+YGbPxX+jCF8Al5vZM4SK54nEth4CzjCzcxL7/xg4HPi2mb1A\neKNe6J8+4dUod38lbuPi2Eb7EqECPNndPT7sXuAJM9uuwCaGAnuY2XTCSaHfuvudTez2Z4T2tOkx\n5gWE9saCx1mi+wgnRJI/yX8KDIuv7ZOEavHv+Su6+8WEhPZw/Mn5PKGKauwL4/+AeYSq8GXCF8O3\nPfR6+T/gb/E1vAQY2dj8IscyllDNjouvcU6x90chpwHbmNnLhOcl14z0F8IvLzezZwnNPQvjtuYS\nEt/LZrZBYls3E16rqXF7OwPDiuy7kFMJXdheiJ/DmcCGMU4In9nPx/fyJEK3r2fifg6I77GphNfq\n1vyNxyamIwnt5c8Tzh8cF3/xtKoaDZPYPBZ6I/zB3WfGb8sXCO1t+WeEpZXEExlL3P3BWBH+AfiL\nh7PeImVP3bua7xXgbjNbRXj+LlGSTd0M4FdmdjGh7Xsiq3uBiJQ9VbQiIilTG62ISMqUaEVEUpZa\nG208aTGG0C1lGeFs6qzE8mHAdwldgW5x9+ubWqcZ+14H2JVwRrRYn0sRkeboQOjO+FRzuqqleTLs\ncMJVSAMtXN9/BWt2f7mc0NH9feAlC9eb79fEOqXalXg1kohICvYhdJcrSZqJdm9CB2jcfYqZDchb\n/gLwGVZf9dNQwjqlmgtw55130rt37xZuQkRkTfPmzWPYsGGQGIukFGkm2h6Ea7RzVppZx8TlbzOA\nZ4APgHs9jDbU1DqfYmEM0vMLLevduzebbbbZ2hyDiEghzWqSTDPRLiEMgJJTm0uYZrYDYTCXLQhN\nB3eY2deKrdMYdx9N3ihTccyC19YufBGR1pFmr4NJhMFTcmOwTk8sW0wYVOKjOEDKAsIAwsXWERGp\nSGlWtOMJAzJPJrTBDjezoUB3dx9rZr8iXA+/HPg34VrkFfnrpBifiEibSC3RxuHuRuXNnplYfgNh\ndPR8+euIiFQ0XbAgIpIyJVoRkZQp0YqIpEyJVkQkZRqPFli0CEaPhvfeyzoSSaqmETxbciwtWae2\nFtZZZ81/Xbq0znStyrIWU6IFZs6E666rrg+2SGvr2DEk3D594De/gQEtvUC+HVKiBfbaC+bPhw8+\naPqx0rZqit2ztcK05Fiau87KlbBs2Zr/li5tvemlS+G55+Coo2DaNOhV8Ib0kk+JNtpoo/BPRIob\nPRouuABOOAH+9Cc1KZRCT5GINMt558HgwXD//XDZZVlHUxmUaEWkWTp0gDvvhL594cc/hr9/6obs\nkk+JVkSabaON4O67Qxvy0UfDvHlZR1TelGhFpEX22gsuvTQk2aFDw4k4KUyJVkRa7Kyz4PDDYeJE\nOL/g8PsCSrQishZqamDcONhyS7joInjooawjKk9KtCKyVnr2hN/9LlzMcOyx8OabWUdUfpRoRWSt\n7bwzXH01vPMOfP3rsHx51hGVFyVaEWkVJ58Mw4bBk0/C2WdnHU15UaIVkVZRUwM33ADbbBOq29//\nPuuIyocSrYi0mu7dQ4Lt1g1GjIBXXsk6ovKgRCsirerzn4exY8Owo1/7Gnz0UdYRZU+JVkRa3dCh\nMGoUvPACnH561tFkT4lWRFLxi1+E3gi33AK33pp1NNlSohWRVHTpEvrXfuYzcOqpMH161hFlR4lW\nRFKz5Zbw61+HdtqjjoIlS7KOKBtKtCKSqsMOg+99L/RAOOmk9nnLKCVaEUndxRfD3nvDPfeE+/O1\nN0q0IpK6Tp3grrvCOLZnnQVTp2YdUdtSohWRNtG3b7h77ooVoX/tokVZR9R2lGhFpM0ceGC4ueOb\nb8Lxx8OqVVlH1DaUaEWkTZ17Lhx0EDz4YLhDQ3ugRCsibaq2Fu64IzQlnHsuPPZY1hGlT4lWRNrc\nRhuFHgi1te3j5o5KtCKSiT33DE0H8+fDMceEk2TVSolWRDJz5plwxBGh+aCab+7YMa0Nm1ktMAbY\nEVgGjHT3WXFZb+CuxMN3An7o7jeY2TQgd6Hea+4+PK0YRSRbNTVh0Jnnnw8XNey1FwwZknVUrS+1\nRAscDnRx94FmtgdwBXAYgLvPAwYBmNlA4CLgRjPrAtS4+6AU4xKRMtKzZxgsfOBAOO44ePZZqKvL\nOqrWlWbTwd7ABAB3nwIMyH+AmdUA1wCnuPtKQvXb1cz+YmaPxgQtIlWuf3+45ppwc8evfa36bu6Y\nZqLtASxOTK80s/wK+svAi+7ucfpD4HLgi8Ao4M4C66zBzEabWUPyH/Ba6xyCiLSVkSNDRTt1ahiE\nppqk2XSwBFgvMV3r7vnnFY8Frk5MvwLMcvcG4BUzWwRsCsxubCfuPhoYnZxnZpujZCtSUWpq4Prr\nYdq0UN3ut184UVYN0qxoJwFDAGITQKFhfwcAkxPTIwhtuZhZH0JVPDfFGEWkjHTrFgafgeq6K0Oa\nFe14YLCZTQZqgOFmNhTo7u5jzWwjYEmsXnNuBm41syeABmBEgSpYRKrYttuGu+m+8UbWkbSe1BKt\nu68itLMmzUwsX0jo1pVcZzkwNK2YRKT81dSEXgdvvpl1JK1HFyyISNmpr4d33w23LK8GSrQiUnZy\n/WirpapVohWRslNfH/5WSzutEq2IlB1VtCIiKVNFKyKSMlW0IiIp69MHOnRQRSsikpqOHcOtblTR\nioikqK4O3noLPv4460jWnhKtiJSl+vpwO/I5c7KOZO0p0YpIWaqmE2JKtCJSlqqpi5cSrYiUJVW0\nIiIpU0UrIpIyVbQiIinr3h169VJFKyKSqtwA4A0NTT+2nCnRikjZqq+HDz4ItyGvZEq0IlK2qqWd\nVolWRMpWtfQ8UKIVkbKlilZEJGWqaEVEUqaKVkQkZRtvDJ07q6IVEUlNbe3qvrSVTIlWRMpaXR3M\nnw9Ll2YdScsp0YpIWcudEJs9O9s41oYSrYiUtWo4IaZEKyJlrRq6eCnRikhZU0UrIpIyVbQiIinb\nbLPwt5Ir2o6lPMjMhgLbAhcBR7n7balGJSISdekCvXtXeUVrZpcAQ4CvEhLzcDO7Iu3ARERy6upC\n965Vq7KOpGVKqWi/COwMTHP3JWY2GHgB+G6xlcysFhgD7AgsA0a6+6y4rDdwV+LhOwE/BMY2to6I\ntF/19TB1arhwYdNNs46m+Uppo819h+RuJrFOYl4xhwNd3H0gIYl+UgW7+zx3H+Tug4BzgGnAjcXW\nEZH2q9J7HpSSaO8B7gZ6mdl3gH8Avylhvb2BCQDuPgUYkP8AM6sBrgFOcfeVpawjIu1PLtFWajtt\nKU0HlwMHAm8AdcD57n5/Cev1ABYnpleaWUd3X5GY92XgRXf3ZqyzBjMbDZxfQjwiUqFyXbwqtaIt\nJdE+5e47Aw83c9tLgPUS07UFEuaxwNXNXGcN7j4aGJ2cZ2abA681L1wRKVeVXtGW0nQw38z2MbN1\nmrntSYTeCpjZHsD0Ao8ZAExu5joi0s60h4p2APB3ADPLzWtw9w5NrDceGGxmk4EaQrewoUB3dx9r\nZhsBS9y9odg6pR+KiFSr9deHbt0qt6JtMtG6+0Yt2bC7rwJG5c2emVi+kNCtq6l1RKSdq6kJVW3V\nVrRm1pVwsumA+PhHgfPc/YOUYxMR+URdHbz0Erz3Hqy3XtOPLyeltNFeC3QDRgAnAJ2BG9IMSkQk\nXyW305bSRruLu++YmD7dzF5KKyARkUKSFy1su222sTRXKRVtrZn1zE3E/xftciUi0toqebjEUira\nK4GnzOy+OP0V4GfphSQi8mmVfBlukxWtu48DjgBeBV4HjnD3W1KOS0RkDZVc0ZYyTOL2wLnufh3w\nV2CMJTrUioi0hT59oEOHKq1oCaNq3Qrg7i8DPwVuTjEmEZFP6dgR+vat0ooW6ObuE3IT7v4IobuX\niEibqquDt96CFRV2Or6Uk2ELzGwUcEecPhqYn15IIiKF1dXBE0+EZJtrs60EpVS0w4FDgbnAm8Ah\nwMg0gxIRKaRSL1ooZayDNwmJVkQkU8nhEvfZJ9tYmqPRRBvHOLgQuMfdp5rZlcBJwLPAMe7+VhvF\nKCICVG5FW6zp4CqgK/C6mQ0BhgH9CRcwXNsGsYmIrKFSBwAv1nQw0N23BzCzwwiV7Sxglpld3CbR\niYgkVOrVYcUq2pWJ/w8iXKyQ0zmVaEREilhvvTAIeKUl2mIV7SIz243QZ7YvMdGa2SDgP+mHJiLy\nafX18K9/QUNDGBC8EhSraL9DuCLs98Cp7v6BmZ1LuP3499sgNhGRT6mrgw8+gHffzTqS0jVa0br7\ndGCbvNl3Ade4++ICq4iIpC45uEyvXtnGUqpSrgz7RDwZJiKSmeQJsf79s42lVKVcGSYiUjYqcbhE\nJVoRqSiV2MWrlLvg9iRcrNAL+OQcn7tfmGJcIiIFVeJFC6W00f4OWAzMABrSDUdEpLhNNoHOnaus\nogV6u/vg1CMRESlBbS3061dZFW0pbbTPmtkOqUciIlKi+nqYPx+WLs06ktKUUtFuR0i284GlhHba\nBnffMtXIREQakWunnT0btt4621hKUUqiPSL1KEREmiE5XGK1JNo3gVHAAfHxj6JhEkUkQ5XW86CU\nRHsZsDVwC6HZYDiwBXBminGJiDSq0gYALyXRHgT0d/dVAGb2ADAdJVoRyUilXbRQSq+DjqyZkDuy\n5li1IiJtql+/8Leamg7uBB4zs9/G6WOA3xZ5vIhIqrp0CRcuVE1F6+4XAz8F6oDNgYvc/aKU4xIR\nKaq+PiTaVauyjqRpxe6Cu7O7TzOzfYEPgD8nlu3r7v8otmEzqwXGADsCy4CRyWEWzWxXwo0ea4B5\nwLHuvtTMpgFL4sNec/fhLTs0EalmdXUwdSosWAC9e2cdTXHFmg5OIdxe/IICyxqA/ZvY9uFAF3cf\naGZ7AFcAhwGYWQ1wI3CUu88ys5FAvZm9AdS4+6DmHYaItDfJ4RIrNtG6+0nxv99y9xnJZTFxNmVv\nYELc1hQzG5BY9llgEXCmmW0HPODubma7A13N7C8xth+5+5TSD0dE2otkz4Pdd882lqYUazrYC+gA\n3GRmJ7J6iMSOwA2EZFlMD8KoXzkrzayju68ANgT2BE4HZgH3m9nTwELgcuAmQt/dh8zM4jqNxTka\nOL+JWESkylTSRQvFmg4GA18ANgWSY8+uAH5VwraXAOslpmsTCXMRMMvdXwYwswnAAODqOL8BeMXM\nFsX9z25sJ+4+GhidnGdmmwOvlRCjiFSoSrpooVjTwWgAMzvO3W9vwbYnAV8G7olNDdMTy14FupvZ\nVvEE2T7AzcAIYHvgVDPrQ6iK57Zg3yJS5aqlos2ZamZXA90JzQcdgC3cfd8m1hsPDDazyXG94WY2\nFOju7mNjc8Rv4omxye7+gJl1Bm41sycIJ9xGFGs2EJH2q1cv6NatwivahLuBPxGqzluBgwl3Wygq\nXrI7Km/2zMTyR4Hd8tZZDgwtISYRaedqakJVWwkVbSmX4Na6+/mEHgTTCN22yvwcn4i0B/X18O67\n8N57WUdSXCmJ9kMzWwd4BdjF3ZcBXdINS0SkaZUyuEwpifYOwlVhDwDfMrOHgLdSjUpEpASV0vOg\nlLEOrgWOdPeFwCBgLKH5QEQkU5XS86DYBQs/yZtOTm7Pmn1rRUTaXDVUtDXx3+7AkcAqYDlwCLBt\n+qGJiBRXKW20xS5YuADAzCYBA939wzh9FTCxbcITEWlc375QW1v+TQelnAzbiHDxQE4noFc64YiI\nlK5jx5BsK7aiTbgReNrMHiRcFXYIYUwCEZHM1dXBlCmwYkVIvOWolF4HPweOJwzO/R/g6+4+Ju3A\nRERKUV8PK1fCnDlZR9K4RhOtmR0a/x5POPm1EHgb2DHOExHJXCV08SpWaO8K3A/s18jy21o/HBGR\n5qmELl7Feh2cH//qnl0iUrYquqI1s9dYs7fBGtx9y1QiEhFphoquaAmX24qIlLWKrmjd/Q2AOHLX\nEPIG/gZ+0ti6IiJtZb31YP31K7eizbkX6ApsBTwO7Av8M82gRESao64OZs2ChoYwIHi5KeXKMAP2\nJ9ya5jLCXRH6phmUiEhz1NfDBx+EQcDLUSmJdn68K+1MYAd3nwOsk25YIiKlK/d22lIS7Ytmdg3w\nGHCmmf2QMN6BiEhZKPeeB6Uk2lOAe9z9JeB8YFN0A0URKSPlPlxisX60vwduBia4++MA7n4fcF8b\nxSYiUpJcRVuJTQf3Ad8FXjezi8zsf9ooJhGRZin3irbRROvut7n7gcCewBLgj2b2mJkdZ2a6C66I\nlI1NNoHOnSuzogXA3d9y90vdfXvgTEI/2jIekExE2pvaWujXr3wr2pKGyTWz7oT7hg0j9KG9LM2g\nRESaq64OJk6EpUuhS5n95i52Mqwz4W4Kw4B9CG22F7j7pDaKTUSkZLkTYv/5D2y1Vbax5CtW0c4H\nngfGAcfnbs4oIlKOkhctVFKiHeDu/26zSERE1kI5X7RQrNeBkqyIVIxyvgy3lCvDRETKXkVWtIWY\nWQ8z2zatYEREWqpfv/C3HCvaJrt3mdlIwkULPwCeBd4zsz+4+7lpByciUqouXcKFC5Va0Z4CfA84\nBvgTsD3wpTSDEhFpibq6kGhXrco6kjWVdMGCu79jZkOAX7r7CjNbt6l1zKwWGAPsCCwDRrr7rMTy\nXYErCbfHmQccCywvto6ISDH19fDUU7BgAfTunXU0q5U6Hu39wJbAX83sHuDpEtY7HOji7gOBHwJX\n5BaYWQ1wIzDc3fcGJgD1xdYREWlKuQ4uU0qiHUG45HYPd18O3AacWMJ6uQSKu08BBiSWfRZYRBhI\n/O9AL3f3JtYRESmqXLt4lZJo64F+wLtmNpYw+PceJazXA1icmF5pZrmmig0JJ9iuBQ4EDjCz/ZtY\nR0SkqHLt4lVKEhsHXAMcRqhEzwIup+lkuwRYLzFd6+4r4v8XAbPc/WUAM5tAqF6LrVOQmY0mJH8R\naecquaLt4u6/Aw4F7ox3WyjlnmGTgCEAZrYHMD2x7FWgu5nlrkjeB3ixiXUKcvfR7l6T/AdsUUJ8\nIlJlKrmiXWlmRxIS7XlmdjiwsoT1xgODzWwyoWfBcDMbCnR397FmdiLwm3hibLK7PxB7KqyxTksO\nSkTap169oGvX8qtoS0m0JxMG/D7V3eea2dHAyKZWcvdVwKi82TMTyx8FdithHRGRktTUhKq23Cra\nUu6wMB34BdDHzL4DXOLuL6QemYhIC9TVwTvvwPvvZx3Jak0mWjM7Dvgjod2zHrjXzEakHZiISEuU\nYzttKU0H3wV2c/dFAGZ2EfAYcEuKcYmItEiy58E222QbS04pvQ465JIsgLu/DZTZlcQiIkGlVrTP\nm9lVwM1x+kTCLW5ERMpOOfalLaWiPYkwwMstwK2EgV9OTTEmEZEWq9SKdoy7qz+riFSEPn2gtrby\nKtrtzKx76pGIiLSCTp2gb9/Kq2hXAW+amQMf5Wa6+/6pRSUishbq6mDKFFixAjqWwbBUpYRwdupR\niIi0oro6mDQJ5sxZfXIsS0UTrZmtD7wYu3RhZl8AXnL3hW0RnIhISyRPiJVDom20jdbM+gMvsebg\n2wcBz5nZDmkHJiLSUuXWxavYybDLgWPcfUJuhrv/mHDHhSvTDkxEpKXKrYtXsUS7vrs/lj/T3R8m\n3CFBRKQsVVJF2ymOD7uGOK9zeiGJiKydcrtJY7FE+3cK3yLmXEq7C66ISCZ69ICePcunoi3W6+Ac\n4EEzGwZxrS7vAAAOJ0lEQVQ8Rbjjwc7AAuArbRCbiEiL1dfDv/8NDQ1hQPAsNVrRuvt7wL6EOyw8\nDTwJnOjue7v7O20Un4hIi9TVhcG/330360ia6Efr7g3Ao/GfiEjFSPY86NUr21hKGetARKTilFPP\nAyVaEalK5dSXVolWRKqSKloRkZSVU19aJVoRqUq9e4exaVXRioikpLYW+vVTRSsikqr6epg3D5Yt\nyzYOJVoRqVq5dtrZs7ONQ4lWRKpWuXTxUqIVkapVLl28lGhFpGqpohURSZkqWhGRlPXrF/6qohUR\nScm668LGG6uiFRFJVX196N61alV2MSjRikhVq6sLFywsWJBdDEUH/l4b8SaOY4AdgWXASHeflVh+\nJjASWBhnfdPd3cymAUvivNfcfXhaMYpI9Uv2POjdO5sYUku0wOFAF3cfaGZ7AFcAhyWW7wIc7+7P\n5GaYWRegxt0HpRiXiLQjyZ4Hu+2WTQxpNh3sDUwAcPcpwIC85bsA55jZE2Z2Tpy3I9DVzP5iZo/G\nBC0i0mLlMFximhVtD2BxYnqlmXV09xVx+i7gOkIzwXgzOxR4A7gcuAnYGnjIzCyxzqeY2WgK3xZd\nROSTpoMsex6kmWiXAOslpmtzCdPMaoCr3H1xnH4A6A88AsyKN4V8xcwWAZsCjQ4J4e6jgdHJeWa2\nOfBaax2IiFSucqho02w6mAQMAYhNANMTy3oAM8yse0y6+wPPACMIbbmYWZ/4uLkpxigiVW6DDaBr\n1+ptOhgPDDazyUANMNzMhgLd3X2smf0ImEjokfA3d3/QzDoDt5rZE0ADMKJYs4GISFNqakJVW5VN\nB+6+ChiVN3tmYvntwO156ywHhqYVk4i0T/X1MHMmvP8+dO/e9vvXBQsiUvWybqdVohWRqpf1cIlK\ntCJS9bIeLlGJVkSqnipaEZGUqaIVEUlZ375QW6uKVkQkNZ06QZ8+qmhFRFJVVwdvvQUrMrgESolW\nRNqF+npYuRLmzGn7fSvRiki7kOVFC0q0ItIuZDlcohKtiLQLqmhFRFKW5UULSrQi0i5kedGCEq2I\ntAs9ekDPnqpoRURSlRsAvKGhbferRCsi7UZ9fRj8+7//bdv9KtGKSLuRVTutEq2ItBtZ9TxQohWR\ndkMVrYhIylTRioikTBWtiEjKevcOY9OqohURSUltLfTrp4pWRCRVdXUwbx4sW9Z2+1SiFZF2JXdC\nbPbsttunEq2ItCtZDJeoRCsi7UoWA4Ar0YpIu6KKVkQkZVlctKBEKyLtSr9+4a+aDkREUrLuurDx\nxqpoRURSVVcXEu2qVW2zPyVaEWl36uvDBQsLF7bN/jqmtWEzqwXGADsCy4CR7j4rsfxMYCSQO9Rv\nAv8qto6ISGtIDi6zySbp7y/NivZwoIu7DwR+CFyRt3wX4Hh3HxT/eQnriIistbbueZBmot0bmADg\n7lOAAXnLdwHOMbMnzOycEtcREVlrbT1cYmpNB0APYHFieqWZdXT3FXH6LuA6YAkw3swOLWGdTzGz\n0cD5rRq5iFS1tr5oIc1EuwRYLzFdm0uYZlYDXOXui+P0A0D/Yus0xt1HA6OT88xsc+C1tQtfRKpV\nW1+Gm2bTwSRgCICZ7QFMTyzrAcwws+4x6e4PPNPEOiIirWKDDUJ/2mqoaMcDg81sMlADDDezoUB3\ndx9rZj8CJhJ6F/zN3R+MPRXWWCfF+ESknaqpCVVtxbfRuvsqYFTe7JmJ5bcDt5ewjohIq9tpJ/jb\n36ChISTeNKVZ0YqIlK1x4+D999NPsqBEKyLtVJcu4V9b0CW4IiIpU6IVEUmZEq2ISMqUaEVEUqZE\nKyKSMiVaEZGUKdGKiKRMiVZEJGVKtCIiKavWK8M6AMybNy/rOESkiiRySofmrFetiXZTgGHDhmUd\nh4hUp02Bf5f64GpNtE8B+wBzgZUZx5LvNWCLrINoJdVyLNVyHKBjSVsHQpJ9qjkr1TQ0NKQTjhRk\nZg3u3gbjBaWvWo6lWo4DdCzlSifDRERSpkQrIpIyJVoRkZQp0ba9C7IOoBVVy7FUy3GAjqUs6WSY\niEjKVNGKiKRMiVZEJGVKtCIiKVOiFRFJmRKtiEjKlGhFRFJWrYPKVBQz2wb4NrAOcLm7z8g4pLVi\nZpsAD7j7gKxjWRtmdgBwNNAVuMzdn884pGYzsz2Bb8bJb7v7f7OMp6Uq/bVQRVseRgJvAcuA17MN\nZe2YWQ1wNvBG1rG0gq7AycDlwEEZx9JSJxMS7c3A/2Ycy9qo6NdCFW0GzOw7wIFx8p/AVsA3gJ2B\n44Ex2UTWfAWO5R3gDuC7mQXVQvnH4u4XmVk34AzgB9lFtlY6uPtSM5sL7J91MC3l7n+u5NdCV4aV\nATO7CTgN2BbY092vzTikFjOze4EFhA/1j939dxmH1GJmtiFwGXC+u8/OOp6WMLNfEZLT7sA27n5D\nxiG1SKW/Fkq0rczMdgcudfdBZlZLqE53JDQLjHT3WQXWGUD4MNQS2tEWtWXMjWnJsSTWvcPdj22j\nUJvUwtflNmAjYBHwR3f/fVvG3JRSjsnMdgG+BXQCvunu72cXcWElHkdZvxZNUdNBKzKzs4HjgA/i\nrMOBLu4+0Mz2AK4ADstfz92fJjQZlI2WHktOmSXZlr4uZfWaJJV6TO7+DKFZqiw14zjK9rUohU6G\nta5/A19NTO8NTABw9ylAJZ2F17GUt2o5pmo5jqKUaFuRu/8B+DgxqwewODG90swq4leEjqW8Vcsx\nVctxNEWJNl1LgPUS07XuviKrYNaSjqW8VcsxVctxrEGJNl2TgCEAsb1perbhrBUdS3mrlmOqluNY\nQ8WX5GVuPDDYzCYDNcDwjONZGzqW8lYtx1Qtx7EGde8SEUmZmg5ERFKmRCsikjIlWhGRlCnRioik\nTIlWRCRlSrQiIilTohURSZkuWBAAzOwo4BzCe6IWuM3dfx6XXQD81d0fT3H/Xwa2dvcrzWw0gLuP\nbuG2biEMTnK+u/82Mb8ByN0CpQboSRjA5FR3X9ny6D+1/8eA0e7+WImP/wowwN1/0sz9fAb4tbsf\nbmZ9gJvcfUhz45X0KdEKZtaXMBzdzu6+yMy6A383M3f3+4AvABNTDmOXVtzWNwhD7S3PX+DuO+X+\nb2Y9gBmEW6M81Ir7b5b4HN/XglXXB3aK25hDvHRVyo8SrQBsSBgYuiuwyN3fN7MTgKVmdjxhqLqb\nzOwI4BrC7Wq2JdyDqjdwYVz/NeCkmKxfB24Hvgh0A45392fMbDvgVsJ773HgYOArwCgAM8vda2y3\neBlmX2BcfnUbB4i+CjgAaABud/dLzew+QrU61cwOcvcFTRx313g8xGP9DqGifwY4Ld4G5uvxGD8E\npgEd3f0b8RgHufvrZjaIUMUOSsTYEbge2A7YBHDCkICbECrpt4GlhFv/DAJGA39MHiZwHjCWcM+v\nzYA+wD8I4xf/EuhjZuOBM4HH3H3zeHPMm4E6YAXwI3efEH8p9AW2BuoJFfBFRZ4faSVqoxXiHUX/\nBLxqZlPN7FLCvaZmufttwNOEke5zA3y84O5GuKHkJcAX3b0/8DBwaWLTi9x9N+AG4Edx3q+Bn8TK\n8lVC0nopPuYGdx8XH7cJsB+h0v2+mSVHdIKQmPsBOwC7AUea2SHu/pV4TDsVSrJm9pyZvWhmCwkJ\n/wx3f9LMtgVOItxKaCfC7Xi+Z2YbsTqhDwB6lf7Msiew3N0HEu4Lty6rq04DjnX33D3KcPfXY9w7\nERL7DOBa4BDgubidrYGBhPvLnQHMcfcj8vZ7DfCou+8AHAXcEpMv8fk6iHBrmx+aWc9mHI+0kBKt\nAODupwCbEyqwemCKmX21kYc/Gf/uTqiaJprZc8DphESQMyH+nQH0MrNewObu/mCcf0uRkB5y92Xu\n/jah8stPcPsDt7r7Snf/ELiTkAyLiolsW+Biwk/vB+Ki/WLsU+KxHAZ8DtiHcKPGt9x9FeGLoiTu\n/g9gjJmdBlwdt989Ll7g7q8XWs/MdiDc7fVId18a25kfiTePvAbYILGdQvYnVLS4+6uE12v3uGyi\nuy+PX0LvAJ8p9Xik5dR0IJjZIUB3d78bGAeMM7OTgBOBewus8lH82wF4IldFmlkX1hxLdGn820D4\nOb8y/i1FcgzS3PpJ+UVCDc14P7v7L8zsS4Qb/n2TcCz3uPsZALGduiOhfbqxgiQZV6f8hfEk14WE\nJDuO0FSRe/xH+Y+P62wI/AEY4e5vxnnfIlSmY4G/Epoiij2PxZ6bpYn5hZ5XSYEqWoHQ9vgzM9sc\nwMxqgG2AZ+PyFRROYk8CA83ss3H6PODnje3E3RcDs8zs4DhrKOHDXmwfjXkUOMHMOphZV2AYzT9h\ndxYwPFaQjwFHmNnG8fivJ7TXTgZ2NbNN4/yjEzG/TWirhsL3TzuQkLzHAfOAfQkJvSAz6wT8Hvhl\nXo+FwcCv3P3OuO+d4nYae84eJXxJYmZbAnsRbgUvGVGiFdx9InABcL+ZOTCT8EG+MD5kAnCDme2Z\nt948YARwj5lNJ7QbfreJ3Z0A/MTMphF+zuYqu38Aw2L1VopfAf8hdNd6FrjP3ceXuG4u/hcJTQFX\nxHbqCwhJ6kXCZ+MSd19IaAt9BHiKULnmYj4fuNrMngL+W2AXNwLHmNmzhF8GU4AtioT0NUK77nFm\n9mxsT/45oY34/PicjSEk/y2A+cCbZpb/BXMGsH98Tf5IaF+fW+rzIq1P49FKmzKznwA3uvvc2AY8\nzN2PzDquxpjZBoTEdYG7rzKzXwL/cvdrMg5NKojaaKWtvUk4sfMx8C7xJ24Ze4dwYcMMM1tB6N51\nY7YhSaVRRSsikjK10YqIpEyJVkQkZUq0IiIpU6IVEUmZEq2ISMqUaEVEUvb/YAqC6HWByekAAAAA\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n", "\n", "ax.plot(reg_params, x_val_scores, color='blue')\n", "\n", "ax.set_xscale('log')\n", "ax.set_title('Regularization Strength vs Cross Validation Score')\n", "ax.set_xlabel('Strength of Regularization')\n", "ax.set_ylabel('Cross Validation Score')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "best regularization param is: 1.01\n", "the test R^2 for ridge regression with alpha = 1.01 is: 0.807230648634\n" ] } ], "source": [ "best_alpha = reg_params[np.argmax(x_val_scores)]\n", "\n", "ridge_regression = Ridge(alpha=best_alpha, fit_intercept=True)\n", "ridge_regression.fit(X_non_test, y_non_test)\n", "test_R_sq = (ridge_regression.score(X_test, y_test))\n", "\n", "print 'best regularization param is:', best_alpha\n", "print 'the test R^2 for ridge regression with alpha = {} is: {}'.format(best_alpha, test_R_sq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bias-Variance Tradeoff" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Consider a regression model that fits perfectly the *training data* (e.g. high order polynomial or small $h$). This complex model will have a high variance when regressing new data. On the other hand, a model too simple will have very low variance, but at the same time it will have a high bias. Furthermore, there is a tradeoff between bias and variance in terms of the MSE of the model:\n", "\n", "$\\mathrm{MSE}(x) = \\mathbb{E}(f(x) - \\hat{f}(x)) = \\mathrm{bias}_x^2 + \\mathrm{variance}_x + \\sigma^2$, where\n", "\n", "$\\mathrm{bias}_x = \\mathbb{E}(\\hat{f}(x))- f(x)$\n", "\n", "$\\mathrm{variance}_x = \\mathrm{Var}(\\hat{f}(x)) = \\mathbb{E}(\\hat{f}(x) - \\mathbb{E}(\\hat{f}(x)))$\n", "\n", "$\\sigma$ = standard deviation of the noise.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x = np.arange(0, 2*np.pi, 0.01)\n", "y = np.cos(2*x)\n", "\n", "sigma_noise = 0.1\n", "N = 5\n", "pl.clf()\n", "\n", "pl.plot(x, y, \"k\")\n", "colors = ['r', 'b', 'g', 'c', \"m\", \"y\"]\n", "for i in range(N):\n", " x_data = np.random.random(10)*2*np.pi\n", " y_data = np.cos(2*x_data) + np.random.normal(scale = sigma_noise, size = 10)\n", "\n", " p1 = np.polyfit(x_data, y_data, 0)\n", " p1 = np.poly1d (p1)\n", " y1 = p1(x)\n", "\n", " pl.plot(x_data, y_data, \"o\" + colors[i])\n", " pl.plot (x, y1, colors[i])\n", "pl.title (\"0 order poly: high bias, low variance\")\n", "pl.ylim ([-3, 3]) \n", "pl.show()\n", "\n", "pl.clf()\n", "pl.plot(x, y, \"k\")\n", "for i in range(N):\n", " x_data = np.random.random(10)*2*np.pi\n", " y_data = np.cos(2*x_data) + np.random.normal(scale = sigma_noise, size = 10)\n", "\n", " p10 = np.polyfit(x_data, y_data, 8)\n", " p10 = np.poly1d (p10)\n", " y10 = p10(x)\n", "\n", " pl.plot(x_data, y_data, \"o\" + colors[i])\n", " pl.plot (x, y10, colors[i])\n", "pl.title (\"9th order poly: low bias, high variance\")\n", "pl.ylim ([-3, 3])\n", "pl.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In general, the more biased our model is, the lowest the variance, and vice versa. The good news is that we can balance variance and bias using the RMSE over a _test set_. This is the same concept of cross-validation used in classification.\n", "\n" ] } ], "metadata": { "anaconda-cloud": {}, "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.6.5" }, "name": "_merged" }, "nbformat": 4, "nbformat_minor": 1 }