Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pavanandhukuri/040865f83a30777510201574724c0785 to your computer and use it in GitHub Desktop.
Save pavanandhukuri/040865f83a30777510201574724c0785 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/DA0101EN_edx_link_Notebook_link_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width=300, align=\"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 5: Model Evaluation and Refinement</h1>\n",
"\n",
"We have built models and made predictions of vehicle prices. Now we will determine how accurate these predictions are. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Table of content</h1>\n",
"<ul>\n",
" <li><a href=\"#ref1\">Model Evaluation </a></li>\n",
" <li><a href=\"#ref2\">Over-fitting, Under-fitting and Model Selection </a></li>\n",
" <li><a href=\"#ref3\">Ridge Regression </a></li>\n",
" <li><a href=\"#ref4\">Grid Search</a></li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/edx_DA0101EN_objectstorage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"# Import clean data \n",
"path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/module_5_auto.csv'\n",
"df = pd.read_csv(path)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df.to_csv('module_5_auto.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" First lets only use numeric data "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>Unnamed: 0.1</th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>...</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>0.890278</td>\n",
" <td>48.8</td>\n",
" <td>2548</td>\n",
" <td>130</td>\n",
" <td>...</td>\n",
" <td>2.68</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>0.890278</td>\n",
" <td>48.8</td>\n",
" <td>2548</td>\n",
" <td>130</td>\n",
" <td>...</td>\n",
" <td>2.68</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>0.909722</td>\n",
" <td>52.4</td>\n",
" <td>2823</td>\n",
" <td>152</td>\n",
" <td>...</td>\n",
" <td>3.47</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>0.919444</td>\n",
" <td>54.3</td>\n",
" <td>2337</td>\n",
" <td>109</td>\n",
" <td>...</td>\n",
" <td>3.40</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>0.922222</td>\n",
" <td>54.3</td>\n",
" <td>2824</td>\n",
" <td>136</td>\n",
" <td>...</td>\n",
" <td>3.40</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Unnamed: 0.1 symboling normalized-losses wheel-base \\\n",
"0 0 0 3 122 88.6 \n",
"1 1 1 3 122 88.6 \n",
"2 2 2 1 122 94.5 \n",
"3 3 3 2 164 99.8 \n",
"4 4 4 2 164 99.4 \n",
"\n",
" length width height curb-weight engine-size ... stroke \\\n",
"0 0.811148 0.890278 48.8 2548 130 ... 2.68 \n",
"1 0.811148 0.890278 48.8 2548 130 ... 2.68 \n",
"2 0.822681 0.909722 52.4 2823 152 ... 3.47 \n",
"3 0.848630 0.919444 54.3 2337 109 ... 3.40 \n",
"4 0.848630 0.922222 54.3 2824 136 ... 3.40 \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km diesel gas \n",
"0 11.190476 0 1 \n",
"1 11.190476 0 1 \n",
"2 12.368421 0 1 \n",
"3 9.791667 0 1 \n",
"4 13.055556 0 1 \n",
"\n",
"[5 rows x 21 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df=df._get_numeric_data()\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Libraries for plotting "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"! pip install ipywidgets"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated since IPython 4.0. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n",
" \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n"
]
}
],
"source": [
"from IPython.display import display\n",
"from IPython.html import widgets \n",
"from IPython.display import display\n",
"from ipywidgets import interact, interactive, fixed, interact_manual"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Functions for plotting</h2>"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"def DistributionPlot(RedFunction, BlueFunction, RedName, BlueName, Title):\n",
" width = 12\n",
" height = 10\n",
" plt.figure(figsize=(width, height))\n",
"\n",
" ax1 = sns.distplot(RedFunction, hist=False, color=\"r\", label=RedName)\n",
" ax2 = sns.distplot(BlueFunction, hist=False, color=\"b\", label=BlueName, ax=ax1)\n",
"\n",
" plt.title(Title)\n",
" plt.xlabel('Price (in dollars)')\n",
" plt.ylabel('Proportion of Cars')\n",
"\n",
" plt.show()\n",
" plt.close()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"def PollyPlot(xtrain, xtest, y_train, y_test, lr,poly_transform):\n",
" width = 12\n",
" height = 10\n",
" plt.figure(figsize=(width, height))\n",
" \n",
" \n",
" #training data \n",
" #testing data \n",
" # lr: linear regression object \n",
" #poly_transform: polynomial transformation object \n",
" \n",
" xmax=max([xtrain.values.max(), xtest.values.max()])\n",
"\n",
" xmin=min([xtrain.values.min(), xtest.values.min()])\n",
"\n",
" x=np.arange(xmin, xmax, 0.1)\n",
"\n",
"\n",
" plt.plot(xtrain, y_train, 'ro', label='Training Data')\n",
" plt.plot(xtest, y_test, 'go', label='Test Data')\n",
" plt.plot(x, lr.predict(poly_transform.fit_transform(x.reshape(-1, 1))), label='Predicted Function')\n",
" plt.ylim([-10000, 60000])\n",
" plt.ylabel('Price')\n",
" plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1 id=\"ref1\">Part 1: Training and Testing</h1>\n",
"\n",
"<p>An important step in testing your model is to split your data into training and testing data. We will place the target data <b>price</b> in a separate dataframe <b>y</b>:</p>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"y_data = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"drop price data in x data"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"x_data=df.drop('price',axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we randomly split our data into training and testing data using the function <b>train_test_split</b>. "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"number of test samples : 31\n",
"number of training samples: 170\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"\n",
"x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.15, random_state=1)\n",
"\n",
"\n",
"print(\"number of test samples :\", x_test.shape[0])\n",
"print(\"number of training samples:\",x_train.shape[0])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The <b>test_size</b> parameter sets the proportion of data that is split into the testing set. In the above, the testing set is set to 10% of the total dataset. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1):</h1>\n",
"\n",
"<b>Use the function \"train_test_split\" to split up the data set such that 40% of the data samples will be utilized for testing, set the parameter \"random_state\" equal to zero. The output of the function should be the following: \"x_train_1\" , \"x_test_1\", \"y_train_1\" and \"y_test_1\".</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"number of test samples : 81\n",
"number of training samples: 120\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"x_train_1, x_test_1, y_train_1, y_test_1 = train_test_split(x_data, y_data, test_size=0.4, random_state=0)\n",
"print(\"number of test samples :\", x_test_1.shape[0])\n",
"print(\"number of training samples:\",x_train_1.shape[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.4, random_state=0) \n",
"print(\"number of test samples :\", x_test1.shape[0])\n",
"print(\"number of training samples:\",x_train1.shape[0])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's import <b>LinearRegression</b> from the module <b>linear_model</b>."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We create a Linear Regression object:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"lre=LinearRegression()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we fit the model using the feature horsepower "
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lre.fit(x_train[['horsepower']], y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's Calculate the R^2 on the test data:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.707688374146705"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lre.score(x_test[['horsepower']], y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can see the R^2 is much smaller using the test data."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.6449517437659684"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lre.score(x_train[['horsepower']], y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2): </h1>\n",
"<b> \n",
"Find the R^2 on the test data using 90% of the data for training data\n",
"</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.7340722810055448"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"x_train_1, x_test_1, y_train_1, y_test_1 = train_test_split(x_data, y_data, test_size=0.1, random_state=0)\n",
"lre.fit(x_train_1[['horsepower']], y_train_1)\n",
"lre.score(x_test_1[['horsepower']], y_test_1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.1, random_state=0)\n",
"lre.fit(x_train1[['horsepower']],y_train1)\n",
"lre.score(x_test1[['horsepower']],y_test1)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Sometimes you do not have sufficient testing data; as a result, you may want to perform Cross-validation. Let's go over several methods that you can use for Cross-validation. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Cross-validation Score</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets import <b>model_selection</b> from the module <b>cross_val_score</b>."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.model_selection import cross_val_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We input the object, the feature in this case ' horsepower', the target data (y_data). The parameter 'cv' determines the number of folds; in this case 4. "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Rcross = cross_val_score(lre, x_data[['horsepower']], y_data, cv=4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The default scoring is R^2; each element in the array has the average R^2 value in the fold:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([0.7746232 , 0.51716687, 0.74785353, 0.04839605])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Rcross"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can calculate the average and standard deviation of our estimate:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of the folds are 0.522009915042119 and the standard deviation is 0.2911839444756029\n"
]
}
],
"source": [
"print(\"The mean of the folds are\", Rcross.mean(), \"and the standard deviation is\" , Rcross.std())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use negative squared error as a score by setting the parameter 'scoring' metric to 'neg_mean_squared_error'. "
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([20254142.84026704, 43745493.26505169, 12539630.34014931,\n",
" 17561927.72247591])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"-1 * cross_val_score(lre,x_data[['horsepower']], y_data,cv=4,scoring='neg_mean_squared_error')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #3): </h1>\n",
"<b> \n",
"Calculate the average R^2 using two folds, find the average R^2 for the second fold utilizing the horsepower as a feature : \n",
"</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of the folds are 0.5166761697127429 and the standard deviation is 0.07348004195771388\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"Rcross1 = cross_val_score(lre, x_data[['horsepower']], y_data, cv=2)\n",
"print(\"The mean of the folds are\", Rcross1.mean(), \"and the standard deviation is\" , Rcross1.std())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"Rc=cross_val_score(lre,x_data[['horsepower']], y_data,cv=2)\n",
"Rc.mean()\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also use the function 'cross_val_predict' to predict the output. The function splits up the data into the specified number of folds, using one fold to get a prediction while the rest of the folds are used as test data. First import the function:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import cross_val_predict"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We input the object, the feature in this case <b>'horsepower'</b> , the target data <b>y_data</b>. The parameter 'cv' determines the number of folds; in this case 4. We can produce an output:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([14141.63807508, 14141.63807508, 20814.29423473, 12745.03562306,\n",
" 14762.35027598])"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat = cross_val_predict(lre,x_data[['horsepower']], y_data,cv=4)\n",
"yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1 id=\"ref2\">Part 2: Overfitting, Underfitting and Model Selection</h1>\n",
"\n",
"<p>It turns out that the test data sometimes referred to as the out of sample data is a much better measure of how well your model performs in the real world. One reason for this is overfitting; let's go over some examples. It turns out these differences are more apparent in Multiple Linear Regression and Polynomial Regression so we will explore overfitting in that context.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's create Multiple linear regression objects and train the model using <b>'horsepower'</b>, <b>'curb-weight'</b>, <b>'engine-size'</b> and <b>'highway-mpg'</b> as features."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr = LinearRegression()\n",
"lr.fit(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Prediction using training data:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([11927.70699817, 11236.71672034, 6436.91775515, 21890.22064982,\n",
" 16667.18254832])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat_train = lr.predict(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"yhat_train[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Prediction using test data: "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([11349.16502418, 5914.48335385, 11243.76325987, 6662.03197043,\n",
" 15555.76936275])"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat_test = lr.predict(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"yhat_test[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's perform some model evaluation using our training and testing data separately. First we import the seaborn and matplotlibb library for plotting."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's examine the distribution of the predicted values of the training data."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"image/png": "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vTZexy0iIiKp49ChQ6xbt479+/cnOhQp56pVq0bjxo2pXLly1OvEdRz1VJaVleXUmVRERKR8W7VqFTVq1KBOnTr427uIxJ5zjm3btpGTk0OzZs3yzTOzuc65rEjr6c6kIiIiUmHt379fSbrEnZlRp06dEl+5UaIuIiIiFZqSdCkLpTnPlKiLiIiIiCQhJeoiIiIiIklIibqIiIhIgo0ZMwYz45tvvil22VGjRrFhQ8Fb00Rv6tSpXHLJJfmmff/999SpU4ddu3blm37ppZfy9ttvl2hbsfbkk0/yyiuvcPPNN5OZmUmrVq3IyMggMzOTzMxM3nnnnai3NWbMGB577LEil9m4cSMDBw483rBjIm7DM4qIiIhIdN588026du3K6NGjuf/++4tcdtSoUbRp04ZTTz01Zvs/4YQT6NevH++//z4jR/rb1ezatYvPP/+cN954I2b7Kanc3Fxeeukl5s2bx4gRIwBYvXo1l1xyCfPnzy90nfT0yCnukCFDit1nw4YNqV27NjNnzqRTp06lDz4GlKiLiIiIANx+OxSS/JVaZiY8+WSRi+zZs4fp06czZcoUBg0alC9Rf/TRR3n11VepVKkSAwYMICsrizlz5nD11VeTkZHBjBkzaNmyJXPmzKFu3brMmTOHO+64g6lTpzJr1ixuv/129u3bR0ZGBv/85z85++yzC41j+PDhPPvss3mJ+pgxY+jfvz/Vq1ePalv3338/J554InfccQcAbdq04cMPP6Rp06a89tprPPXUUxw8eJBOnTrxzDPPAHD99dczZ84czIzrrruOX/3qV/m2OXnyZNq3b19o4h3StWtXevTowWeffcZll11Gs2bN+NOf/sTBgwepV68er732GvXr1+cf//gHixYt4sknn+THP/4xderUYfbs2WzcuJHHH388L5G/9NJLef3115Woi4iIiFRk77//Pv379+ess86idu3azJs3j/bt2/Of//yH999/n5kzZ1K9enW2b99O7dq1+dvf/sZf/vIXsrIiDr2dp0WLFkybNo309HQmTpzIPffcw7vvvlvo8v379+eGG25g27Zt1KlTh9GjR/PLX/6yVNsK9/XXX/PWW28xffp0KleuzC9+8Qtef/11Wrduzfr161m0aBEAO3fuPGbd6dOn06FDh6j2s3v3bqZNmwbAjh07GDRoEGbGc889x+OPP86f//znY9bZvHkz06dPZ+HChQwbNiwvUc/KyuLBBx+Mar/xpERdREREBIpt+Y6XN998k9tvvx2Aq666ijfffJP27dszceJEfvKTn1C9enUAateuXaLt7tq1i5EjR7J8+XLMjEOHDhW5fJUqVRg0aBDvvPMOQ4cOZf78+fTr169U2wo3adIk5s6dS8eOHQHYt28f9evX54c//CErV67kl7/8JQMHDszbV7js7GxatmwZ1X6uuuqqvN+/++47hg0bxsaNGzlw4ABnnXVWxHUuvfRSzIy2bduyfv36vOn169c/rn4AsaJEXURERCRBtm3bxuTJk1m0aBFmxuHDhzEzHn30UZxzUY29nZ6ezpEjRwDy3VDn97//PRdeeCFjxoxh9erV9OzZs9htDR8+nAcffBDnHIMHD8673X002wqPIzwW5xwjR47k4YcfPmadBQsW8Mknn/D000/z9ttv89JLL+Wbn5GREfVNgk444YS832+++WbuueceLr74YiZOnMgjjzwScZ2qVavm/e6cyxd7RkZGVPuNJ436IiIiIpIg77zzDiNGjGDNmjWsXr2atWvX0qxZMz7//HP69evHSy+9xN69ewHYvn07ADVq1CAnJydvG02bNmXu3LkA+cpRdu3aRaNGjQDfATUaF154IcuXL+fpp59m+PDhJdpW06ZNmTdvHgDz5s1j1apVAPTu3Zt33nmHzZs35x3HmjVr2Lp1K0eOHGHo0KE88MADeeuGa9myJStWrIgq9nCheJ1zvPzyyyVef9myZbRp06bE68WaEnURERGRBHnzzTePGYlk6NChvPHGG/Tv359BgwaRlZVFZmYmf/nLXwC49tpruemmm8jMzGTfvn3cd9993HbbbXTr1o20tLS87fzmN7/h7rvvpkuXLhw+fDiqeCpVqsTQoUPZtm0b3bt3L9G2hg4dyvbt28nMzOTZZ5/NKzdp1aoVDz74IP369aNt27b07duX7Oxs1q9fT8+ePcnMzOTaa6+N2OI+YMCAvLrzkrj//vsZMmQIPXr0oEGDBiVef8qUKUkxRKOFN/PLUVlZWW7OnDmJDkNERETi6Ouvv466BloSY8iQITz66KM0b968TPbnnKNbt2589NFH1KxZM6bbjnS+mdlc51zEnsFqURcRERGRpPXII4+QnZ1dZvvbvHkzv/nNb2KepJeGOpOKiIiISNI6++yzixz/PdYaNGjAoEGDymx/RVGLuoiIiIhIElKiLiIiIiKShJSoi4iIiIgkIdWoi4h34AAsXAhz5sCXX0L//lBgyDAREREpO2pRF6nosrOhe3eoUQM6doSf/xxefBGuuQZWr050dCIi5V5aWhqZmZm0adOGK664Iu8GR6UxdepULrnkEgDGjh1b6B05AXbu3MkzzzxT4n3cf//9eWO6h++3c+fO+abl5ubSoEGDIkdsibStWLv88stZuXIlnTp1IjMzk9NOO4169eqRmZlJZmYmq0vwv+53v/sdU6ZMKXKZ999/nwceeOA4o/aUqItUdH/+M8yYAb/6FfzrX7ByJaxYAWZw442gey2IiMRVRkYG8+fPZ9GiRVSpUoXnnnsu33znHEeOHCnxdgcNGsRdd91V6PzSJuqRdO/enXXr1uVLeidOnEibNm045ZRTYrKP0li8eDGHDx/m9NNPZ+bMmcyfP58//vGPXHnllcyfP5/58+fTtGnTfOsUdXOohx56iAsvvLDIfQ4ePJh3332X/fv3H3f8StRFKrItW+CFF+Dqq33Cfvnl0KwZNG3q/54wAf75z0RHKSJSJm6/HXr2jO3P7beXLIZu3bqxYsUKVq9eTcuWLfnFL35B+/btWbt2LePHj6dz5860b9+eK664gj179gDw8ccf06JFC7p27cp7772Xt61Ro0Zxyy23ALBp0yaGDBnCueeey7nnnst///tf7rrrLr799lsyMzO58847AXjsscfo2LEjbdu25b777svb1kMPPcTZZ59Nnz59WLp06TFxV6pUiSuuuIK33norb9ro0aMZPnw4AC+88AIdO3bk3HPPZejQoRGvGvTs2ZPQzSa3bt2al0AfPnyYO++8My+uv//97wBkZ2fTvXv3vKsRn3322THbfP311xk8eHCRz3lubi61atXi3nvv5bzzzmPWrFncd999dOzYkTZt2nDTTTcRukHoj3/8Y95//30AGjduzP3330+7du1o27Yty5YtA8DM6NatG+PGjStyv9FQoi5SkT31FOzbB7/97bHzbrrJl8T8z//Ahg1lH5uISAWTm5vLf/7zH8455xwAli5dyogRI/jyyy854YQTePDBB5k4cSLz5s0jKyuLJ554gv379/PTn/6UDz74gM8++4yNGzdG3Patt95Kjx49WLBgAfPmzaN169Y88sgjnHHGGcyfP5/HHnuM8ePHs3z5cmbNmsX8+fOZO3cu06ZNY+7cuYwePZovv/yS9957j9mzZ0fcx/Dhwxk9ejQABw4cYNy4cQwdOhSAyy67jNmzZ7NgwQJatmzJiy++GPXz8uKLL1KzZk1mz57N7NmzeeGFF1i1ahVvvPEGF110EfPnz2fBggVkZmYes+706dPp0KFDsfvYtWsX7du3Z9asWXTu3JnbbruN2bNns3DhQnbt2sXHH38ccb0GDRrw5ZdfcsMNN/DEE0/kTc/Kyor4xaGk1JlUpKLavRv+9jffYTTS7bMrVfK16m3b+qT93//25TAiIuXUk08mZr/79rCDdOcAACAASURBVO3LSzK7devG9ddfz4YNG2jSpAnnn38+AF988QVLliyhS5cuABw8eJDOnTvzzTff0KxZM5o3bw74Ft/nn3/+mH1MnjyZV155BfA18TVr1mTHjh35lhk/fjzjx4+nXbt2AOzZs4fly5eTk5PDkCFDqF69OkChNwPq2LEje/bsYenSpXz99decf/75nHzyyQAsWrSIe++9l507d7Jnzx4uuuiiqJ+f8ePH89VXX/HOO+8APqlevnw5HTt25LrrruPQoUNceumlERP17Oxs6tWrV+w+qlSpwpCwARQmTZrEY489xv79+9m6dSsdOnRgwIABx6x32WWXAdChQ4d8Lej169dnQwwauZSoi1RUzz0HO3fC3XcXvsyZZ8KDD8Kvfw2jR0NwCVNERGInVKNe0AknnJD3u3OOvn378uabb+ZbZv78+ViMGlGcc9x999387Gc/yzf9ySefjHofV111FaNHj+brr7/OK3sBuPbaa3n//fc599xzGTVqFFOnTj1m3fT09Lxa/PD6bucc//d//xcxuZ82bRofffQR11xzDXfeeScjRozINz8jIyOqWvGMjIy8Y9y7dy+33HIL8+bNo1GjRtx7772FbqNq1aqA//KTm5ubN33//v1kZGQUu9/iqPRFpCLatw+eeAL69oWsrKKXve026NQJbr0VYtAxRkRESu78889n+vTprFixAvDJ5LJly2jRogWrVq3i22+/BTgmkQ/p3bs3zz77LOBrvnfv3k2NGjXIycnJW+aiiy7ipZdeyqt9X79+PZs3b6Z79+6MGTOGffv2kZOTwwcffFBonMOHD+e1115j8uTJ+Vrec3JyOOWUUzh06BCvv/56xHWbNm3K3LlzAfJaz0Nx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OiIRSRVK1CUljBsHxx8PTZoUOJGbC19+qbIXkaC0amXJunPQvXvc1qz36QOPP27t4P/yl6CjEZFUoZVdJOktXGglsE88UcjJH36A335T2YtIkA49FL74wrLhk06yRuZnnhl0VPu48UYb9B85Eg47DC65JOiIImDXLvuhvv8e5syBVatgzRqbt7N2rX18ULkyVKliW+3a0LYttG9vW4cOhSzzLCKRokRdkt4779i+yLIXsJE8EQlO27bw7bcwYID9ZR01ytqtxFEnJuesVePChXDVVVZmn3C/OrZvh//+Fz7+GL7+2kYxcnLsXJUqNtu+QQN783TSSbZSc04ObNtm+7VrrZbwhRd+f80OHayAv39/OOYYKKcP60UixXmt5FCoLl26+BkzZgQdhpRRbi60bGmd4PLmjO7l1FNh5cq4ncgmknJycuDSS+0d9hVXwLPPWg17HPnlF1s4belS+yCgS5egIyrBunXw3nvw4Yc2OLFlC1SoAMcea8F37gydOkGbNtY+syTe26j7Tz/Zp5Iffwz/+Y/9wq1fH845B66/XutSiITJOTfTe1/obxIl6kVQop4cJkywtmr/+lchn6T/8ouNHN1yCzzySCDxiUghdu+GoUNhxAhLJN94w0Z448iKFbYo0qZNlqPGXU7622+WnI8da8l5bq5N3u3Txxac6t7dOu5Eyq+/wiefWBH/++/Djh1WUvinP0HfvuG9ARBJUUrU94MS9UoQjh8AAB0sSURBVORwyimQkQHZ2fYJ7l5eesk+v54xw0aURCS+vPceXHmllV08/jgMHhxXpTCZmZasp6VZFckhhwQcUG6u9ad/5RUbpdixwz5OHDQIBg6Eww+PzX+/devs9+uzz8Ly5fYG4b77rGWOEnaRfRSXqKuQTJLWvHk2kHTttYUk6QBvv211MZ06xTw2EQnDmWdaT8QTToBrrrH69bVrg45qj1at4N//tkqSnj2tGiQQWVlwzz3QrJmNmH/+uf3i++47ezfx4INwxBGxe5NTrx7cfTcsWmT17AceCJddZm8U3n3XSmdEJCxK1CVpjRkDlSrZgNw+1q61f8wGDYqrEToRKaBxYyupeOIJy4rbtrWR2l27go4MsPz3o49sqsupp8L69TF68Nat8Npr0K2bvWN4+GE48khLjFeuhCefhKOPDvb3W1qaTQz+7jurP3TO6tePPtra4opI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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"Title = 'Distribution Plot of Predicted Value Using Training Data vs Training Data Distribution'\n",
"DistributionPlot(y_train, yhat_train, \"Actual Values (Train)\", \"Predicted Values (Train)\", Title)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Figure 1: Plot of predicted values using the training data compared to the training data. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So far the model seems to be doing well in learning from the training dataset. But what happens when the model encounters new data from the testing dataset? When the model generates new values from the test data, we see the distribution of the predicted values is much different from the actual target values. "
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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7ExgWDBSzK+ACUAm/iBSHUgqIiIikoR69OhBjx49qr5jDR111FFxa7u64jnqC865N/FhPHzao2F/O+A3sc4bTF8HnFjJPF0qmT6DPYdsFBERERGpt3RmUhERERGRekhBXURERESkHlJQF5Gae/ZZuPFG+PHHRFciIiKSchTURaT6nIO774af/xzuuw/69IH33090VSIiKSEjI4Pc3Fx69+7NueeeW3aCo5qYOnUqp512GgCvvfYaY8eOrfS+69ev55FHHqn2Mm6//fY9RkmZOnUqgwYNKjetpKSE9u3bRx2xJVJbte2cc85hyZIlHHXUUeTm5nLwwQfTrl07cnNzyc3NpaCgoFrtvfLKKyxYsKDs/2uvvTamsd5joaAuItVTWgpXXQW33gpjxsC0aZCZCSedBL/+NWzalOgKRUSSWmZmJnl5ecydO5fGjRvz6KOPlrvdOceuXbuq3e7pp5/OzTffXOntNQ3qkQwdOpSioqJyofe9996jd+/edOjQoVaWURPz5s2jtLSUQw45hM8//5y8vDzuvPNOzjvvPPLy8sjLy6NLly7VarNiUP/tb38b8WRNNaGgLiKx27YNzjsPHnnEd3mZMAGGDIGvvoLf/Q4efRQOPxw2b050pSIie+3aa+G442r3cu211athyJAhLF68mIKCAnr27Mmvf/1r+vfvT2FhIVOmTGHQoEH079+fc889l03BjpK3336b7OxsjjnmGF555ZWytiZMmMBVV10FwHfffcdZZ51FTk4OOTk5fPrpp9x88818++235ObmcsMNNwBw3333ccQRR9C3b19uu+22srb+9Kc/0aNHD0466SQWLly4R90NGjTg3HPP5YUXXiibNnHiREaPHg3A448/zhFHHEFOTg6jRo2K+KvBcccdR+jkk2vXri0L0KWlpdxwww1ldf3jH/8AYOXKlQwdOrTs14iPP/54jzafffZZzjjjjCq3+1tvvVW2bc877zw2B59rN9xwA7169aJv377cdNNNfPzxx7z55ptcd911ZXvju3XrxsqVK1mzZk2Vy6mKgrqIxG7MGHj5ZXjgAfjf/wUzPz0zE/76V3j9dVi0CJ54IrF1ioikgJKSEt566y369OkDwMKFCxkzZgxfffUVzZs35+677+a9995j1qxZDBgwgPvvv59t27bxy1/+ktdff52PP/6YVatWRWz76quv5thjj2X27NnMmjWLww47jLFjx9KtWzfy8vK47777mDJlCvn5+XzxxRfk5eUxc+ZMpk2bxsyZM5k4cSJfffUVr7zyCl9++WXEZYwePZqJEycCsH37dt58801GjRoFwNlnn82XX37J7Nmz6dmzJ09U43PjiSeeoFWrVnz55Zd8+eWXPP744yxdupTnnnuO4cOHk5eXx+zZs8nNzd1j3unTp3P44YdHbX/16tWMHTuW999/n1mzZtG3b18eeughvvvuO958803mzZvHnDlzuOWWWxgyZAinnnoqDzzwQLm98f369ePTTz+NeZ0qE9dx1EUkhfHpBSYAACAASURBVCxdCpMmwe9/X/kuoZEj4ZhjfGj/1a+gUaO6rVFEpBY9+GBilrt169aykDlkyBAuu+wyVqxYQefOnRk4cCAAn332Gd988w1HH300ADt27GDQoEEsWLCArl270r17dwB+/vOf89hjj+2xjA8++ICnnnoK8H3iW7VqxQ8//FDuPlOmTGHKlCn069cPgE2bNpGfn8/GjRs566yzaNasGeC71ERyxBFHsGnTJhYuXMj8+fMZOHAgbdq0AWDu3Ln84Q9/YP369WzatInhw4fHvH2mTJnCnDlzmDRpEgAbNmwgPz+fI444gksvvZSdO3dy5plnRgzqK1eupF27dlHb//TTT/nmm28YPHgw4LftMcccw7777kuDBg345S9/yciRI8v6/key//77s2LFipjXqTIK6iISmyee8HvQr7wy+v1uvhlOOw0mToQLL6yb2kREUkioj3pFzZs3L/vbOcfJJ5/M888/X+4+eXl5WOjXzr3knOOWW27hiiuuKDf9wQcfjHkZ559/PhMnTmT+/Pll3V4ALr74Yl599VVycnKYMGECU6dO3WPehg0blvXF37ZtW7m6/v73v0cM99OmTeM///kPF154ITfccANjxowpd3tmZma5tiJxzjFixAiefvrpPW6bMWMG7777LhMnTmTcuHFMmTIlYhvbtm0jMzMz6nJioa4vIlK1khIYPx5OOQUOOij6fU89FXr39l1janCwk4iIVG3gwIFMnz6dxYsXA7BlyxYWLVpEdnY2S5cu5dtvvwXYI8iHnHjiiYwbNw7wfb5//PFHWrZsycaNG8vuM3z4cMaPH1/W9724uJjVq1czdOhQJk+ezNatW9m4cSOvv/56pXWOHj2aZ555hg8++KDcnveNGzfSoUMHdu7cybPPPhtx3i5dujBz5kyAsr3nobrGjRvHzp07AVi0aBGbN29m2bJl7L///vzyl7/ksssuY9asWXu02bNnz7JtVpnBgwfz0UcfsWTJEgA2b95c9kvCjz/+yGmnncYDDzzAV199BbDHdgvV1Lt376jLiYWCuohU7T//gZUr4fLLq76vGdx0E8yb5+cTEZFa165dOyZMmMDo0aPp27cvAwcOZMGCBTRt2pTHHnuMkSNHcswxx9C5c+eI8z/00EN8+OGH9OnTh8MPP5x58+bRtm1bjj76aHr37s0NN9zAsGHD+NnPfsagQYPo06cP55xzDhs3biw7wDI3N5dRo0YxZMiQSuvs1asXzZo144QTTij3i8Bdd93FUUcdxcknn0x2dnbEea+//nrGjRvH4MGDWbt2bdn0X/ziF/Tq1Yv+/fvTu3dvrrjiCkpKSpg6dSq5ubn069ePl19+mWuuuWaPNkeOHBlx73249u3b88QTT3DeeeeRk5PD4MGDWbRoERs2bGDkyJHk5ORwwgkncP/99wP+y8if//znsoNJt2/fTkFBQVmXob1hzrm9biQVDRgwwIWONBZJeyNHQl4eLFsGDWPoMbdzJ3TvDh07wvTpuw86FRGp5+bPn0/Pnj0TXYbEydatWzn++OOZPn06GRkZcVnGSy+9xDfffFNulJyQSM8vM5vpnBsQqS3tUReR6JYvh7fegksvjS2kgz+I9Prr4b//hU8+iW99IiIiMcrMzOSOO+6guLg4bstwznHdddfVSlsK6iISXWjIrMsuq958l14K++3n+6qLiCQR9TZIbcOHD+fggw+OW/s//elP2WefffaYXpPnlYK6iFQudBDp8OFQzTO10awZXH2176cedsY2EZH6rGnTpqxbt05hXWqVc45169bRtGnTas2n4RlFpHJvvw1FRfC3v9Vs/ksvhT/+EV57DSo5WEhEpD7p1KkTRUVFtXJWSZFwTZs2pVOnTtWaRweTVkIHk4oAp58OX3wBhYU1P3lRbi60bg1VHGUvIiKSjnQwqYhU36ZN/iDSCy/cuzOMnnqqP6B0/fraq01ERCQNKKiLSGT//a/vo37SSXvXzsiRUFoK775bO3WJiIikCQV1EYnso48gIwMGD967do46Ctq00cmPREREqklBXUQimzYN+veHli33rp2GDf2oMW+9Bbt2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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"Title='Distribution Plot of Predicted Value Using Test Data vs Data Distribution of Test Data'\n",
"DistributionPlot(y_test,yhat_test,\"Actual Values (Test)\",\"Predicted Values (Test)\",Title)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Figur 2: Plot of predicted value using the test data compared to the test data. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing Figure 1 and Figure 2; it is evident the distribution of the test data in Figure 1 is much better at fitting the data. This difference in Figure 2 is apparent where the ranges are from 5000 to 15 000. This is where the distribution shape is exceptionally different. Let's see if polynomial regression also exhibits a drop in the prediction accuracy when analysing the test dataset.</p>"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.preprocessing import PolynomialFeatures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Overfitting</h4>\n",
"<p>Overfitting occurs when the model fits the noise, not the underlying process. Therefore when testing your model using the test-set, your model does not perform as well as it is modelling noise, not the underlying process that generated the relationship. Let's create a degree 5 polynomial model.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's use 55 percent of the data for testing and the rest for training:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.45, random_state=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will perform a degree 5 polynomial transformation on the feature <b>'horse power'</b>. "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=5, include_bias=True, interaction_only=False)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr = PolynomialFeatures(degree=5)\n",
"x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
"x_test_pr = pr.fit_transform(x_test[['horsepower']])\n",
"pr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's create a linear regression model \"poly\" and train it."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"poly = LinearRegression()\n",
"poly.fit(x_train_pr, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see the output of our model using the method \"predict.\" then assign the values to \"yhat\"."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6728.73877623, 7308.06173582, 12213.81078747, 18893.1290908 ,\n",
" 19995.81407813])"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat = poly.predict(x_test_pr)\n",
"yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's take the first five predicted values and compare it to the actual targets. "
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Predicted values: [ 6728.73877623 7308.06173582 12213.81078747 18893.1290908 ]\n",
"True values: [ 6295. 10698. 13860. 13499.]\n"
]
}
],
"source": [
"print(\"Predicted values:\", yhat[0:4])\n",
"print(\"True values:\", y_test[0:4].values)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will use the function \"PollyPlot\" that we defined at the beginning of the lab to display the training data, testing data, and the predicted function."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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oV/+8pf68Y9/rBUrVqh///66+eabKz32z3/+c1122WVavHixiouLdezYMc2dO1fr169XRkaGJGnZsmXKysrS6tWrZa3VlClT9PHHH6tdu3Z67bXX9NVXX6moqEjx8fEaNWpUpa/z5JNP6q9//ask6dFHH9XEiROrfc+bN2/WBx98oKNHj2rgwIGaNWuWvv76ayUnJ+uzzz5Tly5ddPDgQXXq1ElTpkzRddddp6lTp5Y7xokTJ3TnnXcqNTVVF1xwgaZPn65nn31W999/vySpS5cu+vLLLzV//nw9/vjjev7552v091EdRtIBAABauOPHjysuLk4ej0dRUVGaMWOGJCk6OlpjxoyRJK1atUobN27UuHHjFBcXpwULFignJ0ebN29Wnz59NGDAABljdNttt1X6GitWrNCsWbMk+efAR0ZGnrHNsmXLtGzZMo0cOVLx8fHavHmzsrKy9Mknn+jGG29URESEOnTooClTplT5XspOdzlbQJeka6+9Vm3btlWXLl3UrVs37dmzRytWrNDUqVPVpUsXSVKnTp2qPcaWLVvUp08fXXDBBZKkO+64Qx9//PHp52+66SZJ0qhRo5SdnX3WnmqCkXQAAIAmUtMR74ZWOie9onbt2p2+b63VVVddpVdffbXcNhkZGTLGNEgf1lo99NBD+slPflKuPm/evHq9RkhIyOk59SdOnCj3XNu2bU/fDw4OVlFRkay1tXo9a221z5e+RunxGwIj6QAAANCYMWP02WefaevWrZKkgoICff311xo0aJC++eYbbdu2TZLOCPGlEhIS9Oyzz0qSiouLdeTIEbVv315Hjx49vc3EiRP14osvnp7r/u2332rv3r269NJLtXjxYh0/flxHjx7V0qVLa9V7TEyM0tPTJUlvvvnmWbdPSEjQokWLdODAAUnSwYMHJemMfksNGjRI2dnZp/9sXnnlFV122WW16rG2COkAAABQ165d9fLLL+vWW2/V8OHDNWbMGG3evFlhYWFKSUnRtddeq/Hjxys6OrrS/Z966il98MEHio2N1ahRo7RhwwZ17txZ48aN07Bhw/Tggw/q6quv1g9/+EONHTtWsbGxmjp1qo4ePar4+HjdfPPNiouL0/e//31dcskltep9zpw5uu+++3TJJZcoODj4rNsPHTpUSUlJuuyyyzRixAj94he/kCTdcssteuyxxzRy5MjTH0okKSwsTC+99JKmTZum2NhYBQUFaebMmbXqsbbM2YbvWxuPx2PT0tKcbgMAALQQmzZt0uDBg51uAw6r7PfAGJNurfVUtj0j6QAAAIDLENIBAAAAlyGkAwAANDKmF7dudfn7J6QDAAA0orCwMB04cICg3kpZa3XgwAGFhYXVaj/WSQcAAGhEvXv3Vl5envbt2+d0K3BIWFiYevfuXat9COkAAACNKDQ0VH369HG6DTQzTHcBAAAAXIaQDgAAALgMIR0AAABwGUI6AAAA4DKEdAAAAMBlCOkAAACAyxDSAQAAAJchpAMAAAAuQ0gHAAAAXIaQDgAAALgMIR0AAABwGUI6AAAA4DKEdAAAAMBlCOkAAACAyxDSAQAAAJchpAMAAAAuQ0gHAAAAXIaQDgAAALgMIR0AAABwGUI6AAAA4DKOhnRjTLYxJtMYk2GMSQvUOhljlhtjsgK355bZ/iFjzFZjzBZjzMQy9VGB42w1xjxtjDGBeltjzOuB+hfGmJimfo8AAABAbblhJP0Ka22ctdYTeDxbUqq1doCk1MBjGWOGSLpF0lBJkyTNN8YEB/Z5VpJX0oDAz6RAfYakQ9ba/pKelPRoE7wfAAAAoF7cENIrul7SgsD9BZJuKFN/zVp70lr7jaStkkYbY3pI6mCt/dxaayUtrLBP6bHekJRQOsoOAAAAuJXTId1KWmaMSTfGeAO186y1uyQpcNstUO8laUeZffMCtV6B+xXr5fax1hZJypfUuWITxhivMSbNGJO2b9++BnljAAAAQF2FOPz646y1O40x3SQtN8ZsrmbbykbAbTX16vYpX7A2RVKKJHk8njOeBwAAAJqSoyPp1tqdgdu9khZLGi1pT2AKiwK3ewOb50k6v8zuvSXtDNR7V1Ivt48xJkRSpKSDjfFeAAAAgIbiWEg3xrQzxrQvvS/paknrJS2RdEdgszskvR24v0TSLYEVW/rIf4Lo6sCUmKPGmDGB+ebTK+xTeqypklYE5q0DAAAAruXkdJfzJC0OnMcZIulv1tp3jTFrJC0yxsyQlCtpmiRZazcYYxZJ2iipSNK91triwLFmSXpZUrikdwI/kvSCpFeMMVvlH0G/pSneGAAAAFAfhoHl8jwej01LS3O6DQAAALRwxpj0MsuQl+P06i4AAAAAKiCkAwAAAC5DSAcAAABchpAOAAAAuAwhHQAAAHAZQjoAAADgMoR0AAAAwGUI6QAAAIDLENIBAAAAlyGkAwAAAC5DSAcAAABchpAOAAAAuAwhHQAAAHAZQjoAAADgMoR0AAAAwGUI6QAAAIDLENIBAAAAlyGkAwAAAC5DSAcAAABchpAOAAAAuAwhHQAAAHAZQjoAAADgMoR0AAAAwGUI6QAAAIDLENIBAAAAlyGkAwAAAC5DSAcAAABchpAOAIAL+DJ9ipkXo6CHgxQzL0a+TJ/TLQFwUIjTDQAA0Nr5Mn3yLvWqoLBAkpSTnyPvUq8kKTE20cnWADiEkXQAAByWlJp0OqCXKigsUFJqkkMdAXAaIR0AAIfl5ufWqg6g5SOkAwDgsKjIqFrVAbR8hHQAAByWnJCsiNCIcrWI0AglJyQ71BEApxHSAQBwWGJsolImpyg6MlpGRtGR0UqZnMJJo0ArZqy1TvfgKh6Px6alpTndBgAAAFo4Y0y6tdZT2XOMpAMAAAAuQ0gHAAAAXIaQDgAAALgMIR0AAABwGUI6AAAA4DKEdAAAAMBlCOkAAACAyxDSAQAAAJchpAMAAAAuQ0gHAAAAXIaQDgAAALgMIR0AAABwGUI6AAAA4DKEdAAAAMBlCOkAAACAyxDSAQAAAJchpAMAAAAuQ0gHAAAAXIaQDgAAALgMIR0AAABwGUI6AAAA4DKEdAAAAMBlCOkAAACAyxDSAQBoSj6fFBMjBQX5b30+pzsC4EIhTjcAAECr4fNJXq9UUOB/nJPjfyxJiYnO9QXAdRhJBwCgqSQl/Tuglyoo8NcBoAxCOgAATSU3t+o602AAlEFIBwCgqURFVV7v1Mk/7SUnR7L239NgCOpAq0VIBwCgqSQnSxER5Wulj5kGA6AMQjoAAE0lMVFKSZGioyVj/LcpKdLBg5VvX9X0GAAtHiEdAICmlJgoZWdLJSX+28TEqqfBVFUH0OIR0gEAcFpV02CSk53pB4DjCOkAADitqmkwrJ0OtFpczAgAADdITCSUAzjN8ZF0Y0ywMeYrY8z/BR53MsYsN8ZkBW7PLbPtQ8aYrcaYLcaYiWXqo4wxmYHnnjbGmEC9rTHm9UD9C2NMTFO/PwAAAKC2HA/pku6TtKnM49mSUq21AySlBh7LGDNE0i2ShkqaJGm+MSY4sM+zkrySBgR+JgXqMyQdstb2l/SkpEcb960AAAAA9edoSDfG9JZ0raTny5Svl7QgcH+BpBvK1F+z1p601n4jaauk0caYHpI6WGs/t9ZaSQsr7FN6rDckJZSOsgMAAABu5fRI+jxJv5RUUqZ2nrV2lyQFbrsF6r0k7SizXV6g1itwv2K93D7W2iJJ+ZI6V2zCGOM1xqQZY9L27dtX3/cEAAAA1ItjId0Yc52kvdba9JruUknNVlOvbp/yBWtTrLUea62na9euNWwHAAAAaBxOru4yTtIUY8z3JIVJ6mCM+aukPcaYHtbaXYGpLHsD2+dJOr/M/r0l7QzUe1dSL7tPnjEmRFKkpCou6wYAAAC4g2Mj6dbah6y1va21MfKfELrCWnubpCWS7ghsdoektwP3l0i6JbBiSx/5TxBdHZgSc9QYMyYw33x6hX1KjzU18BpnjKQDAAAAbuLGddLnSlpkjJkhKVfSNEmy1m4wxiyStFFSkaR7rbXFgX1mSXpZUrikdwI/kvSCpFeMMVvlH0G/paneBAAAAFBXhoHl8jwej01LS3O6DQAAALRwxph0a62nsuecXt0FAAAAQAWEdAAAAMBlCOkAAACAyxDSAQAAAJchpAMAAAAuQ0gHAAAAXIaQDgAAALgMIR0AAABwGUI6AAAA4DKEdAAAAMBlCOkAAACAyxDSAQAAAJchpAMAAAAuQ0gHAAAAXIaQDgAAXMGX6VPMvBgFPRykmHkx8mX6nG4JcAwhHQCAJkQQrZwv0yfvUq9y8nNkZZWTnyPvUi9/Pmi1COkAADQRgmjVklKTVFBYUK5WUFigpNQkhzoCnEVIBwCgiRBEq5abn1urOtDSEdIBAGgiBNGqRUVG1aoOtHSEdAAAmghBtGrJCcmKCI0oV4sIjVByQrJDHQHOIqQDANBECKJVS4xNVMrkFEVHRsvIKDoyWimTU5QYm+h0a4AjjLXW6R5cxePx2LS0NKfbAAC0UL5Mn5JSk5Sbn6uoyCglJyQTRIFWyhiTbq31VPocIb08QjoAAEDr4PSH5upCekiTdQEAAAC4ROmSqKUrLpUuiSrJFd9uMScdAAAArY7bl0QlpAMAUENcLRRoOdy+JCohHQCAGuBqoUDL4vYlUQnpAADUgNu/GgdQO25fEpWQDgBADbj9q3EAteP2tfkJ6QCAuvP5pJgYKSjIf+truVM/3P7VOIDaS4xNVPb92SqZU6Ls+7NdE9AlQjoAoK58PsnrlXJyJGv9t15viw3qbv9qHEDLQkgHANRNUpJUUH6OtgoK/PUWyO1fjQNoWbjiaAVccRQAaigoyD+CXpExUklJ0/cDAM1MdVccZSQdAFA3UVXMxa6qDgCoMUI6AKBukpOliPJztBUR4a8DAOqFkA4AqJvERCklRYqO9k9xiY72P05kjjYA1BchHQAAAHAZQjoAoG5a2RKMaHy+TJ9i5sUo6OEgxcyLkS+T3yW0XoR0AEDdtLIlGNG4fJk+eZd6lZOfIyurnPwceZd6CepotQjpAIC6yc2tXR2oRlJqkgoKy3/oKygsUFIqH/rQOhHSAQB1wxKMaEC5+ZV/uKuqDrR0hHQAQN2wBCMaUFRk5R/uqqoDLR0hHQBQNyzBiAaUnJCsiNDyH/oiQiOUnMCHPrROIU43AABoxhITCeVoEImx/t+jpNQk5ebnKioySskJyafrQGtjrLVO9+AqHo/HpqWlOd0GAAAAWjhjTLq11lPZc0x3AQAAAFyGkA4AAAC4DCEdAAAAcBlCOgAAAOAyhHQAAOAKvkyfYubFKOjhIMXMi5Ev0+d0S4BjWIIRAAA4zpfpk3epVwWFBZKknPwceZd6JYllGNEqMZIOAEANMdLbeJJSk04H9FIFhQVKSk1yqCPAWYykAwBQA4z0Nq7c/Nxa1YGWjpF0AABqgJHexhUVGVWrOtDSEdIBAKgBRnobV3JCsiJCI8rVIkIjlJyQ7FBHgLMI6QAA1AAjvY0rMTZRKZNTFB0ZLSOj6MhopUxOYSoRWi1COoCWx+eTYmKkoCD/rY+T+1B/jPQ2vsTYRGXfn62SOSXKvj+bgI5WjZAOoGXx+SSvV8rJkaz133q9BHXUGyO9AJqSsdY63YOreDwem5aW5nQbAOoqJsYfzCuKjpays5u6GwAAqmSMSbfWeip7jpF0AC1LbhUn8VVVBwDAhQjpAFqWqCpO4quqDgCACxHSAbQsyclSRPmT+xQR4a8DANBMENIBtCyJiVJKin8OujH+25QUfx1wAV+mTzHzYhT0cJBi5sXIl8lJzQDOFOJ0AwDQ4BITCeVwJV+mT96l3tNXLs3Jz5F3qVeSWCUGQDmMpAMA0ESSUpNOB/RSBYUFSkpNcqgjAG5FSAcAoInk5le+ylBVdQCtFyEdAIAmEhVZ+SpDVdUBtF6EdAAAmkhyQrIiQsuvPhQRGqHkBFYfAlCeYyHdGBNmjFltjFlrjNlgjHk4UO9kjFlujMkK3J5bZp+HjDFbjTFbjDETy9RHGWMyA889bYwxgXpbY8zrgfoXxpiYpn6fAACUSoxNVMrkFEVHRsvIKDoyWimTUzhpFMAZjLXWmRf2B+l21tpjxphQSZ9Kuk/STZIOWmvnGmNmSzrXWvsrY8wQSa9KGi2pp6T3JV1grS02xqwO7LtK0r8kPW2tfccYc4+k4dbamcaYWyTdaK29ubq+PB6PTUtLa6R3DQAAAPgZY9KttZ7KnnNsJN36HQs8DA38WEnXS1oQqC+QdEPg/vWSXrPWnrTWfiNpq6TRxpgekjpYaz+3/k8cCyvsU8R2aXYAACAASURBVHqsNyQllI6yAwAAAG7l6Jx0Y0ywMSZD0l5Jy621X0g6z1q7S5ICt90Cm/eStKPM7nmBWq/A/Yr1cvtYa4sk5UvqXEkfXmNMmjEmbd++fQ319gAAAIA6cTSkW2uLrbVxknrLPyo+rJrNKxsBt9XUq9unYh8p1lqPtdbTtWvXs7UNAAAANCpXrO5irT0s6UNJkyTtCUxhUeB2b2CzPEnnl9mtt6SdgXrvSurl9jHGhEiKlHSwUd4EAAAA0ECcXN2lqzGmY+B+uKQJkjZLWiLpjsBmd0h6O3B/iaRbAiu29JE0QNLqwJSYo8aYMYH55tMr7FN6rKmSVlinzpQFAAAAaijEwdfuIWmBMSZY/g8Li6y1/2eM+VzSImPMDEm5kqZJkrV2gzFmkaSNkook3WutLQ4ca5aklyWFS3on8CNJL0h6xRizVf4R9Fua5J0BAAAA9eDYEoxuxRKMAAAAaArVLcHo5Eg6AACog+ISq8MFp3Twu1M6cqJQklFwkFHndm3UtX1bhYUGO90igHoipAMA4GLWWm3b950+27pfGTsOa/Puo9q295hOFZdUuU/PyDAN6Rmp+OiOumJgNw3q3l5cJgRoXgjpAAC4jLVWX+Ye0tsZO7Vswx7tPnJCktS9Q5gG9WivSwd0Uc+O4erUro06hIdKkoqKS3Tgu1Pae+SEvt5zTBt25uv9TXv0+3e3qFfHcE0d1Vs3X3i+enYMd/KtAaghQjoAAC5x8LtTenV1rl5dnau8Q8fVNiRIVwzspssGdtW4fl0U1TmiVsfbe+SEPtiyV/+3bpeeXpGlZ1Zk6fq4XrovYYBiurRrpHcBoCFw4mgFnDgKAGhq2/cd058/2q5/ZHyrk0UlurhfZ00d1VtXD+2uc9o2zHjajoMFWvh5tl5ZlaPCYqtbR5+vBycOUmRgJB5A06vuxFFCegWEdKD58z17j5K2pyi3XbGivgtWcl+vEmfNd7ot4Aw7Dhbo6dQsvfllntqEBOnGkb1117gYXXBe+0Z7zb1HT+hPK7bqlVU56nxOWz0yZaiuie3RaK8HoGqE9FogpAPNm+/Ze+T99lkVlBkcjCiUUnrNIqjDNQ4XnNKTy7/W31bnyhij28dEa9bl/dTlnLZN1kNmXr5mv7VOG3YeUeJFUfp/1w1hVRigiRHSa4GQDjRvMQ+GKOec4jPq0ceClf1YkQMdAf9WXGL1+podeuy9zco/XqhbR0fpZ1cOUPfIMEf6KSwu0ePvbdGfP96uoT076C/TPZxYCjQh1kkH0GrktjszoFdXB5rK+m/z9dBbmcr8Nl+j+3TSw1OGanCPDo72FBocpIe+N1gXxnTSA69n6Mb5n+nlu0Y73hcAKcjpBgCgIUV9V/nX9VXVgcZ2sqhYf1i2Rdf/6TPtPnJCT986Uq97x7gqCE8Ycp7+PmusjIx+8NznWrX9gNMtAa0eIR1Ai5Lc16uIwvK1iEJ/HWhqmXn5mvLMZ3pmxVZdH9dT7z9wmaaM6OnKCwsN6t5Bi++9WOdFhunul9do9TcHnW4JaNUI6QBalMRZ85XSa5aijwXLWP9cdE4aRVMrKbF67qNtunH+Zzp8/JRevNOjJ34Qp8gIdy932CMyXH/78UXqHhmmu15arfQcgjrgFE4crYATRwEA9bHv6En9YlGGPsnar2uGddfcm4a7PpxXtOfICd2SskoHvzult+65WP26nuN0S0CLVN2Jo4ykAwDQQD7J2qdrnvpEq785qOQbh2l+YnyzC+iSdF6HMC28e7RCgozuemmNDhw76XRLQKtDSAcAoJ5KSqyeTs3S9BdXq2NEqN7+6TglXhTtyrnnNXV+pwj95Q6P9hw5Ie8r6TpVVOJ0S0CrQkgHAKAejp4o1My/puuJ5V/rhrheWvrT8RrU3T0rt9RHfNS5+sMPRig955D+51+bnG4HaFVYJx0AgDratu+YvAvTlH2gQL+5bojuGhfTrEfPK3Pd8J76MuewXvzsG10Y00nXDu/hdEtAq0BIBwCgDlI37dH9r2UoNCRIr8wYrYv7dXG6pUYz+5pB+mrHIf3qzXUa2rODYrq0c7oloMVjugsAALVgrdVfPt6uHy1MU3SXCC356bgWHdAlqU1IkP70w3gFGek//r5WxSWsDAc0NkI6AAA1VFRcol//Y72S/7VJ1wzrrjdmXqze50Y43VaT6NkxXI9cP0zpOYf0/CfbnW4HaPEI6QAA1MDRE4WasSBNvi9yNfOyfvrjrfEKCw12uq0mdX1cT10zrLv+sOxrbdl91Ol2gBaNkA4AwFnsPHxc0577XJ9u3a//vSlWs68ZpKCglnWCaE0YY/S7G4apfViIZr+1TiVMewEaDSEdAIBqrP82Xzf86TN9e+i4Xr7rQt06OsrplhzV+Zy2Srp2sL7KPazX1uxwuh2gxapVSDfGcDo3AKDVWLX9gG7+8+cKDQ7SG7Mu1iUDujrdkivcOLKXxvTtpEff3az9XI0UaBQ1CunGmIuNMRslbQo8HmGMmd+onQEA4KAPNu/VHS+uVo+O4Xpz1sUa2L290y25Rum0l4JTRZr7zman2wFapJqOpD8paaKkA5JkrV0r6dLGagoAACf9c90u/Xhhmvp3O0eve8eoe2SY0y25Tv9u7TVjfF+9kZ6nzLx8p9sBWpwaT3ex1laceFbcwL0AQMPw+aSYGCkoyH/r8zndEZqRRWt26GevfqmRUR31qneMOp/T1umWXOveK/qpc7s2Sv7XRlnLSaRAQ6ppSN9hjLlYkjXGtDHG/KcCU18AwFV8PsnrlXJyJGv9t14vQR018sKn3+iXb67TuP5dtPDui9QhLNTpllytfVio7pswQKu2H1Tqpr1OtwO0KDUN6TMl3Supl6Q8SXGBxwDgLklJUkFB+VpBgb8OVMFaq6dTs/Tb/9uoSUO76/k7PApv07rWQK+rW0dHqW+XdvqfdzapsLjE6XaAFqNGId1au99am2itPc9a281ae5u19kBjNwcAtZabW7s6Wj1rrf73nc16YvnXuim+l/74w5FqG0JAr6nQ4CD96ppB2r7vOy3+6lun2wFajJqu7rLAGNOxzONzjTEvNl5bAFBHUVWsYV1VHa1acYnVfy1er5SPt2v62Gg9PnWEQoK5hEhtXT3kPA3r1UF/XLGV0XSggdT0/0TDrbWHSx9Yaw9JGtk4LQFAPSQnSxER5WsREf46UEZhcYnufz1Dr67O1b1X9NPDU4a2yquINgRjjO5PuEC5Bwu0+EtG04GGUNOQHmSMObf0gTGmk6SQxmkJAOohMVFKSZGioyVj/LcpKf46EHCisFiz/pqupWt36leTBunBiYNkDAG9PhIGd1Nsr0g980EWo+lAA6hpSP+DpJXGmN8aY34raaWk3zdeWwBQQ5Utt5iYKGVnSyUl/lsCOsr47mSR7n55jVI379VvbximWZf3c7qlFsEYo/snDNCOg8f11pd5TrcDNHs1PXF0oaTvS9ojaa+km6y1rzRmYwBwViy3iFo6XHBKic9/oS++OagnfjBCt4+JdrqlFuXKQd00vHeknv1wm4pLWDcdqI9qQ7oxpkPgtpOk3ZL+JsknaXegBgDOYblF1MK+oyd1S8oqbdx5RPMT43XjyN5Ot9TiGGP0k0v7KftAgZZv3ON0O0CzdrZ55X+TdJ2kdEllPxKbwOO+jdQXAJwdyy2ihr49fFy3Pf+Fduef0At3enTJgK5Ot9RiTRx6ns7vFK6/fLJdk4Z1d7odoNmqdiTdWnud8Z9Jc5m1tm+Znz7WWgI6AGex3CJq4Jv932nasyu1/9hJvTJjNAG9kYUEB+lH4/sqPeeQ0nMOOt0O0GyddU66tdZKWtwEvQBA7bDcIs5i064jmvbc5zpRVKJXfzxGnhhmajaFaZ7eigwPVcrH251uBWi2arq6yypjzIWN2gkA1FYLXm7Rl+lTzLwYBT0cpJh5MfJlcjJsbX2Ve0g3//lzhQQZLfrJWA3rFel0S61GRJsQ3T4mWss27tE3+79zuh2gWappSL9C/qC+zRizzhiTaYxZ15iNAUCNtMDlFn2ZPnmXepWTnyMrq5z8HHmXegnqtbBy234lPv+FOka00d9njlX/buc43VKrM/3iaAUbo7+uynG6FaBZqmlIv0b+k0SvlDRZ/pNJJzdWUwDQmiWlJqmgsPyqNQWFBUpKZdWamkjdtEd3vrRGvc8N199njtX5nSLOvhMaXLf2YZo0rLveSM/T8VPFTrcDNDtnW4IxzBhzv6QHJU2S9K21Nqf0p0k6BIBWJje/8tVpqqrj35as3amfvJKuQd3b63XvWJ3XIczpllq128dEK/94oZau2+l0K0Czc7aR9AWSPJIy5R9N/0OjdwQArVxUZOWr01RVh9+rq3N132tfKT76XPl+dJHObdfG6ZZavdF9OumC885hygtQB2cL6UOstbdZa/8saaqkS5qgJwBo1ZITkhURWn6KRkRohJITWLWmKs9/sl0PvZWpSwd01YK7Rqt9WKjTLUH+ixvdNiZa6/LytXbHYafbAZqVs4X0wtI71tqiRu4FACApMTZRKZNTFB0ZLSOj6MhopUxOUWJs8z8ptqFZa/Xk8q/1u39u0rWxPfSX6R6Ftwl2ui2UcePIXopoE6xXGE0HasX4l0Gv4kljiiWVrp1kJIVLKgjct9baDo3eYRPzeDw2LS3N6TYAAGdhrdVv/2+TXvzsG00b1Vtzvz9cwUHG6bZQiYfeytTir/K0JmkC33IAZRhj0q21nsqeO9sVR4OttR0CP+2ttSFl7re4gA4AaB6KS6xmv5mpFz/7RndeHKNHCeiuNs3TWycKS/SvzF1OtwI0GzVdghEAGobPJ8XESEFB/lsfa3+jdk4Vlejnr32l19N26OdX9tecyUMUREB3tZHnd1S/ru3097Q8p1sBmg1COoCm4/NJXq+UkyNZ67/1egnqqLHjp4rlfSVN/1y3Sw9dM0i/uHqgjCGgu50xRtM85yst55C27zvmdDtAs0BIB3CmxhrtTkqSCspfpEcFBf46cBZHThRq+otf6KOv9+l/b4rVTy7r53RLqIUbR/ZSkJHe/JLRdKAmCOkAymvM0e7cKi7GU1UdCNh/7KRuTVmljB2H9cytI3XraNaMb27O6xCmyy7oqjfTv1VxSdWLVgDwI6QDKK8xR7ujqghWVdUBSd8ePq4fPPe5tu07pr9M9+i64T2dbgl1NHXU+dp95IQ+27rf6VYA1yOkAyivMUe7k5OliPIX6VFEhL+OWvFl+hQzL0ZBDwcpZl6MfJktc17/tn3HNO3Zldp37KRemXGRLh/YzemWUA8ThnRT+7AQvZ2x0+lWANcjpAMorzFHuxMTpZQUKTpaMsZ/m5Lir6PGfJk+eZd6lZOfIyurnPwceZd6W1xQX/9tvn7w3Oc6VVyi17xjdGFMJ6dbQj21DQnWpKHdtWzDbp0oLHa6HcDVCOkAymvs0e7ERCk7Wyop8d8S0GstKTVJBYXlpyQVFBYoKbXlnIC7+puDujVllcJCg7XoJ2M1tGek0y2hgUyJ66mjJ4v04Za9TrcCuBohHUB5jHa7Xm5+5VOPqqo3Nx9s3qvbX/hC3Tq01d9njlXfruc43RIa0Ni+ndXlnDZaupYLGwHVIaQDOBOj3fXS2PPFoyIrn3pUVb05WZS2Qz9amKYB552jRT8Zq54dw51uCQ0sJDhI34vtofc37dGxk0VOtwO4FiEdABpQU8wXT05IVkRo+SlJEaERSk5ovifgWmv1xxVZ+uUb63Rxv856zTtWnc9p63RbaCRTRvTUyaISLd+42+lWANcipANAA2qK+eKJsYlKmZyi6MhoGRlFR0YrZXKKEmOb5zcexSVWv3l7gx5f9rVuHNlLL9xxoc5pG+J0W2hE8VHnqlfHcKa8ANXg/4IAmjVfpk9JqUnKzc9VVGSUkhOSHQ2rTTVfPDE2sdmG8rJOFBbr/tcy9O6G3frJZX31q4mDFBRknG4LjSwoyOi64T30wqffKP94oSLDQ51uCXAdRtIBNFu+TJ+8i+8uP7Vk8d2OLkXYkueLN7T8gkLd/sIXem/jbs2ZPEQPXTOYgN6KTBzWXUUlVh9sZpUXoDKEdADNVtKS+1RgT5WrFdhTSlpyn0Mdtcz54o1h5+HjmvrcSq3dka9nbh2pu8b1cbolNLG43h11Xoe2enc989KByhDSATRbuYUHalVvCi1tvnhjyMzL1w1/+ky7809owd2jdd3wnk63BAcEBRlNHNpdH369V8dPcWEjoCLmpANotqLypZyOlded1FLmizeG9zbs1v2vZahTuzZ6ZdZFGti9vdMtwUETh3bXws9z9HHWPk0c2t3pdgBXYSQdQLOVnNFZEeVnuyjilL8Od7HW6i8fb9fMv6brgu7ttfjeiwno0Og+ndQxIlTvMeUFOAMhHUCzlfijp5TyXqiiD0vGStGHpZT3QpX4o6ecbg1lFBaX6L8Wr1fyvzbpe8N66HXvGHVrH+Z0W3CB0OAgTRh8nt7ftEeFxSVOtwO4CtNdADRfiYlKlJSYlCTl5kpRUVJyMldIdZH844W61/elPt26X/dc3k//efVAVnBBOROHdtcb6Xlatf2ALhnQ1el2ANcgpANo3hITCeUu9c3+7/TjhWnKOfCdfj91uH7gOd/pluBClwzoovDQYC3bsIeQDpTh2HQXY8z5xpgPjDGbjDEbjDH3BeqdjDHLjTFZgdtzy+zzkDFmqzFmizFmYpn6KGNMZuC5p40xJlBva4x5PVD/whgT09TvEwBaow+27NWUP36qA8dOauHdFxHQUaWw0GCN699FKzbvlbXW6XYA13ByTnqRpP+w1g6WNEbSvcaYIZJmS0q11g6QlBp4rMBzt0gaKmmSpPnGmODAsZ6V5JU0IPAzKVCfIemQtba/pCclPdoUbwwAWitrreZ/uFV3v7xGvc+N0JKfjtfYfpzIi+pdOaibvj18XFl7jzndCuAajoV0a+0ua+2XgftHJW2S1EvS9ZIWBDZbIOmGwP3rJb1mrT1prf1G0lZJo40xPSR1sNZ+bv0fwRdW2Kf0WG9ISigdZQcANKyCU0X66atf6ffvbtG1sT305qyxOr9TxNl3RPPl80kxMVJQkP/WV7er/V4xyD/NZQVXHwVOc8XqLoFpKCMlfSHpPGvtLskf5CV1C2zWS9KOMrvlBWq9Avcr1svtY60tkpQv6YwhHWOM1xiTZoxJ27dvX8O8KQBoRXYcLNBN81fqX5m79KtJg/TMrSMV0YbTnlo0n0/yeqWcHMla/63XW6eg3iMyXIN7dCCkA2U4HtKNMedIelPS/dbaI9VtWknNVlOvbp/yBWtTrLUea62na1dOWgGA2lixeY8m//FT7Tx8XC/deaFmXd5PfGnZCiQlSQUF5WsFBf56HVw5qKvScw4pv6CwAZoDmj9HQ7oxJlT+gO6z1r4VKO8JTGFR4Lb0Y3WepLJnHvWWtDNQ711Jvdw+xpgQSZGSDjb8OwGA1qeouESPvrtZd7+cph6R4Xr7p+N1+cBuZ98RLUNubu3qZ3HloG4qLrH6OItvtAHJ2dVdjKQXJG2y1j5R5qklku4I3L9D0ttl6rcEVmzpI/8JoqsDU2KOGmPGBI45vcI+pceaKmmF5dRxAKi3PUdO6IfPf6FnP9ymW0efr8X3XKw+Xdo53RaaUlRU7epnEXf+uTo3IlQfMOUFkOTsSPo4SbdLutIYkxH4+Z6kuZKuMsZkSboq8FjW2g2SFknaKOldSfdaa4sDx5ol6Xn5TybdJumdQP0FSZ2NMVsl/UKBlWIAAHX3adZ+fe+pT5SZl68nfjBC/3vTcIWFBp99x7Ia6IRDOCg5WYqocGJwRIS/XgfBQUaXXdBVH369T8UljKcBjp3VY639VJXPGZekhCr2SZZ0xn/91to0ScMqqZ+QNK0ebQI4C1+mT0mpScrNz1VUZJSSE5KVGMvFhVqiouISPZ2apWc+2Kp+Xc/Ra954DTivfe0PVHrCYel85tITDktxBdnmofTvpQH/vq4Y1E3/yNiptXmHFR917tl3AFoww+yP8jwej01LS3O6DaBZ8GX65F3qVUHhv08eiwiNUMrkFIJ6C5Nz4Dvd91qGMnYc1vfje+u3Nwyt++otMTH+YF5R587S8ePlT0aMiJBSUgjqrcThglMa+dvlui9hgO6fcIHT7QCNzhiTbq31VPac46u7AGi+klKTygV0SSooLFBSat1Wd4D7WGv197Qd+t5Tn2j7vmN65taR+sMPRtRvecWqTiw8cKBBVwtB89Mxoo2G94rUp1n7nW4FcBwhHUCd5eZXHraqqqN5OVxwSvf+7Us9+MY6DesVqXfvv1STR/Ss/4Fre2JhHVcLQfM0fkAXfbXjsI6eYClGtG6EdAB1FhVZediqqo7m44PNezVp3idatmGPfjVpkP724zHq2TG8YQ7+ve9VXj/nnMrrdVwtBM3T+P5dVVxitWo7KyajdSOkw3V8mT7FzItR0MNBipkXI18mqz64VXJCsiJCy6/uEBEaoeSEuq3uUFP8jjSewwWn9ItFGbrr5TXqEB6ixfeM06zL+yk4qAEvTrRoUeX1U6cqr1cV6tEixUd3VHhosD5lvXS0coR0uErpiYg5+TmyssrJz5F3qZcQ5lKJsYlKmZyi6MhoGRlFR0Y3+kmjrfp3pJGXLVy2YbeuevJjvZ2xUz+7sr+W/my8YntHNuhrSPLPPa9MVSH9X/9q+B7gWm1DgjW6Tyd9spV56WjdWN2lAlZ3cVbMvBjl5J+56kN0ZLSy789u+obgOq32d6TisoVSg618cuDYST28dKOWrN2pwT066LGpwzWsVyOE81KmlqPyxkglJY3TC1zp+U+263f/3KSVs69suGlWgAuxuguaDU5E/DemdFSu1f6OJCU1+MonJSVWf/siV1f+4SO9s36XfnHVBVry03GNG9Al/zcBtcGc9FZn/IAuksQqL2jVCOlwFU5E9GvVUzrOotX+jlS1wkkdVz5Z/22+bnp2pf5rcaYG92ivf/38Ev08YYBCg5vgn4XqRsUb8AqWaL4GntdeXdu3ZcoLWjVCOlzFqRMR3aZZrT/eAPOka/OtQav9HalqNLmWo8xHThTqv5ds0JQ/fqq8QwV68uYRevXHY+p25dC6io6uup6S4r815t+PuZBRq2OM0fj+XfTZ1v0qKWFaLlonQjpcxYkTEd2o2UzpKJ0nnZMjWfvvy7vXIqjX9luDVvs7kpxcr1HmouIS/9SWxz/Sgs+zdduYaKX+x+W6cWRvmdrOEa+v6t5LYqKUne0fbc/OJqC3YuP7d9HB705p0+4jTrcCOIITRyvgxFG4QbM5ObKqy7tHR/sDVjV8mT4lpSZV+j4lF75XN/D5/HPQc3P9I+ilofYsPvp6n/7nn5u0Zc9RXRhzrv7fdUM0vHfHJmi4GnV8L2g9dh4+rovnrtBvrhuiu8f3cbodoFFUd+IoIb0CQjrcoHR0ueyUl4jQCPeNGAcF+UfQKzrLahyVvb8zDiGjkjms6FEfX+85quR/btJHX+9TdOcIzZ40SJOGdW/6kXOgji79/Qca1L29UqZXmmGAZo/VXYBmptlM6ajjPOnK5tyfcYiWfiJoI8re/50eeD1DE+d9rK9yD+nX1w7Wsgcu1TWxPVwT0Fm9CDVxUZ9OWp19kHnpaJVCnG4AQDOWnFz52t1nmSd9trn1reJE0EaQd6hAz6Ru1Rtf5ik02Mh7SV/NvKyfzm3XxunWyqn4TUrpeQiS3PdBFI4a07ez/p6epy17jmpwjw5OtwM0KUbSARfyZfp01z/uKncy5V3/uKv2o42NfIVKJSbWejUOX6ZPQabq//W49lsDF8s7VKD/94/1uuLxD7X4q291+5hoffzLK/TQ9wa7LqBLzWz1Ijjqor6dJEmrtldxlVqgBWNOegXMSYcbdPl9Fx04fuY/Sp3DO2v/L2u4bnAjXqGyrqqbi+7KOfcut3n3Ef35o+1asnangow0ddT5+tmV/V1/hcagh4Nkdea/PZyHgMqMf3SFhvWM1HO3j3K6FaDBMScdaGYqC+iSdKDgQM1HxhvhCpX1VdVc9GATTECvhTXZB3X3y2s0ad4nem/Dbt11cYw+/uUV+t+bYl0f0KVWfEEq1MlFfTrri28OMC8drQ4hHXCj6v4tquma5A18hcoaOcv0mqrmopfYEgL6WZwoLNab6Xm6/o+fatpznytjx2H9x1UXaOXsK/Xr64aoR2TThfP6nvRZ6QWpioySX8xpnGlZ9dXY08ZQrTF9O+lQQaGy9h5zuhWgSXHiKOBCnQukA+0qr5dTOjJe2fSVqKjK1zCv5RUqa6zi9JrSDxHS6f6iQjopp+jMbwmi/n97dx4fd1nv/f91TbZmkmbvmmbpxlJI2coioIIFgXojrhx0VBQ5OaegN+gBj5pzHxbvKPhTgXNre4wIcnDEnQMoiljKQUGFgkDZWrok6b4kTZqlWef6/fGdtJPkO8lMMsl3knk/H48+0lyZmV5JvgzvueZzfa70oomZ0zSw81Anwb818rMXdtDc0cOS2bl87YqT+MgZZWRnpk36fBKx6XPgdjXramhsbaC81VD7R0tgI8Dw68ZTMVzXMrHOWVQMOHXpx8+dxJNxRTymmvQhVJMuySB4YQnXnN9ET8TL6Mw+uO8RwkEmQrSe5NddB2vXDh9fvRrWrEnofIGYDjYKXlhC9blNdEbsZfT3QN1zxQTWx1hrnwJ6+0M89dZ+frFhJ0+9tQ+Ai5fN4ep3VPKOxcWetlFM+EFb4zgQa1Ik+/xSgLWW8+9czyll+awJqC5dppeRatK1ki6ShALX3gN3fYaad/bSmA/lrVC7ziWgQ/SV8ccfj298vGIorwn8TzM0Qc1KBn9frzVPzJymmDf3HOYXG3byyMu7aOroYdbMLP753YsJnFNBaZLUmkcrWRqtrWb0B/SgLCseyT6/FGCM4eyFRTy9+QDW2qTp9S8y0RTSRZJRUV3O7wAAIABJREFUIEAACEQem75qFWx9IPae5JMdLmIprykvJ7CxYfiLjYrU3TC4o7mTxzfu4dFXdvP67sNkpvm4aNlsPnpGGe9cWkJ6WnJtHSrPL3ddSR/zps/JLsuKV7LPL0WctbCIX/99F9sOdrB4Vq7X0xGZFMn17C8ixwQCztvpoZDzcc2a+HqSj/E00DGrrXVeNEQa+iJi1Sr3+0Ybn6Z2Huqk7pmtXPHdP/POb67nG797i3Sf4bb3n8TfvrqSNYEzuPCE2UkX0CHKps/xHD6V7NdELNe1TLgVlYUAvFh/yOOZiEweraSLTCWBQOyb1cZ4Gui45gbORtaB1f/a2sHznewSnCQRClle332Yp97az1Nv7eOVna0ALF+Qz1cuO4FVVfMoK/KP8ijJYfCmz0bK88upXVlLoCpAcO111GyrozGnn/KONGoXVRNYPcr+h2S/JmK5rmXCLSrJpcCfwYaGZq48s8zr6YhMCm0cHUIbRyVZBDcGXYNQfA8STK5w4fM57SOHirb5dQpr7+7j6+t+zU9eeJm+IyeQTjEGyyllhVxy0lzeVzWP8uKpEcxjEVx7HdW71tKZcWzM3wt1patHDuopdE3I+Hz2Ry+wvamDp/7lAq+nIpIw2jgqMsUkos2dc+M4Vt7HKK4XE9O4vrert5+XGg/xl61N/GVrEy81NhOyOYQ4le60l2jxvQBZb/DRd32LQNV5Xk834Wq21dE5pFS4M8MZDzBCSJ/G14Qk1ukVhax7az/NHT0U5WSOfgeRKU4hXSQJuZ3M2dnbSc26mqQ69CfuFxOTXYIzgTq6+3hlRwsvNhziL9ua2NBwiJ6+ED4DVQsKCPmfZG/verp9b4Dpd+7UT9L9DhOlMac/rvGjptE1IRNrRYVTl/5SwyEuWjbH49mITDyFdJEklPA2dxMk7hcTU7S+11rL9oMd/L2xhZcaD/FSYwub9h5m4JTyE+fl8clzKjh3cTFnLiwib0YGvtveiU0bXsaRbL/DRCnvSKMhd3ggL+8Y5cClKXpNyOQ7payAjDTDBoV0SREK6SJJKOFt7iaI2xxHGgcmpQRnPPpDTiB/fXcrb+w5zBu7D/ParlYOdfYCMDMrnVPLC7j4wiWcVlHIaWUFFPiHv/U+VX6HiVK7qNq1Jr12UfXod07ya0KSw4yMNE6an89LDerwIqlBIV0kCdWurB1URgLjbHM3QXzGR8gO39znM8nXOtDN4a5etuxvZ9PeNieU7z7Mm3vaONLrrAhnpvk4bm4uFy+bw2nlhZxeXsiS2bmk+UY/TGWq/A4TJbB6Dawl/u4uInE4o6KQH/+1gZ6+EJnpU+N5RmSsFNJFktBIbe6SiVtAH2ncKy2dPby9v52397Xz9v42toT/vvdw19HbzMxK58T5eVx1VhnL5uVx0vx8lszOHXMQ8Op3mJCuQGMUWL1m5E2iIuO0oqKQH/55O6/tbuX08kKvpyMyoRTSRZJUoCqQdKE8mVlr2d/WzdYD7WzZ3340iL+9v52D7d1Hb+fPTGPJ7FzOXVLM0tkzWTI7l+Pm5FJW6McXwwp5PCb7d5iwrkAiSeqMymObRxXSZbpTSBeRMSvOLqbpSJPr+ETp7uunoamTrfvb2Xqgna0HOtgW/tje3Xf0djOz0lkyJ5f3nDDLCeNzclk6O5f5+dkJD+PJYqp0BRIZq9kzZ1Be5GdD/SGufafXsxGZWArpIjJm91x2D9c8cg09/T1HxzLTMrnnsnvG9bjWWpo7eiICuBPCtx5oZ0dz59GuKgDz82eweHYuHz69lMWzc1k8y/kzJy8LY6ZnGI9mQroCJduBWJLyzqgo5M9bDmKtTbn/xiW1KKSLyJglou66pbOHTXvb2LyvjU372ti8t53N+9toCXdTAchK97GwJIeTS/O54tRSFs/KYfGsXBaW5JCTpaexAeXpRTT0DX9nozy9aGwPGAwO7mHe0OB8Dgrq4plTywp4+O+72NPaxfyCbK+nIzJhjHU7jjmFrVixwm7YsMHraYhMOz19ITbva+ONPYfZvDccyPe1se/wsXrxmTPSOX7OTJbOcWrFB8J4acH0LVFJpOCFJVSf20RnREdIfw/UPVdMYP3B+B+wstL9NNCKCqivH+s0RcbllR0tXPG9Z1kTOJ1VVfO8no7IuBhjXrTWrnD7mpagRCThevpCbNrbxsZdrWzc1crru1t5a08bPf1O15esdB9L5+Ry3pISTpg7k+PmzOT4uTOZmzdDb1+PQ+B/mqEJalZCYz6Ut0LtOgi81jy2B2yMUiYTbVxkEpwwbyaZaT5e2dGikC7TmkK6SCqY4LriXS1HeLHhEC/WN/NSYwtv7T1Mb7/zLt3MGemcPD+fT59Xycml+Zw8P4+K4pyYeo1LnMrLCWxsILBxyHjFGA9QKi93X0kvn54HMsnUkJWexrL5eby8o8XrqYhMKIV0mRzafBa3hPW7TnBdcX/I8uaew7xQ3+wE84ZD7Gl1+o37M9M4ZUEB15y/kKrSfKpK8ykv8mt1fLLU1g7+XQP4/c54MjyeSIKcWlbAzzfsoD9k9YJfpi2FdJl42nwWt0T1uw5uDFLz8tU03tx/rPRhI87voqYmpp+/tZbtBzt4dmsTz205yHNbm2g94mzqnJc/gzMqCllRUciKyiJOmDuT9DSdAuiZgd9nol4QJ/rxRBLklLJ8fvRcPW/vb+OEuXleT0dkQmjj6BDaODoBtPksbpV3V9LQOvxnVpFfQf2N9TE9xtCgD+FNhI+Fg7oxEHI/GbT1SC/PbD7A/2w+wHNbDrI7vFI+P38G5y0p4bwlJZy1sGh4ZwW9YzLtBNdeR822Ohpz+invSKN2UTWB1TpVVLy1/WAHF37rae78cBX/cKbKr2Tq0sZR8ZY2n8UtEf2uXQ+2yXQ2FQY2MqyuePvBDta9uY91b+7nhfpm+kKWAn8G5y4u5rrFTjCvLB6hdCXWd0wU5KeM4NrrqN61ls5c5/OG3H6qd62FtSioi6cqi/3kzUjn5R0tCukybSmky8TT5rO4leeXu66kl+fH/jOLGvTzAb8f+39r2bizhd++uocn39jHtoMdABw/ZybV71rEyhPncGpZwaj1nkdr51saKK+OKKmB4WU1Kn2aUmq21R0N6AM6M5zxAArp4h1jDKeUFfDyjlavpyIyYRTSZeJp81ncalfWUv3wNXTaYyd5+k0mtStj/5m5Bn0L5R1LueP2b/Db3YXs+O6zpPsM71hczNXnVvKeE2ZTVuSP+d8YVFJjoKEAqi93vnY0qEe+Y1JTM/g6gLjq42VyNeb0xzUuMplOKyvge09vpbOnD3+m4oxMP9rhJRMvEIC6OqcG3RjnY12dQtkIAq9C3aOWihYwFipanM8Dr8b+GLUra/FnOIE7PTSP/N5PUNrzA0i7ix80ZbOwJJdvfmQ5G/7tIh787NlcfW5lXAEdRi6pOSryHROVPk28YNDZB+LzOR+DwTE/VHlHWlzjIpPplLIC+kOW13Yd9noqIhNCLz1lcgQCCuXxqKkh0NBL4MXIwd64VpyvOO4f+OmcRjZsTSMrdBKWfkoKmrn5PVVcctJcCnMyR3+QUYxYUgPD3zFR6dPESnA5Ue2iaqcmPePYmL/XGRfx2illBYBzAulZC4s8no1I4mklXSQZjXHF2VrLX7c18cWfvcxpt/+ejW8vx2fzOJT+I3bNuIa3QtfTn/2nhAR0iF4jX96K+zsmq1a5P1C0cYnPSOVEYxBYvYa60tVUtKc57+i0p1FXulqbRiUplORmsaAwW4caybSlFoxDqAWjJIU421a2d/fx8Es7efCvDWze187MrHTafE+zJ/QwPWYTROz9jKeN42hc2zxm+Km7vM69n7vacU6skQ6N0nO9TEPXBV/ktV2HeeZLF3o9FZExUQtGkakmxs22m/e18eBfGvj1Szvp6OmnqjSfb35kOZcvn0/ONy7D+oYHs3jaOI5mIIjHfDKqatInljHuYVwnvso0dXJpPo9v3EtrZy/5/ozR7yAyhSikiySjKCc9BpdDzV2V7D9Uwmw+Bj0nkJnu438tn8en3lHJqeEaTUhMG8eYploViP0UVNWkT6xoq+VaRZdp6uT5zgaY13e3cu6SEo9nI5JYqkkXSZDgxiCVd1fiu81H5d2VBDeOvasG4AT1+nrnVND6eh44CT7/qx/Ts/8mZvfcRl9PCe1ZQW664hDfufLUQQEdBnd3GeDP8MfVxjHhamuddwQiqR2niIzRyaVOSN+4S/3SZfpRSBdJgIHa7IbWBiyWhtYGqh+rHn9QB9q6evnBM9u45eeWvK7PAYaDGd9h14xrafI9xNef/arr/QJVAeour6MivwKDoSK/Inqt+DjE9eJE7TgnVnFxfOMiU1xRTialBdm8tlttGGX60cbRIbRxVMai8u5K19KS8WzSPNzVy4+erefeP23jcFcfXb5XaU3/FV2+FwdtBDUYQreExjjz8Yl746hMrGAQrrkGeo4dgkVmJtx3n14IybT1Tw9uYPO+dtbfdIHXUxGJ20gbR7WSLpIAUfuFj2GT5uGuXv5j3ducf8dTfOfJzZy1sIhHrj+PGbO/T1fa4IAOo9SYJ/BgGzeuhxn1dlKzbmwt/2ScAgEnkEe+U6GALtPcyfPz2X6wg7auXq+nIpJQCukiCRC1X3gcmzSHh/NiHvvc+dx79ZmcUlZAbdYq/EP+H+TvhdqsKD3GBw62aWhwNg4OHGyTwKDe6PLuAUBDa0Ni6vIlfkP2Miigy3R38oKBzaMqeZHpRSFdJAGibdJctXTVqPXaXb391D2zlXfeuZ7vPLmZsxcV85vPn8+9V6+gakH+0dsF7nycukehogXnYJkWqHvUGXeV4INt3JS3Rz8ePq66/Ale8ReR6Wugw8tr2jwq04xq0odQTbqMVXBjcFC/8FVLV/HAKw9ErdfuD1l+/dJO7npyM7tbu7jg+Fnc9N7jj3YrGMbni94DO+RSkx7v7ccguNxQfTl0jnCA6ah1+UOPsgen44s2lIpIjM75+jrOWVTE3Ved5vVUROIyUk26QvoQCumSKFE3k+ZVcN9lf+PO321i0742TlmQz79edgLnLh6lx2+8p3VOxumelZUE8xqoWQkN+Qyrl4cYNrbqFFIRGadrH9hAfVMHf/ziu72eikhctHFUZAzG2/fcbdNoZmgpXQdWc82PNtC9ZSvfe+QO/vtbn+Dcvz4x+gPG22N8MnqS19YS2Oqn/m6oiPJO86h1+TqFVETG6eTSPLYeaKeju8/rqYgkjEK6iItE9D2PDKdptpDinhuY130XM2wZX3v6Xp78z3/kfW/9GRPrhs54e4xPRk/yiH9j1SbA5Y25VUujbGwdUFQU37iIyBBVpflYC2/u0eZRmT4U0kVcJKK14Kqlq8Cmk9f7YeZ3fZ+c/gtoTf8FF2+/gU/+7b/JCPVHPHiMGzqTsXNHeE6Pv7fCtdzl8bejbGwVEUkQnTwq05FCuozJeEtBkt14+55ba3l8407md6+hsO8zdPleZXfWdbRkPMCT8w5G+UcTXN4xCS0YI435Z9bcHN+4iMgQc/JmUJKbxWu7tJIu04dCusQtEaUg8fxbXrwYGE/f8y372/nUfc9Dyz9h6WNf5v/hQNb/pc+3B4DGKM1bEl7eMQktGCON+WdWHuXr0cZFRFycOG+myl1kWlFIl7hN1imTk/liYKjalbX4zeC+gn6TSe3K6Jsuu3r7+dYTm7jsnmd4ZUcLzPwFe7I+T1fa3wfdrrxtkv6zm+QNmdF6xY/0M3PuOAkbXEVk2ls2L48t+9vp7U9Mi1kRrymkS9zGWwoSKy+PnA+8CnWP2iEHB1kCr7rffv1b+7n4rv/hu+u3cPny+Tx10wXUvv9i/JlZg27nz/BT+2SU/4EkurxjkleoA1UB6i6voyK/AoOhIr/iaE/4ke84CRtcRWTaO3FeHj39IbYeaPd6KiIJke71BGTqKc8vd+3/HUspSDwm68WAq5oaAg29BF6MHOw9VipSUwONjew9vorbP3krjx/OZPGsHH7yj2cf7Xc+EE4jDziqXVlLoK4GcOkLnqjwHAw682tocEJv5FkIE7xCHagKjB7KXe8YUCgXkXFZNj8PcDq8nDA3z+PZiIyfVtIlbmMua4jTeOrCx62xkWAVVN4Ivlucj8Eqjm6+7GvcwQ/PuJyVl/4b65rh5jlH+N0N7xp2IFGgKkD9jfWEbglRf2O9E2BHKO8Ydw1+5GZRcAK6Cbdc0Qq1iExji0pyyEz38eaeNq+nIpIQnoZ0Y8x9xpj9xpjXIsaKjDFPGmPeDn8sjPjaV4wxW4wxm4wxl0SMn2GM2Rj+2n8Y46QSY0yWMeZn4fG/GWMqJ/P7i9dUOf11zGUNcZqsFwNugu8uovpyaCgAa5yP1ZdDcLnh1bz5vP/qu/jaymrO3PkGT967muvvuYnM9Bj/c4pS3hFczvhr8N02i1p77PROBXQRmabS03wcNydXm0dl2vB6Jf1HwKVDxr4MrLPWLgXWhT/HGLMMuAo4KXyfNcaYtPB91gLVwNLwn4HH/CxwyFq7BLgLuHPCvpNx6OkLsfrHL/Ldp7Z4PZWYua4QT8C/MRkvBtzUXASdg/eNciQji5qLP80HPvltmvwFrH3469z/y1spb90XfTNmMOgce+/zOR9HaH+YkBr8aO8AjLRZNI45TpjrroP0dOdFS3q687mISJxOnJunkC7Thqc16dbaZ1xWt68ALgj//QHgaeBfw+M/tdZ2A9uNMVuAs4wx9UCetfYvAMaY/wI+APwufJ9bw4/1S+C7xhhjk2zJOjPdR3/I8v1ntvHxs8spzs0a/U4pYsw1zuPU2Dd4E2dWfxXFvZ+H9Pn8w8u/5yvr7yOvJyJQu9WTD5SeDKxsD/Qpf/ZZeOCBYeMNX+oc/hjgWv8fTfDdRVSf23T0BcbAOwAUF+H6U4w2R5i8VffrroO1a4993t9/7PM1ayZnDiIyLZw4L49fvLiT/W1dzJ45w+vpiIyL1yvpbuZYa/cAhD/ODo+XAjsibrczPFYa/vvQ8UH3sdb2Aa1A8dB/0BhTbYzZYIzZcODAgQR+K7H70qXH09nTx3fXT53V9OlsoO7dWD9FPdczt+cbgIHsO/jGn4YE9GibMaP1Ka+rcx1Pi9L0Je3oG0ajc3sHoDPTGXe/w+T2UndVVxffuIhIFCfOG9g8qrp0mfqSMaRH43LgOHaE8ZHuM3jA2jpr7Qpr7YpZs2aNY4pjt2T2TK5cUcaP/9rAjmb3FdWpbKqdUFq7spYCzmN+1xpy+99La/qvacm9mdoP/XPs7QKjlZj097sPu12tQL89dvvRfo5D3wEYbXxCe6nHWkYT5ecRdVxEJIpl8451eBGZ6pIxpO8zxswDCH/cHx7fCZRF3G4BsDs8vsBlfNB9jDHpQD6QtGeN33jRcaT5DN/+wyavp5JQXh5KNBZN7d08//oy8o98hfT0bvZl3Ux+yTrq3v9dp/QmEHA2YYZCI2/GjNZSMc19ZbyiI8p4fgUQ288x7o44E9VLPbLLjLXHymi8qHcXkZSR789gfv4MhXSZFpIxpD8KXB3++9XAIxHjV4U7tizE2SD6fLgkps0Yc064q8unhtxn4LE+AjyVbPXokebmz+Ca8xby3y/v5tWdLV5PJ2Giboh89AbvNywOCAaxlZU8ctIFXPxvD/P4K7u48aKlbL71Wrpu2zS2zbHRWi1WV7uO1y6qHrGbTSwbS+PuiFNbC5lD6mMyM8ffSz0ZymhEJCWdOE+bR2V68LoF40PAX4DjjTE7jTGfBe4ALjbGvA1cHP4ca+3rwM+BN4DfA9dbe7QOYDVwL7AF2IqzaRTgh0BxeJPpFwl3iklm/3zBYkpys/j3R14nFEra1xNxiXooUW9Tcqy0BoPs+cKXuXbF1dxw+c2UNe/mNz++iRv3vRB7W0U30U7SXLPGdTywes2I3WxiOdxpTB1xhr5uTcTr2IYom13dxnNy3G8bbVxEZAQnzstj64EOunpVMidTm0nihWVPrFixwm7YsMHTOfzqxZ38yy9e4ZsfXs6VZ5aNfockV3l3pWuHkooWqL976GC4n/cksdby0EWf4BvLr6DXl8ZNzzzIZ158jDQbijqX4Mbg8FNEJ6EDTdSfY34F9TcOn2dsD1rpHpzH+3tIT3evKU9Lg76+4WMhl12zPp/q0kUkbr99dQ/X/+QlHvvc+VQtyPd6OiIjMsa8aK1d4fa1ZCx3SXkfOr2UFRWF3PH7t2jt7PV6OuPmWoLRA7XrXG6ciA2LMWps6uTjP/gbXz3z45y8dwtP3Pc5rt3wiBPQgWBew7BNmsGNQaofvmZwXfjD1zhfW3sdlTen47vVUHlzOsG1I/T6HkNv8tqVtWT4MgaNZfgyxne400RtHI1nM6hbQB9pXERkBCfOmwlo86hMfQrpScgYw21XnERLZw/fSoZNpOM87Ma1BOO5YgIbXW483g2LMegPWe7783YuufsZNu5q5RvPB/nJT2uoaNl79DbBKqi+wgzbpHnDw/9Ep+0Z9HidtocbfvlZqnetpSG33zmhNLef6l1r3YP6ODZVhg/Tjfp53CZq42hFRezjUTbSRh0XERlBRXEOMzJ8bN6nNowytSmkJ6mT5ufzqXdU8uBfG3h+u4cNaRLUpWPYCaXX3uO+qXK8GxZHsWV/O1d+/y/c/ps3OHtREX/4wrv42Gffhxkyl5qLDJ3pg0vBOns7aQp1uD5uk+mmc/AiN50ZULPNpdf3GDdV1qyroad/8AuEnv6e+E4kHSra5tbx/h7iedyBw5NiHRcRGUGaz7Bkdi6bFNJlilNIT2JfuvR4yov8fOmXr3Ckx6Pa3Inq0hFtU+UEnXLZ1x9i7dNbWfUff2LL/na+c+Up3P/pM5lfkO06l8b8xOzVaMxx+b2NscQklo2j0UTtrz5Rv4d4HnfNGli9+tjKeVqa87lOGxWRMTpuzkytpMuUp5CexPyZ6dz54eXUN3V6V/YykYfdTJK39h7mg2ue487fv8WFx8/iyS++iw+dvmBwqciQ3ufl6cMOpnW4VJf4e6A4yvlT5W0u/4mNscQk7h7oYaP2V4+173u84njc4OrzqPzWAqee/1sLCK4+LzFzEJGUdPycmew73D0t9nVJ6lJIT3LvWFzMJ8+p4L5nt3tT9jIRNcvBIJSUELzzE1R+sAHfv1sqP9hA8K7PJLQFY09fiLv/uJnL/9+f2d1yhO99/HT+8xNnMHvmjFHvW/tHJ3yPyDodauqeyOCepzKH3d7fA7XPZbs8+NhKTOLugR4WS391L021w65EJPkdN8fZPLp5v1bTZepSSJ8CvnzZCVQU+bnhp3/nUMdoyTHBEl2zHK5xD85vovpyaCjA2WhZANWX9BK894bxzxnYuLOV93/3z9z9x7d5X9U8nvziu3nf8nkxb7QM/E8zdY85IZwolS8GqH+4gsAX7ifwUi9X/x3S+p3bp/XD1X+HwN9cltjHWGIyph7ojK9MZjIk+4sIEZl6jpvrhPRNexXSZepSn/QhkqFPupvXdrXyoTXPsXBuN5v6bqTx8CT26A4GnRr0xkZnBb22duwlEeG+3JU3OsF8qIoWqL9r7NdkZ08f9/zxbe7983ZKcjOp/UAVFy2bM+r9hvU+f6SdwNNNAJTcDE0u5+oUZxdz8EsHnftfWEL1uU10Rhze6e/B6WKz/uCYv59EmJD+6gnku82HdXklZDCEblEbRhGJn7WWqlv/wIdOL+X2K072ejoiUalP+jRwcmk+F5/azqZdGTQ3nxpzWUDUDYNxCC6HyhvBd4vzMbh8HN9I+OCchijnS0Qbj8XTm/bz3rue4fvPbOOjZyzgD194d8wBfVi5xYVtBM9w2rV0p7vfr7ul6WhLypqLGBTQwfm85qKxfz+Jsiq0ZPi7ATY8ngTGWmsvIhKNMYbj5uRq86hMaQrpU8hvd95Mp+8vFPZew4x+JymPVBYw0sE7sUp4vXBaGsGqEb5s4r8kD7R18/mH/s6n73+BrHQfP6s+hzs+vJz87IzR70yUcgvbQ80H86CigvZM9/u1Z3K0JWVjX5PrbRr7PGyfGfb4nqeHb3g14fEkMNZaexGRkRw3Zyab9rahigGZqhTSp5DGww0czPwOvWYnJT1fIT003xl3KWUAqHn0BteDd2oejb3uO2H1wtddB+npBJf1U305rl1SAPoZXN4w0jsBoZDloecbWfntp3nitb184aLjePyGd3L2oiidWaJwKwUBaOhrcrqSjFbG3tlJebv7wTvJsBrs2gZyhPHJNtZaexGRkRw3ZyaHOns52D7Je7lEEiTKG/mSjMrb02jIPcKBzNuZ2/0dZvf8H/Zk3UR5R5fr7Rt7m1wDZmOv+6qv62MkYtPhddfB2rUA1KwcXhYSqSIi7A6s4g+8SBhYxQc4a/b7+erDG3mh/hDnLCqi9oNVLJ6VG/ucIqSZNPrt8MCaZpy5FGcX03Rk+M8ssu1i7RP9VF/lH/SCJllWg8tb3ev/y1snfy7RBKoCCuUiklDHhzePbt7XxqyZWR7PRiR+WkmfQmqf6MffA32+fRzI/Drpdi7zuv6dW550f60VLYTFE84SUi9cV0ewyqlnH6nm3N/jfI8D3Fbxj/RAzcMvcek9f+Lt/e188yPLeejlB1k8r8DplJKe7rwoiINbQI8cv+eye8jwDS6dyeiDe35/7PPA4YqkXQ2uXTe8naS/xxkXEZmuls5xFm5Uly5TlUL6FBI4XHG0LWCP73VM77fItCfw1Clfo7tveNCsfbnYPZy9HHs5SCLqhQdKXBoKiF46YsMtCw9XHB0atFpvDTl9F1Ha9X1s5wVcuaKMp/7lAq687xuYtWuhP/z99/c7q/ZxBPWKKKUqA+OBqgD3f+D+cACHilbD/Y9AYGP4huGWlIGqAPU31hO6JUT9jfVJEdBh8HVjBnq7Pzb4Zy0iMt3Mys2i0J+hkC5TlkL6VFJbS2Crn/q7IXQb1H/nWe4w7MLXAAAWQklEQVRcV8ef5i3jfz/0d3r6wvXcwSBUVhJ4uml4OHsig8C198T8TyaiXni0EhcADDxwOgT/ddXRoYHV+szQUuZ2/3+U9N5Ir28PpvibfONDVRTlZA5apT/afaYKp+94jGqf6Cezb/BYZt/gVf1jAdxSf8aDTsCNo8e5p4ZeN3dDYOs4et2LiEwBToeXmeqVLlOWQvpU4nIIzpVf+Bi3Xr6MJ17fx2cfeIHOB53DggZaHQY2Qv09xgln4YN3JjtQNsbYVrEzA2q6Hz/6+U1pH2ZO1xeZ2/1t0uxsDmZ8mzbzJWpzj7WHiVylP3oo0uXOeMyKi906FEJxlHccoh13H35xhM93tDVjUhjj4UkiIlPd8XNn8va+dnV4kSlJG0enmkBgWLj6NODPTOfLv36VwIFm7gulURh5A2udYFZfH/c/N9LmzVhX08sLKqJ2UBmqobWBQx09fHf9Fh5sfCe5hOizv2JPzs8pO3yE2nUQOPw4rHZu77ZK35npjAcqK2M6gKnmIugdspLem+6Mxxxjwyep0hmuoQ+3ZgSSIwy7XDciItPd0jkzaevuY09rF/MLsr2ejkhctJI+TVx5ZhlrAmfwekEZH/jUt3mrZEi9cePYjoBPRAvG2qxV+GI4ONLYGRT0Xcm7vrme+5/dzgdfX8+fvl9N/bcfoP/2I06ZxkYGfS8jHorU0OC8QBkIzFFWtqP1Mo+rx3lNzbGAPqCz0xkXERFPHD/H6fCySXXpMgUppE8jl548l4fW38OR9Cw++Mlv85sTzj/2xfKx9etORAvG+1+oIzRCr3Fj/eT1Xklp1w/J7/0UZy8q4vc3vos733iEeW0u7SIjvpc0n/umz7ShLwpGCMwJ6WAT7UXQGF8ciYjI+B030OFFdekyBSmkTzNnfPFafvPzr7Bs/zY+d8WXuWnVDbQWlAzeJBhH7XQiAuy68n7Xri4+m0d+78cp7bqPwr5P0e3bRGfebdx79ZkcN2emM2f/4M4yA51UBkRtn+h2ZUcJzAk58TLai6AxvjgSEZHxK/BnMmtmFm/vb/d6KiJxU0ifbgIBZt/9TR567j/5/HM/5eGT3sMl19/Hk6dd5GycCUZsLI2hFKQ2a5V7G8esVa63j0VGqJKins9T2nU/BX0fp9u3kT1ZN3Ag63ZC6dsGfS+jbXiM2j7RrRd8lMCckBMvY3hBISIik2/JrFy2HlBIl6nHaMfzYCtWrLAbNmzwehoJ8+rOFm76xSts3tfOOxYVU7PmJk5+5dnhN4y2sbSkhOD8JmpWOl1ayludQ3ACu4vh4MGY5mBuNRiyyO4/m5n9lzIjtJwQXXSkract/TF6fYNXuO0tsV+TweWG6ssHbx7194T7gG+MuKHfP/EdTYJBp6Qmhs2qIiIyOf7tvzfyyMu7efWW92LMCLWXIh4wxrxorV3h+jWF9MGmW0gH6O0P8dDzjdz9x7dp7uhh5Zbn+cfnf83ZO147VoVijNNScKiRntBGuXb6+kO8UH+IT37vdnoyz8eHnz6zj7a0x2lPe4KQb/jKRppJo+/f+1weLYrKSoJ5De4vInJzFZhFRFLcj57dzq2PvcHzX13J7LwZXk9HZJCRQrpaMKaAjDQfn3pHJR84rZQffuQGHlx0Pld9/A5O2L+dK954msvffIYFhf7RHygGhzp6eG5rE+ve3MdTm/bT0tkLGefTmfYs7WlP0e17zTlZKYpoNeZR1dYSqK4msDGis4rfD3X3KJSLiAhLZjsdXrYcaFdIlylFIT2F5M3I4AsfO4/Vq6/j14vO4ZdVF3HnBZ/hzgs+w9Ksft7xyGusqCziuDm5LCzJISs9zTnQp2l4hxVbXMzBtm62Hmhny/52XtvVyoaGQ2wJb84p9GfwnuNns/LEObz/VwsJ+bpjmmNFfpxH1Q8EcZWZiIiIi8WzcwDYur+dcxeXeDwbkdip3GWI6VjuMkxE7XTjiafx+D9+hefyytlQ30xnj7OS7TNQlJNFcW8nM7dtxoRLYbrSM2nOyacpfxZd9lgpTN6MdFZUFnFGRSFnLyzitPJC0nzO1yu/YGgoGD4NY51TQgf4M/zxb9gUEREZgbWWqlv/wIdPL+W2K072ejoig6jcRQaLOH2yHPjn8J/e/hBv72tnS3h1/EBbF80dPbSlh2DbNujqIsfC0vICiqsWMS8/myWzc1kyO5e5eTPw+dzr12v/lEn1JT2DNncaCxanBr3f9lORX0HtyloFdBERSShjDItn5bD1QIfXUxGJi0K6HJXx04dYVlPDssiykU8GANcXeDELFLwTHltHzUrnJFDDsRX0ftt/tCe5ArqIiEyExbNyeW6ry+F4IklMfdLFMUL/9ODGIJV3V+K7zUfl3ZUEN0Y//MjV+vUENkL93U7/cjtkwb2zt5Oade6ngYqIiIzX4tm57D3cRVtXr9dTEYmZQnoyiOME0AlTUwOdnYPHOjsJ3nsD1Y9V09DagMXS0NpA9WPV8QX1iNaOjfnuN2lsdT8NVEREZLwWz8oFYJtKXmQKUUj3WpwngE6YRveQXHNqE529g8P7eFa+izqjjGcXjenxRERERrNkthPSBzqQiUwFCulei7KCTc0kl3+Ul7sOJ2TlWye8iYiIhyqK/aT7DFsOKKTL1KGQ7rUoK9hRxydKba1zCFAkv5/yjGLXm5fnu4d6VxFtPpujnJnUfKQ59scTERGJQ0aaj4piP1u1ki5TiEK616KsYEcdnyiBANTVQUWFs/JdUQF1ddS+/x78GYOT9UA3lphVHDugqLzV/SZxhX4REZE4LZmdq5V0mVIU0r0WZQWb2jhCcKIEAlBf72z0rK+HQIBAVYC6y+uoyK/AYKjIr4j/wKGI77F2Hfh7Bn857tAvIiISpyWzc2lo6qSnLzT6jUWSgPqke20KHGsfqAqMr4d5xPcYeK0RiououQga+5opzy9Xj3QREZlwi2fl0h+yNDZ3sGT2TK+nIzIqhfRkEHEC6LQV8T0Gwn9EREQmS2SHF4V0mQpU7iIiIiLT3kCvdLVhlKlCIV1ERESmvZysdOblz1BIlylDIV1ERERSwqJZOWxvinKqnkiSUUgXERGRlLCwJIftB9qxEed3iCQrhXQRERFJCQtLcjnc1UdzR8/oNxbxmEK6iIiIpIRFJTkAbD/Y4fFMREankC4iIiIpYaFCukwhCukiIiKSEhYUZpPuMwrpMiUopIuIiEhKSE/zUV7kV0iXKUEhXURERFLGwpIchXSZEhTSRUREJGUsLMmhvqmDUEhtGCW5KaSLiIhIylg4K4eu3hB7D3d5PRWRESmki4iISMpQhxeZKhTSRUREJGUMhPRtCumS5BTSRUREJGXMmTmD7Iw0th9QSJfkppAuIiIiKcPnM1SGN4+KJDOFdBEREUkpi9SGUaYAhXQRERFJKQtLcmhs7qS3P+T1VESiUkgXERGRlFJZkkN/yLKjudPrqYhEpZAuIiIiKUVtGGUqUEgXERGRlLJIIV2mAIV0ERERSSmFOZkU+DMU0iWpKaSLiIhIyllYksM29UqXJKaQLiIiIimnstjp8CKSrBTSRUREJOWUF/nZ3XqE7r5+r6ci4kohXURERFJOZYkfa2FH8xGvpyLiSiFdREREUk55kdPhpbFZdemSnBTSRUREJOVUFPsBaGhSXbokJ4V0ERERSTnFOZnkZKYppEvSUkgXERGRlGOMoaI4h4YmlbtIclJIFxERkZRUUeynQW0YJUkppIuIiEhKKi/2s7P5CP0h6/VURIZJiZBujLnUGLPJGLPFGPNlr+cjIiIi3qsoyqGnP8Tew11eT0VkmGkf0o0xacD3gMuAZcDHjDHLvJ2ViIiIeK1yoMPLQdWlS/KZ9iEdOAvYYq3dZq3tAX4KXOHxnERERMRj5QMhXXXpkoRSIaSXAjsiPt8ZHjvKGFNtjNlgjNlw4MCBSZ2ciIiIeGNefjYZaUZtGCUppUJINy5jg3aIWGvrrLUrrLUrZs2aNUnTEhERES+l+QxlhX6dOipJKRVC+k6gLOLzBcBuj+YiIiIiSaSi2E/9Qa2kS/JJhZD+ArDUGLPQGJMJXAU86vGcREREJAlUFOfQ2NyJtWrDKMll2od0a20f8DngCeBN4OfW2te9nZWIiIgkg/IiP+3dfTR39Hg9FZFB0r2ewGSw1j4OPO71PERERCS5VJYc6/BSnJvl8WxEjpn2K+kiIiIi0ZQX5QDQ0KTNo5JcFNJFREQkZZUVZWMMasMoSUchXURERFJWVnoa8/Jm0KiQLklGIV1ERERSWkVxjk4dlaSjkC4iIiIpraLYr5p0SToK6SIiIpLSyor8HGzvobOnz+upiBylkC4iIiIpbUFhNgA7Dx3xeCYixyiki4iISEorK3J6pe9QXbokEYV0ERERSWllhU5I10q6JBOFdBEREUlpJbmZZGekaSVdkopCuoiIiKQ0YwwLCrPZcUghXZKHQrqIiIikvLIiPzuaVe4iyUMhXURERFJemVbSJckopIuIiEjKW1Dop62rj9bOXq+nIgIopIuIiIhQVuT0StdquiQLhXQRERFJeQsK1StdkotCuoiIiKS8owcaaSVdkoRCuoiIiKS8/OwM8makq8OLJA2FdBERERHCbRi1ki5JQiFdREREBCgr9KsmXZKGQrqIiIgIToeXnYeOYK31eioiCukiIiIi4JS7dPeFONDe7fVURBTSRURERMApdwG0eVSSgkK6iIiICLCg0DnQaKc2j0oSUEgXERERQQcaSXJRSBcREREBsjPTKMnNUrmLJAWFdBEREZGwsqJs9UqXpKCQLiIiIhJWVqgDjSQ5KKSLiIiIhJUVZbO7pYu+/pDXU5EUp5AuIiIiErag0E9/yLL3cJfXU5EUp5AuIiIiElZa4LRh3N2ikC7eUkgXERERCSsN90rf1aK6dPGWQrqIiIhI2Pz8cEg/pDaM4i2FdBEREZGw7Mw0inMy2dWikC7eUkgXERERiVBamM1OraSLxxTSRURERCKUFmRrJV08p5AuIiIiEqG0IJvdLUew1no9FUlhCukiIiIiEUoLs+nqDdHc0eP1VCSFKaSLiIiIRJhfMNCGUSUv4h2FdBEREZEIAwcaqQ2jeEkhXURERCTCgkKtpIv3FNJFREREIuRnZ5CTmaY2jOIphXQRERGRCMYYSgvVhlG8pZAuIiIiMsRAG0YRryiki4iIiAwxXwcaiccU0kVERESGKC3MpqWzl47uPq+nIilKIV1ERERkiFL1ShePKaSLiIiIDHG0DaM6vIhHFNJFREREhigt8AOwUyvp4hGFdBEREZEhZs3MIt1n1OFFPKOQLiIiIjJEms8wr2CGyl3EMwrpIiIiIi5K1YZRPKSQLiIiIuKitMCvlXTxjEK6iIiIiIvSwmz2tXXR0xfyeiqSghTSRURERFwsKMjGWtjb2uX1VCQFKaSLiIiIuJgfPtBod6tKXmTyKaSLiIiIuJibPwOAPQrp4gGFdBEREREX8wuckL67ReUuMvkU0kVERERc+DPTyc/O0Eq6eEIhXURERCSKefkz2KOVdPGAQrqIiIhIFPMLstmt7i7iAYV0ERERkSjm5c9QuYt4QiFdREREJIr5Bdm0dPZypKff66lIilFIFxEREYlintowikcU0kVERESiONYrXXXpMrkU0kVERESimJ8fPnW0RSvpMrkU0kVERESi0Eq6eEUhXURERCSKGRlpFOdkqiZdJp1CuoiIiMgI5hXMYLcONJJJ5klIN8Z81BjzujEmZIxZMeRrXzHGbDHGbDLGXBIxfoYxZmP4a/9hjDHh8SxjzM/C438zxlRG3OdqY8zb4T9XT9b3JyIiItPHvPxsraTLpPNqJf014EPAM5GDxphlwFXAScClwBpjTFr4y2uBamBp+M+l4fHPAoestUuAu4A7w49VBNwCnA2cBdxijCmcwO9JREREpqH5+TPYo5V0mWSehHRr7ZvW2k0uX7oC+Km1tttaux3YApxljJkH5Flr/2KttcB/AR+IuM8D4b//ElgZXmW/BHjSWttsrT0EPMmxYC8iIiISk3kF2bR199HW1ev1VCSFpHs9gSFKgb9GfL4zPNYb/vvQ8YH77ACw1vYZY1qB4shxl/sMYoypxlmlB2g3xri9gPBSCXDQ60nIlKPrRsZC142MRUpcN3l3ej2DaSclrptRVET7woSFdGPMH4G5Ll+qsdY+Eu1uLmN2hPGx3mfwoLV1QF2UOXnOGLPBWrti9FuKHKPrRsZC142Mha4bGQtdNyObsJBurb1oDHfbCZRFfL4A2B0eX+AyHnmfncaYdCAfaA6PXzDkPk+PYU4iIiIiIpMq2VowPgpcFe7YshBng+jz1to9QJsx5pxwvfmngEci7jPQueUjwFPhuvUngPcaYwrDG0bfGx4TEREREUlqntSkG2M+CPw/YBbwW2PMy9baS6y1rxtjfg68AfQB11tr+8N3Ww38CMgGfhf+A/BD4EFjzBacFfSrAKy1zcaYrwEvhG93u7W2eeK/uwmRtKU4ktR03chY6LqRsdB1I2Oh62YExll0FhERERGRZJFs5S4iIiIiIilPIV1EREREJMkopCcZY0y9MWajMeZlY8yG8FiRMeZJY8zb4Y86OTXFGWPuM8bsN8a8FjEW9ToxxnzFGLPFGLPJGHOJN7OWZBDl2rnVGLMr/LzzsjFmVcTXdO2kOGNMmTFmvTHmTWPM68aYG8Ljes6REY1w7eg5JwaqSU8yxph6YIW19mDE2DeBZmvtHcaYLwOF1tp/9WqO4j1jzLuAduC/rLUnh8dcrxNjzDLgIeAsYD7wR+C4iE3ZkkKiXDu3Au3W2m8Nua2uHSF86vc8a+1LxpiZwIs4p35/Gj3nyAhGuHauRM85o9JK+tRwBfBA+O8P4FzgksKstc/gdDOKFO06uQL4qbW221q7HdiC8wQoKSjKtRONrh3BWrvHWvtS+O9twJs4J3jrOUdGNMK1E42unQgK6cnHAn8wxrxojKkOj80J94on/HG2Z7OTZBbtOikFdkTcbicjP0lKavqcMebVcDnMQNmCrh0ZxBhTCZwG/A0950gchlw7oOecUSmkJ5/zrLWnA5cB14ffmhYZD+Mypjo3ibQWWAycCuwBvh0e17UjRxljcoFfATdaaw+PdFOXMV03Kczl2tFzTgwU0pOMtXZ3+ON+4GGct3n2heu6Buq79ns3Q0li0a6TnUBZxO0WALsneW6SxKy1+6y1/dbaEPADjr29rGtHADDGZOCErKC19tfhYT3nyKjcrh0958RGIT2JGGNywhsrMMbkAO8FXgMeBa4O3+xq4BFvZihJLtp18ihwlTEmyxizEFgKPO/B/CRJDQStsA/iPO+Arh0BjDEG53TvN62134n4kp5zZETRrh0958Qm3esJyCBzgIeda5p04CfW2t8bY14Afm6M+SzQCHzUwzlKEjDGPARcAJQYY3YCtwB34HKdWGtfN8b8HHgD6AOuT9Wd8hL12rnAGHMqztvK9cA/ga4dOeo84JPARmPMy+Gxr6LnHBldtGvnY3rOGZ1aMIqIiIiIJBmVu4iIiIiIJBmFdBERERGRJKOQLiIiIiKSZBTSRURERESSjEK6iIiIiEiSUUgXEREREUkyCukiIiIiIknm/wesRrXnfx6yGgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PollyPlot(x_train[['horsepower']], x_test[['horsepower']], y_train, y_test, poly,pr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Figur 4 A polynomial regression model, red dots represent training data, green dots represent test data, and the blue line represents the model prediction. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that the estimated function appears to track the data but around 200 horsepower, the function begins to diverge from the data points. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" R^2 of the training data:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.5567716902028981"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"poly.score(x_train_pr, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" R^2 of the test data:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-29.87162132967278"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"poly.score(x_test_pr, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see the R^2 for the training data is 0.5567 while the R^2 on the test data was -29.87. The lower the R^2, the worse the model, a Negative R^2 is a sign of overfitting."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see how the R^2 changes on the test data for different order polynomials and plot the results:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"Text(3, 0.75, 'Maximum R^2 ')"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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94/KysqkyzDr8ubNm8eAAQPo2bMnBxxwACtWrKBHjx5s2bKFkSNHUl9fz6pVq9i9ezdFRUVUVlbSvXt33nrrLbZt20ZlZSXbtm1j+fLlHHnkkWzYsIGtW7dy2GGHUVtbiyS2b9/Ozp07qaysZP369dTX11NeXs6e/8fnzZvHcccdB8DGjRupq6ujsrKy1f0zLVq0iMGDB1NeXs727dtZtmwZY8aMAWD9+vXU1dUxbNiwd993xYoVjBgxgrKy911kmK1bt/Laa69xxBFH5PTfvyPNnTv37YioyDozIrrMY9y4cWFmuVdeXh4vv/xyfOxjH4tt27bFscceG08++WScf/75ERFRV1cXu3btioiIGTNmxEc/+tGIiGhsbIzTTjstHnzwwRg3blw888wzERFx7733xnXXXRcREVdddVVceumlsXv37nj44Yejd+/e8corr0RjY2Mcf/zxMW/evHdr2OPXv/51XHXVVW3qn+mMM86IOXPmRETEHXfcEbfeemu7/l2uu+66+OpXv9quvkkBaqKZz9SSXCZT+uJedwHFpE7C+UaT+V8kdWEzgBLgSKAiIjZIqiV1HHkj0BAR1bms1cza5phjjqG2tpZf/vKXfPCDH3zfvLq6Oq666iqWLFmCJHbtSl3RpKioiPvuu49jjjmGa6+9lgkTsl+A94ILLkASRx99NAMHDuToo48GYMyYMdTW1jJ27N7Pq2xP/yuvvJL6+noaGxt58cUX2/zv8fOf/5yamhpmzZrV5r75Kme/QSh1B667SV2tczRwuTIuVwwQEf8ZEWMjYiypewLMiogNGU3OTM93OJjloQsvvJAvfOELXH755e+b/uUvf5kzzzyT+fPn8/vf/57t298753DJkiX06tWLNWvWNPu+3bp1A1KBsuf5ntcNDal7FWWeLJ75/q3t39QvfvELVqxYwRVXXMF111231/VuaubMmXz961/nkUceed/yCl0uf6QeDyyN1JUmd5I6w/OivbS/HPhlDusxsw529dVX85WvfOXdb+h71NXVMWhQ6krn99133/um33DDDcyePZv169fzm9/8pt3LHjhwIAsXLmT37t089NBD7X6fTKWlpXzta1/jueeeY+HCha3qM2/ePK699loeeeQRBgwY0CF15ItcBsQgMq5sCaymmWvjS+pJ6lIHmafnB6nLAcyVNKW5hUiaotSNXmrW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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"Rsqu_test = []\n",
"\n",
"order = [1, 2, 3, 4]\n",
"for n in order:\n",
" pr = PolynomialFeatures(degree=n)\n",
" \n",
" x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
" \n",
" x_test_pr = pr.fit_transform(x_test[['horsepower']]) \n",
" \n",
" lr.fit(x_train_pr, y_train)\n",
" \n",
" Rsqu_test.append(lr.score(x_test_pr, y_test))\n",
"\n",
"plt.plot(order, Rsqu_test)\n",
"plt.xlabel('order')\n",
"plt.ylabel('R^2')\n",
"plt.title('R^2 Using Test Data')\n",
"plt.text(3, 0.75, 'Maximum R^2 ') "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see the R^2 gradually increases until an order three polynomial is used. Then the R^2 dramatically decreases at four."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following function will be used in the next section; please run the cell."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"def f(order, test_data):\n",
" x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=test_data, random_state=0)\n",
" pr = PolynomialFeatures(degree=order)\n",
" x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
" x_test_pr = pr.fit_transform(x_test[['horsepower']])\n",
" poly = LinearRegression()\n",
" poly.fit(x_train_pr,y_train)\n",
" PollyPlot(x_train[['horsepower']], x_test[['horsepower']], y_train,y_test, poly, pr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following interface allows you to experiment with different polynomial orders and different amounts of data. "
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9699ed93d1c14c5e890afcfcb6f68a37",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=3, description='order', max=6), FloatSlider(value=0.45, description='tes…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<function __main__.f(order, test_data)>"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"interact(f, order=(0, 6, 1), test_data=(0.05, 0.95, 0.05))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4a):</h1>\n",
"\n",
"<b>We can perform polynomial transformations with more than one feature. Create a \"PolynomialFeatures\" object \"pr1\" of degree two?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr1 = PolynomialFeatures(degree=2)\n",
"pr1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"pr1=PolynomialFeatures(degree=2)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4b): </h1>\n",
"\n",
"<b> \n",
" Transform the training and testing samples for the features 'horsepower', 'curb-weight', 'engine-size' and 'highway-mpg'. Hint: use the method \"fit_transform\" \n",
"?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"x_train_pr1 = pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"x_test_pr1 = pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"x_train_pr1=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"\n",
"x_test_pr1=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- The answer is below:\n",
"\n",
"x_train_pr1=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"x_test_pr1=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4c): </h1>\n",
"<b> \n",
"How many dimensions does the new feature have? Hint: use the attribute \"shape\"\n",
"</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(110, 70)"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_train_pr1.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"There are now 15 features: x_train_pr1.shape \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4d): </h1>\n",
"\n",
"<b> \n",
"Create a linear regression model \"poly1\" and train the object using the method \"fit\" using the polynomial features?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"poly1 = LinearRegression().fit(x_train_pr1, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"poly1=linear_model.LinearRegression().fit(x_train_pr1,y_train)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4e): </h1>\n",
"<b>Use the method \"predict\" to predict an output on the polynomial features, then use the function \"DistributionPlot\" to display the distribution of the predicted output vs the test data?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"image/png": "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4YILLmDy5MnccsstbLTRRkyePJnJkydz4IEHtqvN5kF933335frrr6+LU3Qa1CVJkqo56STYaafOvZx0Upurffvttxk/fjyXXnrpUkH95z//OQMHDmTQoEGccsopjBo1igkTJnDYYYfR0NDA/Pnz6d27N7NmzQJgwoQJ7LTTTgA89NBDbLvttmyxxRZsu+22TJkypdV+DB8+fIn1jx49mqFDh7LKKqsUauu0007jl7/8ZdPtAQMGMG3aNAD+/Oc/87nPfY6GhgaOPfZYFi9ezOLFiznyyCMZMGAAAwcO5Ne//vVSbd51110MHjyYrl1bP8P4s88+y+67786WW27JjjvuyDPPPAPAyJEjGTBgAIMGDWLnnXdm/vz5nH766Vx99dVNo/ERwQ477MAtt9zS6jrK4HnUJUmS6siNN97I0KFD2XjjjenRoweTJk1i8ODB3Hrrrdx44408+OCDrLLKKrz55pv06NGD3//+9/zyl79kyJAhrba76aabcs8999C1a1fuuOMO/vu//5vrr7++xfmHDh3KN77xDWbPnk3Pnj0ZOXIk3/nOdzrUVqWnnnqKv/zlL4wfP55u3brx7W9/m6uvvprNNtuMV155hccffxyAOXPmLLXs+PHj2XLLLdtcxzHHHMMf//hHNtpoI8aPH88JJ5zA2LFj+dnPfsa4ceNYZ511mDNnDt27d+cnP/kJjz/+OOeff37T8kOGDOHee+/lgAMOKLRNtWJQlyRJqqYiuJXp2muv5aR85P3QQw/l2muvZfDgwdxxxx0cddRRrLLKKgD06NGjXe3OnTuXI444gmeffZaIYOHCha3Ov+KKK7LPPvswatQohg0bxuTJk9ltt9061FalO++8k4kTJ7LVVlsBMH/+fNZee22+/OUv8/zzz/Od73yHvfbaq2ldlWbMmEG/fv1abX/OnDk88MADDBs2rGnaokWLANhuu+04/PDDOeigg1oN4WuvvXanlxN1hEFdkiSpTsyePZu77rqLxx9/nIhg8eLFRAQ///nPSSkVOhd3165d+eCDDwCWqLP+8Y9/zM4778zo0aOZNm1aU0lMa4YPH86ZZ55JSol9992Xbt26FW6rsh+VfUkpccQRR3DOOecstcyjjz7KbbfdxgUXXMB1113HZZddtsT93bt3b7N2PKXEWmutxeTJk5e675JLLuHBBx/k5ptvZtCgQTz22GNV21iwYAHdu3dvdT1lsEZdkiSpTowaNYrDDz+cF198kWnTpvHyyy/Tp08f7rvvPnbbbTcuu+wy3n33XQDefPNNAFZbbTXmzZvX1Ebv3r2ZOHEiwBLlKHPnzmW99dYDsgNQi9h555159tlnueCCCxg+fHi72urduzeTJk0CsgM2X3jhBQB23XVXRo0axRtvvNG0HS+++CKzZs3igw8+YNiwYZxxxhlNy1bq168fU6dObbXPa665Juuuuy6jR48G4IMPPuDRRx8F4Pnnn2frrbfmjDPOYM011+SVV15Zav8BPPPMMwwYMKCt3VNzBnVJkqQ6ce2117L//vsvMW3YsGFcc801DB06lH322YchQ4bQ0NDQdKDmkUceyXHHHdd0MOlPf/pTTjzxRHbYYQe6dOnS1M5//dd/ceqpp7LddtuxePHiQv1ZYYUVGDZsGLNnz2bHHXdsV1vDhg3jzTffpKGhgREjRrDxxhsD0L9/f84880x22203Nt98c770pS8xY8YMXnnlFXbaaScaGho48sgjq46477HHHtxzzz1t9nvkyJFcdNFFDBo0iM0224ybb74ZgO9973sMHDiQgQMH8sUvfpEBAwawyy678Oijj7LFFls0ndrx7rvvZs899yy0j2opUkrLug91aciQIWnChAnLuhuSJKlETz31VJs10Fq29t9/f37+85/Tt2/fmrT/6quvcuSRRzJ27NhOb7va8ysiJqaUqh4J7Ii6JEmS/m2ce+65zJgxo2btv/zyy0ucVnJZ8mBSSZIk/dvYZJNN2GSTTWrW/uc///matd1ejqhLkiRJdcigLkmSJNUhg7okSZJUhwzqKm7BAviv/4K5c5d1TyRJkj72DOoq7g9/gF/8AurkSGhJkj6OunTpQkNDAwMGDOCggw5q+oGjjhg3bhx77703AGPGjOHcc89tcd45c+Zw4YUXtnsdp5122lJnSRk3bhzbbLPNEtMWLVrEOuus0+oZW6q11dkOPPBAnn/+eT7/+c/T0NDAZz7zGXr16kVDQwMNDQ1MmzatXe3dcMMNPP300023TzrppELnei/CoK7i5szJ/hb4+WJJktQx3bt3Z/LkyTz++OOsuOKKXHTRRUvcn1Ligw8+aHe7++yzD6ecckqL93c0qFez4447Mn369CVC7x133MGAAQNYd911O2UdHfHEE0+wePFiNtxwQx588EEmT57M6aefziGHHMLkyZOZPHkyvXv3blebzYP6d77znao/1tQRBnVJkqQqTjoJdtqpcy8nndS+Puywww5MnTqVadOm0a9fP7797W8zePBgXn75ZcaOHcs222zD4MGDOeigg3j77bcB+Mc//sGmm27K9ttvzw033NDU1uWXX84JJ5wAwOuvv87+++/PoEGDGDRoEPfffz+nnHIKzz33HA0NDZx88skA/OIXv2CrrbZi880356c//WlTW2eddRabbLIJX/ziF5kyZcpS/V5hhRU46KCD+Mtf/tI0beTIkQwfPhyASy65hK222opBgwYxbNiwqt8a7LTTTjT++OSsWbOaAvTixYs5+eSTm/r1hz/8AYAZM2aw4447Nn0bce+99y7V5tVXX82+++7b5n6/9dZbm/btIYccwjvvvAPAySefTP/+/dl88835wQ9+wL333sstt9zC9773vabR+I022ogZM2Ywc+bMNtfTFoO6imscSffXbCVJqrlFixZx6623MnDgQACmTJnC4YcfziOPPMKqq67KmWeeyR133MGkSZMYMmQI5513HgsWLOCb3/wmN910E/feey+vvfZa1ba/+93v8oUvfIFHH32USZMmsdlmm3Huueey0UYbMXnyZH7xi18wduxYnn32WR566CEmT57MxIkTueeee5g4cSIjR47kkUce4YYbbuDhhx+uuo7hw4czcuRIAN577z1uueUWhg0bBsABBxzAww8/zKOPPkq/fv249NJLC++XSy+9lNVXX52HH36Yhx9+mEsuuYQXXniBa665ht13353Jkyfz6KOP0tDQsNSy48ePZ8stt2y1/TfeeINzzz2XO++8k0mTJrH55pvzm9/8htdff51bbrmFJ554gscee4xTTz2VHXbYgT333JNf//rXS4zGb7HFFtx///2Ft6kl/uCRirPkRZK0HDn//GWz3vnz5zeFzB122IGjjz6aV199lQ022ICtt94agAceeIAnn3yS7bbbDoD333+fbbbZhqeffpo+ffrQt29fAL761a9y8cUXL7WOu+66iyuvvBLIauJXX311/vWvfy0xz9ixYxk7dixbbLEFAG+//TbPPvss8+bNY//992eVVVYBspKaarbaaivefvttpkyZwlNPPcXWW2/NmmuuCcDjjz/Oj370I+bMmcPbb7/N7rvvXnj/jB07lscee4xRo0YBMHfuXJ599lm22morvv71r7Nw4UL222+/qkF9xowZ9OrVq9X277//fp588km23XZbINu322+/PT169GCFFVbgm9/8JnvttVdT7X81a6+9Nq+++mrhbWqJQV3t54i6JEk101ij3tyqq67adD2lxJe+9CWuvfbaJeaZPHky0UkDayklTj31VI499tglpp9//vmF13HooYcycuRInnrqqaayF4AjjzySG2+8kUGDBnH55Zczbty4pZbt2rVrUy3+ggULlujX7373u6rh/p577uHvf/87X/va1zj55JM5/PDDl7i/e/fuS7RVTUqJoUOHcsrwEMcAACAASURBVNVVVy1134QJE7j99tsZOXIkI0aMYOzYsVXbWLBgAd27d291PUXUtPQlIoZGxJSImBoRSx29EJnf5vc/FhGD21o2InpExO0R8Wz+d82K+07N558SEbvn01aLiMkVl1kRsYw+I/+bs/RFkqS6sPXWWzN+/HimTp0KwLvvvsszzzzDpptuygsvvMBzzz0HsFSQb7TrrrsyYsQIIKv5fuutt1httdWYN29e0zy77747l112WVPt+yuvvMIbb7zBjjvuyOjRo5k/fz7z5s3jpptuarGfw4cP589//jN33XXXEiPv8+bNY91112XhwoVcffXVVZft3bs3EydOBGgaPW/s14gRI1i4cCEAzzzzDO+88w4vvvgia6+9Nt/85jc5+uijmTRp0lJt9uvXr2mftWTbbbfln//8J88//zwA77zzTtM3CW+99RZ77703v/71r3nkkUcAltpvjX0aMGBAq+spomZBPSK6ABcAewD9geER0b/ZbHsAffPLMcCIAsueAtyZUuoL3JnfJr//UGAzYChwYUR0SSnNSyk1NF6AF4EPj6xQcQZ1SZLqQq9evbj88ssZPnw4m2++OVtvvTVPP/00K6+8MhdffDF77bUX22+/PRtssEHV5X/zm99w9913M3DgQLbcckueeOIJevbsyXbbbceAAQM4+eST2W233fjKV77CNttsw8CBAznwwAOZN29e0wGWDQ0NDBs2jB122KHFfvbv359VVlmFXXbZZYlvBM444ww+//nP86UvfYlNN9206rLf//73GTFiBNtuuy2zZs1qmv6Nb3yD/v37M3jwYAYMGMCxxx7LokWLGDduHA0NDWyxxRZcf/31nHjiiUu1uddee1Udva+0zjrr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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"yhat_test1 = poly1.predict(x_test_pr1)\n",
"Title='Distribution Plot of Predicted Value Using Test Data vs Data Distribution of Test Data'\n",
"DistributionPlot(y_test, yhat_test1, \"Actual Values (Test)\", \"Predicted Values (Test)\", Title)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"yhat_test1=poly1.predict(x_test_pr1)\n",
"Title='Distribution Plot of Predicted Value Using Test Data vs Data Distribution of Test Data'\n",
"DistributionPlot(y_test, yhat_test1, \"Actual Values (Test)\", \"Predicted Values (Test)\", Title)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4f): </h1>\n",
"\n",
"<b>Use the distribution plot to determine the two regions were the predicted prices are less accurate than the actual prices.</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The predicted value is lower than actual value for cars where the price $ 10,000 range, conversely the predicted price is larger than the price cost in the $30, 000 to $40,000 range. As such the model is not as accurate in these ranges .\n",
" \n",
"-->\n",
"\n",
"<img src = \"https://ibm.box.com/shared/static/c35ipv9zeanu7ynsnppb8gjo2re5ugeg.png\" width = 700, align = \"center\">\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"ref3\">Part 3: Ridge regression</h2> "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" In this section, we will review Ridge Regression we will see how the parameter Alfa changes the model. Just a note here our test data will be used as validation data."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's perform a degree two polynomial transformation on our data. "
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"x_train_pr=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg','normalized-losses','symboling']])\n",
"x_test_pr=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg','normalized-losses','symboling']])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's import <b>Ridge</b> from the module <b>linear models</b>."
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import Ridge"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's create a Ridge regression object, setting the regularization parameter to 0.1 "
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"RigeModel=Ridge(alpha=0.1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Like regular regression, you can fit the model using the method <b>fit</b>."
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/linear_model/ridge.py:125: LinAlgWarning: scipy.linalg.solve\n",
"Ill-conditioned matrix detected. Result is not guaranteed to be accurate.\n",
"Reciprocal condition number1.029716e-16\n",
" overwrite_a=True).T\n"
]
},
{
"data": {
"text/plain": [
"Ridge(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RigeModel.fit(x_train_pr, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Similarly, you can obtain a prediction: "
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"yhat = RigeModel.predict(x_test_pr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's compare the first five predicted samples to our test set "
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"predicted: [ 6567.83081933 9597.97151399 20836.22326843 19347.69543463]\n",
"test set : [ 6295. 10698. 13860. 13499.]\n"
]
}
],
"source": [
"print('predicted:', yhat[0:4])\n",
"print('test set :', y_test[0:4].values)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We select the value of Alfa that minimizes the test error, for example, we can use a for loop. "
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Rsqu_test = []\n",
"Rsqu_train = []\n",
"dummy1 = []\n",
"ALFA = 10 * np.array(range(0,1000))\n",
"for alfa in ALFA:\n",
" RigeModel = Ridge(alpha=alfa) \n",
" RigeModel.fit(x_train_pr, y_train)\n",
" Rsqu_test.append(RigeModel.score(x_test_pr, y_test))\n",
" Rsqu_train.append(RigeModel.score(x_train_pr, y_train))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can plot out the value of R^2 for different Alphas "
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7fa5e0640cc0>"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAJNCAYAAAD6c1l4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzde5RlZWHn/d/TdenqK91Agwi03Too0IBcKkSDoxCVoBPjJSbByyT6TiQSnWSyMgwkk8SoK++bd0UdddQY4jiTcUh8DYpilvcMihoc6UZULl64CS0KDQj0vau6nvePc0716aL6evbp6q7+fNY66+yzL6eew1b5uuups0utNQAAQO/mzPQAAABgthDXAADQEHENAAANEdcAANAQcQ0AAA0R1wAA0JDBmR5Ak44++ui6YsWKmR4GAACz2Jo1ax6qtS6bbtusiusVK1Zk9erVMz0MAABmsVLKj3a1zbQQAABoiLgGAICGiGsAAGjIrJpzDQAwk8bGxrJ27dps2bJlpodCA0ZGRnLCCSdkaGhor48R1wAADVm7dm0WLVqUFStWpJQy08OhB7XWPPzww1m7dm1Wrly518eZFgIA0JAtW7bkqKOOEtazQCklRx111D7/FkJcAwA0SFjPHvtzLsU1AMBhbOHChUmS+++/P6985Sun3ef888/f471E3v3ud2fTpk2Tr1/84hfn0UcfbW6gbZ3x7sqjjz6aD3zgA43/3L0lrgEAyJOf/ORcffXV+3381Lj+zGc+kyVLljQxtH0irgEAaMTll1++U1j++Z//ed75zndmw4YNef7zn5+zzz47p59+ej71qU894dh77rknp512WpJk8+bNufjii3PGGWfkN37jN7J58+bJ/S699NKMjo5m1apVectb3pIkee9735v7778/F1xwQS644IIkrTtnP/TQQ0mSd73rXTnttNNy2mmn5d3vfvfkzzvllFPyhje8IatWrcqFF16408/puPvuu/PsZz87P/dzP5c//dM/nVy/q890xRVX5M4778yZZ56Zyy67bK8+e6NqrbPmcc4551QAgJly2223zejPv+mmm+pzn/vcydennHJK/dGPflTHxsbqY489Vmutdd26dfVpT3tanZiYqLXWumDBglprrXfffXddtWpVrbXWd77znfX1r399rbXWb3/723VgYKDeeOONtdZaH3744VprrePj4/V5z3te/fa3v11rrfUpT3lKXbdu3eTP7rxevXp1Pe200+qGDRvq+vXr66mnnlpvuummevfdd9eBgYH6rW99q9Za66/92q/Vj3zkI0/4TC95yUvq3/3d39Vaa33f+943Od5dfabuz7G7/fbWdOc0yeq6ix71VXwAAH3w1k/fmtvuf7zR9zz1yYvzlpes2uX2s846Kw8++GDuv//+rFu3LkuXLs3y5cszNjaWP/7jP87111+fOXPm5Mc//nEeeOCBPOlJT5r2fa6//vr83u/9XpLkjDPOyBlnnDG57WMf+1iuvPLKjI+P5yc/+Uluu+22nbZP9bWvfS0vf/nLs2DBgiTJK17xinz1q1/Nr/zKr2TlypU588wzkyTnnHNO7rnnnicc//Wvfz0f//jHkyT/9t/+21x++eVJWheIp/tMU+1qv1199l6JawCAWeSVr3xlrr766vz0pz/NxRdfnCS56qqrsm7duqxZsyZDQ0NZsWLFHr9ibrpvyrj77rvzjne8IzfeeGOWLl2a173udXt8n9aF3unNnTt3cnlgYGDaaSG7Gsvefqb9+ey9ENcAAH2wuyvM/XTxxRfnDW94Qx566KF85StfSZI89thjOeaYYzI0NJTrrrsuP/rRj3b7Hs997nNz1VVX5YILLsgtt9yS73znO0mSxx9/PAsWLMgRRxyRBx54IJ/97Gdz/vnnJ0kWLVqU9evX5+ijj37Ce73uda/LFVdckVprrrnmmnzkIx/Z689z3nnn5aMf/Whe+9rX5qqrrppcv6vP1BnHnvbrF3ENADCLrFq1KuvXr8/xxx+f4447Lknymte8Ji95yUsyOjqaM888MyeffPJu3+PSSy/N61//+pxxxhk588wzc+655yZJnvnMZ+ass87KqlWr8tSnPjXnnXfe5DGXXHJJXvSiF+W4447LddddN7n+7LPPzute97rJ9/jt3/7tnHXWWdNOAZnOe97znrz61a/Oe97znvzqr/7q5Ppdfaajjjoq5513Xk477bS86EUvyuWXX75Pn71XZXeX6g81o6OjdU/fwQgA0C+33357TjnllJkeBg2a7pyWUtbUWken299X8QEAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXPdq8+bkwguTz3xmpkcCABzmHn300XzgAx/Yr2Nf/OIX59FHH93tPn/2Z3+WL33pS/v1/lOtWLEip59+ek4//fSceuqp+ZM/+ZNs3bp1t8f08vkOFHHdq/vuS774xeTlL289AwDMkN3F5/bt23d77Gc+85ksWbJkt/u87W1vywte8IL9Ht9U1113Xb773e/mm9/8Zu66665ccsklu91fXB8OOvemHxhIXvrSpH2bUQCAA+2KK67InXfemTPPPDOXXXZZvvzlL+eCCy7Iq1/96px++ulJkpe97GU555xzsmrVqlx55ZWTx65YsSIPPfRQ7rnnnpxyyil5wxvekFWrVuXCCy/M5s2bkySve93rcvXVV0/u/5a3vCVnn312Tj/99Hzve99Lkqxbty4vfOELc/bZZ+d3fud38pSnPCUPPfTQbse9cOHCfPCDH8wnP/nJPPLII9mwYUOe//znT773pz71qWk/3672m0niuledX1+8//3JypXJv/k3yb/8y8yOCQA4LP3lX/5lnva0p+Xmm2/OX/3VXyVJvvnNb+Yv/uIvcttttyVJPvzhD2fNmjVZvXp13vve9+bhhx9+wvv88Ic/zJve9KbceuutWbJkST7+8Y9P+/OOPvro3HTTTbn00kvzjne8I0ny1re+Nb/4i7+Ym266KS9/+ctz77337tXYFy9enJUrV+aHP/xhRkZGcs011+Smm27Kddddlz/8wz9MrfUJn29X+82kwRn96bNBJ65POCH50peS5z0v+aVfSv7rf01+67eSUmZ2fADAzPgP/yG5+eZm3/PMM5N3v3ufDjn33HOzcuXKydfvfe97c8011yRJ7rvvvvzwhz/MUUcdtdMxK1euzJlnnpkkOeecc3LPPfdM+96veMUrJvf5xCc+kST52te+Nvn+F110UZYuXbrXY+2Eca01f/zHf5zrr78+c+bMyY9//OM88MAD0+4/3X5PetKT9vpnNs2V6151poWMjCTHHZd8+cvJOeckr399a5pI+1ckAAAzYcGCBZPLX/7yl/OlL30pN9xwQ7797W/nrLPOypZOy3SZO3fu5PLAwEDGx8enfe/Oft377O+V4/Xr1+eee+7J05/+9Fx11VVZt25d1qxZk5tvvjnHHnvstOPc2/0OJFeue9W5ct35D+GTn5z88z8n73pX8ra3JatWJRdfnLzxjclznuNKNgAcLvbxCnMTFi1alPXr1+9y+2OPPZalS5dm/vz5+d73vpdvfOMb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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 12\n",
"height = 10\n",
"plt.figure(figsize=(width, height))\n",
"\n",
"plt.plot(ALFA,Rsqu_test, label='validation data ')\n",
"plt.plot(ALFA,Rsqu_train, 'r', label='training Data ')\n",
"plt.xlabel('alpha')\n",
"plt.ylabel('R^2')\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Figure 6:The blue line represents the R^2 of the test data, and the red line represents the R^2 of the training data. The x-axis represents the different values of Alfa "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The red line in figure 6 represents the R^2 of the test data, as Alpha increases the R^2 decreases; therefore as Alfa increases the model performs worse on the test data. The blue line represents the R^2 on the validation data, as the value for Alfa increases the R^2 decreases. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #5): </h1>\n",
"\n",
"Perform Ridge regression and calculate the R^2 using the polynomial features, use the training data to train the model and test data to test the model. The parameter alpha should be set to 10.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.5418576440207072"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"RidgeModel = Ridge(alpha=10)\n",
"RidgeModel.fit(x_train_pr, y_train)\n",
"RidgeModel.score(x_test_pr, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"RigeModel = Ridge(alpha=0) \n",
"RigeModel.fit(x_train_pr, y_train)\n",
"RigeModel.score(x_test_pr, y_test)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"ref4\">Part 4: Grid Search</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The term Alfa is a hyperparameter, sklearn has the class <b>GridSearchCV</b> to make the process of finding the best hyperparameter simpler."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's import <b>GridSearchCV</b> from the module <b>model_selection</b>."
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.model_selection import GridSearchCV"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create a dictionary of parameter values:"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"[{'alpha': [0.001, 0.1, 1, 10, 100, 1000, 10000, 100000, 100000]}]"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"parameters1= [{'alpha': [0.001,0.1,1, 10, 100, 1000, 10000, 100000, 100000]}]\n",
"parameters1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a ridge regions object:"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RR=Ridge()\n",
"RR"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a ridge grid search object "
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Grid1 = GridSearchCV(RR, parameters1,cv=4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the model "
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
" DeprecationWarning)\n"
]
},
{
"data": {
"text/plain": [
"GridSearchCV(cv=4, error_score='raise-deprecating',\n",
" estimator=Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001),\n",
" fit_params=None, iid='warn', n_jobs=None,\n",
" param_grid=[{'alpha': [0.001, 0.1, 1, 10, 100, 1000, 10000, 100000, 100000]}],\n",
" pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
" scoring=None, verbose=0)"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Grid1.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The object finds the best parameter values on the validation data. We can obtain the estimator with the best parameters and assign it to the variable BestRR as follows:"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"Ridge(alpha=10000, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"BestRR=Grid1.best_estimator_\n",
"BestRR"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We now test our model on the test data "
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.8411649831036149"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"BestRR.score(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #6): </h1>\n",
"Perform a grid search for the alpha parameter and the normalization parameter, then find the best values of the parameters\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
" DeprecationWarning)\n"
]
},
{
"data": {
"text/plain": [
"Ridge(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=True, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"parameters2= [{'alpha': [0.001,0.1,1, 10, 100, 1000,10000,100000,100000],'normalize':[True,False]} ]\n",
"Grid2 = GridSearchCV(Ridge(), parameters2,cv=4)\n",
"Grid2.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']],y_data)\n",
"Grid2.best_estimator_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"parameters2= [{'alpha': [0.001,0.1,1, 10, 100, 1000,10000,100000,100000],'normalize':[True,False]} ]\n",
"Grid2 = GridSearchCV(Ridge(), parameters2,cv=4)\n",
"Grid2.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']],y_data)\n",
"Grid2.best_estimator_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook!</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/DA0101EN_edx_link_Notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment