Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save samruddhikhandale/349a730f3d387301e4af41f908533403 to your computer and use it in GitHub Desktop.
Save samruddhikhandale/349a730f3d387301e4af41f908533403 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=\"http://cocl.us/DA0101EN_NotbookLink_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>"
]
},
{
"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/cognitive_class_DA0101EN_objectstorage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"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": 6,
"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": 7,
"metadata": {
"collapsed": false,
"scrolled": 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",
" <th>0</th>\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",
" <th>1</th>\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",
" <th>2</th>\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",
" <th>3</th>\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",
" <th>4</th>\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": 7,
"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": 8,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"! pip install ipywidgets"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/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": 10,
"metadata": {
"collapsed": 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": 11,
"metadata": {
"collapsed": 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": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"y_data = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"drop price data in x data"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"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": 14,
"metadata": {
"collapsed": 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": 17,
"metadata": {
"collapsed": true
},
"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",
"from sklearn.model_selection import train_test_split\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])\n"
]
},
{
"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": 18,
"metadata": {
"collapsed": 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": 19,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lre=LinearRegression()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we fit the model using the feature horsepower "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 20,
"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": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.707688374146705"
]
},
"execution_count": 21,
"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": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.6449517437659684"
]
},
"execution_count": 22,
"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": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.7340722810055448"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"from sklearn.linear_model import LinearRegression\n",
"\n",
"xtrain2, xtest2, ytrain2, ytest2 = train_test_split(x_data,y_data,test_size=0.1,random_state=0)\n",
"\n",
"lr = LinearRegression()\n",
"lr.fit(xtrain2[['horsepower']],ytrain2)\n",
"\n",
"lr.score(xtest2[['horsepower']],ytest2)\n"
]
},
{
"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": 28,
"metadata": {
"collapsed": 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": 29,
"metadata": {
"collapsed": 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": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0.7746232 , 0.51716687, 0.74785353, 0.04839605])"
]
},
"execution_count": 30,
"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": 31,
"metadata": {
"collapsed": 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": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([20254142.84026704, 43745493.26505169, 12539630.34014931,\n",
" 17561927.72247591])"
]
},
"execution_count": 32,
"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": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.443196127755029"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"from sklearn.model_selection import cross_val_score\n",
"score1 = cross_val_score(lr,x_data[['horsepower']],y_data,cv=2)\n",
"score1[1]"
]
},
{
"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[1]\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": 35,
"metadata": {
"collapsed": true
},
"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": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([14141.63807508, 14141.63807508, 20814.29423473, 12745.03562306,\n",
" 14762.35027598])"
]
},
"execution_count": 36,
"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": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 37,
"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": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([11927.70699817, 11236.71672034, 6436.91775515, 21890.22064982,\n",
" 16667.18254832])"
]
},
"execution_count": 38,
"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": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([11349.16502418, 5914.48335385, 11243.76325987, 6662.03197043,\n",
" 15555.76936275])"
]
},
"execution_count": 39,
"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": 40,
"metadata": {
"collapsed": true
},
"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": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/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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7d+/n9WrV7Nnz55khyKVQM2aNWnevDnVqlUr0fYJnae9vMrKynIaiCoiIlKxLV++nHr16pGeno6fvE4kMZxzbN68mR07dtCqVat895nZTOdcVlFt6IqoIiIiUint2bNHCbuUCTMjPT29VGd1lLSLiIhIpaWEXcpKaV9rStpFRERERFKcknYRERERkRSnpF1EREQkicaMGYOZsWDBgiLXffHFF1m7tuBlb2I3adIkLrjggnzLdu3aRXp6Otu3b8+3/OKLL2bUqFHFaivennzySV5++WVuuOEGMjMzad++PbVq1SIzM5PMzExGjx4dc1tjxozhkUceKXSd9evX079//9KGnRAJm/JRRERERIr2+uuvc+aZZzJy5EhGjBhR6LovvvgiGRkZHHPMMXHbf506dejbty9jx45l2DB/+Zzt27fzySef8Nprr8VtP8V14MABXnjhBWbNmsVVV10FwIoVK7jggguYPXt21G2qVo2c3g4cOLDIfR511FE0atSIL774glNPPbXkwSeAknYRERGRW26BKIlgiWVmwpNPFrrKzp07mTp1KhMnTmTAgAH5kvaHH36Yf//736SlpXHeeeeRlZXFjBkzuOKKK6hVqxafffYZ7dq1Y8aMGTRu3JgZM2Zw6623MmnSJKZNm8Ytt9zC7t27qVWrFv/6179o06ZN1DiGDh3KM888k5e0jxkzhn79+lG7du2Y2hoxYgR169bl1ltvBSAjI4O3336bli1b8sorr/DXv/6Vffv2ceqpp/L0008DMHz4cGbMmIGZ8dOf/pRf/epX+drMycmhS5cuUZPwkDPPPJOzzjqLjz/+mEsuuYRWrVpx//33s2/fPpo0acIrr7zCkUceyT//+U/mzp3Lk08+yZVXXkl6ejrTp09n/fr1PPbYY3lJ/cUXX8yrr76qpF1EREREvLFjx9KvXz9OOukkGjVqxKxZs+jSpQvvvfceY8eO5YsvvqB27dps2bKFRo0a8fe//51HH32UrKzCp/Vu27YtU6ZMoWrVqkyYMIE777yTN998M+r6/fr145prrmHz5s2kp6czcuRIfvnLX5aorXDz58/njTfeYOrUqVSrVo1f/OIXvPrqq3To0IE1a9Ywd+5cALZt23bYtlOnTqVr164x7ef7779nypQpAGzdupUBAwZgZvzjH//gscce46GHHjpsmw0bNjB16lTmzJnD4MGD85L2rKws7r333pj2W5aUtIuIiIgU0SOeKK+//jq33HILAEOGDOH111+nS5cuTJgwgZ/85CfUrl0bgEaNGhWr3e3btzNs2DAWL16MmbF///5C169evToDBgxg9OjRDBo0iNmzZ9O3b98StRXuo48+YubMmWRnZwOwe/dujjzySC688EKWLVvGL3/5S/r375+3r3Dr1q2jXbt2Me1nyJAheX9/++23DB48mPXr17N3715OOumkiNtcfPHFmBkdO3ZkzZo1ecuPPPLIUo0bSBQl7SIiIiJJsHnzZnJycpg7dy5mRm5uLmbGww8/jHMupnm9q1atysGDBwHyXbjnD3/4Az179mTMmDGsWLGCs88+u8i2hg4dyr333otzjosuuohq1arF3FZ4HOGxOOcYNmwYDzzwwGHbfPXVV3zwwQc89dRTjBo1ihdeeCHf/bVq1Yr5YkR16tTJ+/uGG27gzjvv5Pzzz2fChAk8+OCDEbepUaNG3t/OuXyx16pVK6b9liXNHiMiIiKSBKNHj+aqq65i5cqVrFixglWrVtGqVSs++eQT+vbtywsvvMAPP/wAwJYtWwCoV68eO3bsyGujZcuWzJw5EyBfycr27dtp1qwZ4AevxqJnz54sXryYp556iqFDhxarrZYtWzJr1iwAZs2axfLlywE455xzGD16NBs2bMg7jpUrV7Jp0yYOHjzIoEGDuOeee/K2DdeuXTuWLFkSU+zhQvE653jppZeKvf2iRYvIyMgo9naJpqRdREREJAlef/31w2Y0GTRoEK+99hr9+vVjwIABZGVlkZmZyaOPPgrA1VdfzfXXX09mZia7d+/m7rvv5uabb6Z79+5UqVIlr53f/va33HHHHZxxxhnk5ubGFE9aWhqDBg1i8+bN9OjRo1htDRo0iC1btpCZmckzzzyTV5LSvn177r33Xvr27UvHjh3p06cP69atY82aNZx99tlkZmZy9dVXR+yJP++88/Lq1ItjxIgRDBw4kLPOOoumTZsWe/uJEyem5LSPFn46QLysrCw3Y8aMZIchIiIiCTR//vyYa6YlOQYOHMjDDz9M69aty2R/zjm6d+/OO++8Q4MGDeLefqTXnJnNdM4VPrIY9bSLiIiISIp68MEHWbduXZntb8OGDfz2t79NSMJeWhqIKiIiIiIpqU2bNoXOLx9vTZs2ZcCAAWW2v+JQT7uIiIiISIpT0i4iIiIikuKUtIuIiIiIpDjVtIsIOAcrV8KMGf7fgQPw0EMQNn2YiIiIJI962kUquzvugCZNoFUruOwyePRReOwx+Mtfkh2ZiEiFV6VKFTIzM8nIyOCyyy7Lu5hSSUyaNIkLLrgAgHHjxkW9EijAtm3bePrpp4u9jxEjRuTNGR++39NOOy3fsgMHDtC0adNCZ36J1Fa8XXrppSxbtoxTTz2VzMxMjjvuOJo0aUJmZiaZmZmsWLEi5rZ+//vfM3HixELXGTt2LPfcc08po45MSbtIZfbll/Dgg5CdDc88A9Onw65dcOGF8Pvfw+LFyY5QRKRCq1WrFrNnz2bu3LlUr16df/zjH/nud85x8ODBYrc7YMAAbr/99qj3lzRpj6RHjx6sXr06XwI8YcIEMjIyOProo+Oyj5KYN28eubm5HH/88XzxxRfMnj2bP//5z1x++eXMnj2b2bNn07Jly3zbFHYhqvvuu4+ePXsWus+LLrqIN998kz179sTjEPJR0i5SmT34INSvD6+/DtdfD1lZUKOGT+Br1IBrroESfFmIiJQ3t9wCZ58d33+33FK8GLp3786SJUtYsWIF7dq14xe/+AVdunRh1apVjB8/ntNOO40uXbpw2WWXsXPnTgDef/992rZty5lnnslbb72V19aLL77IjTfeCMB3333HwIED6dSpE506deLTTz/l9ttvZ+nSpWRmZnLbbbcB8Mgjj5CdnU3Hjh25++6789q67777aNOmDb1792bhwoWHxZ2WlsZll13GG2+8kbds5MiRDB06FIDnnnuO7OxsOnXqxKBBgyKeTTj77LMJXdhy06ZNecl0bm4ut912W15c//d//wfAunXr6NGjR95Zio8//viwNl999VUuuuiiQh/zAwcO0LBhQ+666y5OOeUUpk2bxt133012djYZGRlcf/31hC5EeuWVVzJ27FgAmjdvzogRI+jcuTMdO3Zk0aJFAJgZ3bt359133y10vyWhpF2kslq0CP7zH/jFL6Bhw/z3NWsGjz8OU6ZAgV4fERGJvwMHDvDee+9x8sknA7Bw4UKuuuoqvvzyS+rUqcO9997LhAkTmDVrFllZWTz++OPs2bOHa6+9lv/97398/PHHrF+/PmLbN910E2eddRZfffUVs2bNokOHDjz44IOccMIJzJ49m0ceeYTx48ezePFipk2bxuzZs5k5cyZTpkxh5syZjBw5ki+//JK33nqL6dOnR9zH0KFDGTlyJAB79+7l3XffZdCgQQBccsklTJ8+na+++op27drx/PPPx/y4PP/88zRo0IDp06czffp0nnvuOZYvX85rr73Gueeey+zZs/nqq6/IzMw8bNupU6fStWvXIvexfft2unTpwrRp0zjttNO4+eabmT59OnPmzGH79u28//77Ebdr2rQpX375Jddccw2PP/543vKsrKyIPyJKSwNRRSqrhx/2venRuoJ+8hMYORJ+9zvo3x9atCjb+EREytCTTyZnv7t3785LOLt3787w4cPX6VwoAAAgAElEQVRZu3YtLVq0oFu3bgB8/vnnfPPNN5xxxhkA7Nu3j9NOO40FCxbQqlUrWrduDfie4GefffawfeTk5PDyyy8Dvoa+QYMGbN26Nd8648ePZ/z48XTu3BmAnTt3snjxYnbs2MHAgQOpXbs2QNQLD2VnZ7Nz504WLlzI/Pnz6datG0cccQQAc+fO5a677mLbtm3s3LmTc889N+bHZ/z48Xz99deMHj0a8An24sWLyc7O5qc//Sn79+/n4osvjpi0r1u3jiZNmhS5j+rVqzNw4MC8/3/00Uc88sgj7Nmzh02bNtG1a1fOO++8w7a75JJLAOjatWu+nvUjjzyStWvXxnyMsVLSLlIZrVoFL78M110HTZtGXscMnnsOMjLgZz+D99/3y0REJG5CNe0F1alTJ+9v5xx9+vTh9ddfz7fO7NmzsTh9LjvnuOOOO7juuuvyLX/yySdj3seQIUMYOXIk8+fPzyuNAbj66qsZO3YsnTp14sUXX2TSpEmHbVu1atW82v3wenDnHH/7298iJvpTpkzhnXfe4cc//jG33XYbV111Vb77a9WqFVNtea1atfKO8YcffuDGG29k1qxZNGvWjLvuuitqGzVq1AD8D6EDBw7kLd+zZw+1atUqcr/FpfIYkcroscf8NI+33lr4ei1a+Lr38eMhrFZSRETKTrdu3Zg6dSpLliwBfGK5aNEi2rZty/Lly1m6dCnAYUl9yDnnnMMzzzwD+Brx77//nnr16rFjx468dc4991xeeOGFvFr5NWvWsGHDBnr06MGYMWPYvXs3O3bs4H//+1/UOIcOHcorr7xCTk5Ovh75HTt2cPTRR7N//35effXViNu2bNmSmTNnAuT1qofieuaZZ9i/fz8AixYtYteuXaxcuZIjjzySa6+9luHDhzNr1qzD2mzXrl3eYxar3bt3k5aWRuPGjdmxYwdvvvlmsbYPxZiRkVHs7YqipF2kstm40fegX3FFbCUvP/+5r3F/5ZXExyYiIodp0qQJL774IkOHDqVjx45069aNBQsWULNmTZ599ln69+/PmWeeSYson+l/+ctfmDhxIieffDJdu3Zl3rx5pKenc8YZZ5CRkcFtt91G3759+dGPfsRpp53GySefzKWXXsqOHTvo0qULl19+OZmZmQwaNIju3btHjbN9+/bUrl2bXr165TtTcM8993DqqafSp08f2rZtG3HbW2+9lWeeeYbTTz+dTZs25S2/5ppraN++PV26dCEjI4PrrruOAwcOMGnSJDIzM+ncuTNvvvkmN99882Ft9u/fP2KvfmHS09MZNmwYGRkZDBw4kFNPPbVY2wNMnDiR888/v9jbFcVCI2LlkKysLBcawSxS4fzhD3DffTBvHrRrF9s2v/qVn1FmwwY/24yISAUwf/582sX6OSjlzu7du+nZsydTp06lShldLHDt2rVcffXVjB8/PuL9kV5zZjbTOZdVVNvqaRepTHbsgL//HQYOjD1hB3/Rpb17oZDToiIiIqmkVq1a/OlPf2LNmjVlts9Vq1Yl7IJRGogqUpl88AFs2wYRTiMWqls3aN4cRo3yZTUiIhWEcy5ugzkl9RRnppp4KKycprTVLeppF6lMJk+GOnWgwOWmi5SW5nvb338ftm9PTGwiImWsZs2abN68udTJlEhRnHNs3ryZmjVrlrgN9bSLVCaTJ8Ppp0O1asXfdvBgeOIJGDcOfvzj+McmIlLGmjdvzurVq9m4cWOyQ5FKoGbNmjRv3rzE2ytpF6ksNm+GOXPg8stLtv2pp8Jxx/kSGSXtIlIBVKtWjVatWiU7DJGYqDxGpLIIXVL5rLNKtr2ZL5EJ1cWLiIhImVHSLlJZTJoENWtCdnbJ2xg8GPbv9yUyIiIiUmaUtItUFpMn+wGowWWXSyQ721+QadSo+MUlIiIiRVLSLlIZbN0KX31V8tKYkFCJzPjxvk0REREpE0raRSqDTz4B50qftMOhEpn//rf0bYmIiEhMlLSLVAaTJ/uymG7dSt9WVha0bAn/+U/p2xIREZGYKGkXqQwmT/ZTNpbiog55zOD882HKFDhwoPTtiYiISJGUtItUdN9/D7Nmxac0JqRHD9i5E778Mn5tioiISFRK2kUquqlT4eDB+Cft4HvbRUREJOGUtItUdJMnQ7VqfrrHeDn6aGjdWkm7iIhIGVHSLlLRTZ7s51evXTu+7Z51lr/K6sGD8W1XREREDqOkXaQi27ULZsyIb2lMSI8efq72uXPj37aIiIjko6RdpCL79FM/w0uiknbwPfkiIiKSUEraRSqyKVOgShU4/fT4t92ihf+nunYREZGEU9IuUpHNmgXt20O9eolpv0cPn7Q7l5j2RUREBFDSLlKxzZsHGRmJa/+ss2DDBli4MHH7EBERESXtIhXWzp2wciV06JC4fWi+dhERkTKhpF2kovrmG3+byKT9xBPhqKOUtIuIiCSYknaRimrePH+byKTdzJfITJ6sunYREZEEUtIuUlHNmwc1a8Lxxyd2Pz16wOrVsGJFYvcjIiJSiSlpF6mo5s6Ftm39lI+JFJoDXvO1i4iIJIySdpGKKtEzx4S0awfp6aprFxERSSAl7SIV0fbtvmQlkfXsIWlph+ZrFxERkYRQ0i5SEZXFzDHhevSApUthzZqy2Z+IiEglo6RdpCIqi5ljwnXr5m+nTy+b/YmIiFQyStpFKqJ586B2bWjZsmz216kTVK2qpF1ERCRBEpq0m1k/M1toZkvM7PYI99cwszeC+78ws5Zh990RLF9oZucW1aaZtQraWBy0WT1Y/oSZzQ7+LTKzbYk8ZpGUMG+eHyCaVka/y2vV8oNelbSLiIgkRMK+0c2sCvAUcB7QHhhqZu0LrDYc2OqcOxF4Ango2LY9MAToAPQDnjazKkW0+RDwhHOuNbA1aBvn3K+cc5nOuUzgb8BbiTpmkZQxd27ZlcaEZGfDjBm6yJKIiEgCJLIb7hRgiXNumXNuHzASuKjAOhcBLwV/jwbOMTMLlo90zu11zi0HlgTtRWwz2KZX0AZBmxdHiGko8HrcjlAkFW3dCuvWlc10j+Gys/2+ly0r2/2KiIhUAolM2psBq8L+vzpYFnEd59wBYDuQXsi20ZanA9uCNiLuy8xaAK2AnEjBmtnPzGyGmc3YuHFjjIcokoLKehBqSFaWv1WJjIiISNwlMmm3CMsKnjePtk68locbAox2zuVGWBfn3LPOuSznXFaTJk0irSJSPiQrac/IgJo1fYmMiIiIxFUik/bVwLFh/28OrI22jplVBRoAWwrZNtryTUDDoI1o+xqCSmOkMpg3D+rWheOOK9v9VqsGmZnqaRcREUmARCbt04HWwawu1fFJ87gC64wDhgV/XwrkOOdcsHxIMLtMK6A1MC1am8E2E4M2CNr8b2gnZtYGOAL4LAHHKZJa5s2D9u3BIp2ASrCsLJg5E3IjntASERGREkpY0h7Ul98IfADMB0Y55+aZ2Z/NbECw2vNAupktAX4N3B5sOw8YBXwDvA/c4JzLjdZm0NbvgF8HbaUHbYcMxQ9s1bQWUvElY+aYkOxs2LULFi5Mzv5FREQqqKpFr1Jyzrl3gXcLLPtj2N97gMuibHsfcF8sbQbLl+Fnl4nU1ojixC1Sbm3aBBs2JC9pDx+M2r7gDK8iIiJSUroiqkhFkqxBqCFt2vh6etW1i4iIxJWSdpGKJJS0l/Uc7SFVqkDXrppBRkREJM6UtItUJPPmQf360KzgJRHKUFYWzJ4N+/YlLwYREZEKRkm7SEUyb54vjUnGzDEh2dmwd68fECsiIiJxoaRdpCIJJe3JlJ3tb1UiIyIiEjdK2kUqim3b/OwxJ52U3DhatYJGjTQYVUREJI6UtItUFMuX+9vjj09uHGa+rl1Ju4iISNwoaRepKJYt87fJTtrBJ+1z58Lu3cmOREREpEJQ0i5SUaRKTzv4uvbcXD+LjIiIiJSaknaRimLZMjjiCGjQINmRHBqMqhIZERGRuFDSLlJRLFuWGr3sAMccA02bwqxZyY5ERESkQlDSLlJRpFLSbgaZmSqPERERiRMl7SIVQW4urFyZOkk7QOfOft74vXuTHYmIiEi5p6RdpCJYuxb27fNzpKeKzp3hwAH45ptkRyIiIlLuKWkXqQhSabrHkMxMf/vll8mNQ0REpAJQ0i5SEaTSdI8hJ54IdesqaRcREYkDJe0iFcGyZZCWBscdl+xIDklLg06dNBhVREQkDpS0i1QEy5bBscdCtWrJjiS/0AwyBw8mOxIREZFyTUm7SEWQStM9huvcGXbuhKVLkx2JiIhIuaakXaQiWL48dZN2UImMiIhIKSlpFynvfvgB1q9PzaS9QweoWlWDUUVEREpJSbtIeReaOSaV5mgPqVED2rdXT7uIiEgpKWkXKe8SOEf7vHnw29/6pgcM8BddLbbOndXTLiIiUkpK2kXKuzjP0b5tG/zlL9C1K2RkwBNPQOvWkJPjq13++lfIzS1Gg5mZvnxn/fq4xCciIlIZKWkXKe+WLfMXMWrcuNRN7dsHvXvDLbeAmU/e16yBDz7wve7du8PNN8OZZ/r/x0SDUUVEREpNSbtIebdsma9nNyt1U/feCzNnwhtvwIwZcNNNcOSR/r4WLeDdd+HVV2HJEp+Lv/NODI126uRvVSIjIiJSYkraRcq7OE33OG0a3H8/DBsGgwdHXscMfvQjmD8f2rWDa6/15TSFatjQ/6hQ0i4iIlJiStpFyjPn4nJhpR9+gKuugmOO8SUxRWncGF54Ab77Dm67LYYddO6s8hgREZFSUNIuUp5t2OAz7lJO93jHHbBwIbz4IjRoENs2XbvCb34D//ynH6RaqMxMWLwYduwoVZwiIiKVlZJ2kfIsDtM9fvSRnxHmppugV6/ibTtiBJxwgi+T+eGHQlYMDUb9+uuShikiIlKpKWkXKc9KOd3jtm1w9dXQpg088EDxt69dG557zv92uPvuQlYMJe2qaxcRESkRJe0i5Vmop71lyxJt/sgjsHYtvPyyT8BLomdP39P++ON+xpmIjjnGF8IraRcRESkRJe0i5dmyZXD00VCrVrE3PXAA/vUvOO88OOWU0oXx8MPQtCkMHw7790dYwUyDUUVEREpBSbtIeVaKmWPefx/WrfOJdmk1bOjr4r/+Gt58M8pKnTvD3LlRsnoREREpjJJ2kfKsFHO0P/+8v3DSBRfEJ5RLLoETT/TJe0SZmf6Sq998E58dioiIVCJK2kXKq337YNWqEiXt330Hb7/t52avVi0+4aSlwY03wmefwfTpEVYIDUZViYyIiEixKWkXKa9WrvQXVyrBHO0vv+xr2uNRGhPu6quhbl34298i3Nm6tR/tqsGoIiIixaakXaS8KuF0j8750pjTT4e2beMbUoMGPnEfOdL35udTpQp07KiedhERkRJQ0i5SXq1Y4W9btCjWZp9+6q9+Gu9e9pAbb/RjTZ99NsKdoRlknEvMzkVERCooJe0i5dXq1b6Q/JhjirXZ88/7EpbBgxMTVps20K8fPPOML7vPJzMTtm8/dJZAREREYqKkXaS8WrXKz9FetWrMm+zYAaNGweWX+8Q9UW66yU8nedj0jxqMKiIiUiJK2kXKq1Wr4Nhji7XJG2/Arl2JK40JOfdcP+70sOkfMzJ8bbsGo4qIiBSLknaR8mr16mIn7c8/D+3aQbduCYopkJYGv/wlfP45TJsWdketWn70q5J2ERGRYlHSLlIeOed72ps3j3mTBQt8Ej18OJglMLbAsGFQr16E6R9Dg1FFREQkZkraRcqjrVvhhx+K1dP+7rv+NlEDUAuqX98n7qNGwbZtYXd07gxr1sDGjWUTiIiISAWgpF2kPFq92t8WI2n/8ENfmVLMippSufJKP4PMuHFhCzMz/a1620VERGKmpF2kPFq1yt/GWB6zdy9Mngx9+iQwpghOOQWOO873tucJJe2qaxcREYmZknaR8iiUtMfYbf7pp7B7N/TuncCYIjDz5Tjjx/uKHgAaNfKZvJJ2ERGRmClpFymPVq/2UycedVRMq3/4oV/97LMTG1Ykgwf7K6SOHRu2UINRRUREikVJu0h5tGqVvxJqlSoxrf7hh36ax/r1ExxXBFlZ0KpVgRKZzp1h4UI/abyIiIgUSUm7SHlUjAsrbd4MM2eWfT17SKhEZsIEHwvg69qdg6+/Tk5QIiIi5YySdpHyqBgXVsrJ8flxspJ28En7gQMwZkywoHNnf6sSGRERkZgoaRcpb0IXVooxaf/wQ18Wc8opCY6rEJ07w4knhpXIHHusH5CqwagiIiIxUdIuUt5s3gx79sQ03aNzPmnv2ROqVi2D2KIIlcjk5ATXVDLzJTJK2kVERGKipF2kvCnGdI9Ll8KKFcktjQkZPBhyc+Gtt4IFnTvDnDm+bkZEREQKpaRdpLwpxtVQJ0zwt6mQtHfsCG3ahJXIdO7sr/q0YEFS4xIRESkPlLSLlDfFuBrqhx/66xi1bp3gmGIQKpGZNAm++45DV0bVYFQREZEiKWkXKW9WrYJq1aBp00JXy831NeR9+viEORUMHgwHD8Kbb+K73WvWVF27iIhIDJS0i5Q3q1dDs2aQVvjbd8YM2LYtNUpjQjp0gHbtYPRo/MjYjh2VtIuIiMQgoUm7mfUzs4VmtsTMbo9wfw0zeyO4/wszaxl23x3B8oVmdm5RbZpZq6CNxUGb1cPuG2xm35jZPDN7LXFHLFIGVq2KuTTGDM45pwxiipEZDBgAH38M27fjS2Rmz/bT3IiIiEhUCUvazawK8BRwHtAeGGpm7QusNhzY6pw7EXgCeCjYtj0wBOgA9AOeNrMqRbT5EPCEc641sDVoGzNrDdwBnOGc6wDckqBDFikbMc7R/uGHfqxn48ZlEFMxnH++nzBmwgR8gFu3wrffJjssERGRlJbInvZTgCXOuWXOuX3ASOCiAutcBLwU/D0aOMfMLFg+0jm31zm3HFgStBexzWCbXkEbBG1eHPx9LfCUc24rgHNuQwKOVaRsOBfT1VB374bPPoPevcsormI4/XRo0ADefZdDg1FVIiMiIlKoRCbtzYBVYf9fHSyLuI5z7gCwHUgvZNtoy9OBbUEbBfd1EnCSmU01s8/NrF+kYM3sZ2Y2w8xmbNy4sVgHKlJmNm6EffuKLI/58kvYvx/OOKOM4iqGqlXh3HN90n4wo6OvzdcMMiIiIoVKZNIeab6KgoWr0daJ13KAqkBr4GxgKPBPM2t42MrOPeucy3LOZTVp0iRCcyIpIMYLK02b5m+zsxMcTwmdfz6sXw+zF9X2s8iop11ERKRQiUzaVwPhmUVzYG20dcysKtAA2FLIttGWbwIaBm0U3Ndq4L/Ouf1Bqc1CfBIvUv7EeGGl6dN9Z/zRR5dBTCVw3nn+Nq9ERj3tIiIihUpk0j4daB3M6lIdP7B0XIF1xgHDgr8vBXKccy5YPiSYXaYVPsmeFq3NYJuJQRsEbf43+Hss0BPAzBrjy2WWxf1oRcpCMXraTzmlDOIpoSOP9GcB3nkHPxj1229h8+ZkhyUiIpKyEpa0B/XlNwIfAPOBUc65eWb2ZzMbEKz2PJBuZkuAXwO3B9vOA0YB3wDvAzc453KjtRm09Tvg10Fb6UHbBOtuNrNv8In9bc45ZQdSPq1aBdWrFzolzJYtsGRJ6pbGhJx/PnzxBWw6Pvh1od52ERGRqKoWvUrJOefeBd4tsOyPYX/vAS6Lsu19wH2xtBksX4afXabgcof/QfDrYoYvknpWr/Z1L4VcWGnGDH+byj3tAP37w5/+BB9s7MIV4JP2VJpUXkREJIXoiqgi5UkMc7RPn+5vu3Ytg3hKoWtXaNIE3plSz/8Q0WBUERGRqJS0i5QnMVwNddo0PyFLgwZlFFMJpaX5Aanvvw+5mV2VtIuIiBRCSbtIeXHwIKxZU2hPu3OpPwg1XP/+/oKoXzTuDwsW+KtCiYiIyGGUtIuUFxs2+CsmFZK0r1nj5z9P9UGoIX37QpUq8O7O7v5HyZw5yQ5JREQkJSlpFykvQtM9FlIeE6pnLy897Q0b+qu2vvNNK79AM8iIiIhEpKRdpLyI4cJK06ZB1arQqVMZxRQH558Ps7+pwZr67VTXLiIiEoWSdpHyIoYLK02f7hP2mjXLKKY4OP98f/veUT9R0i4iIhKFknaR8mLVKp+Np6dHvPvgQZ+0l5d69pCMDGjWDMa7PvD115Cbm+yQREREUo6SdpHyInRhJbOIdy9eDN9/X37q2UPMoHdv+GhtOw7u3gOLFiU7JBERkZSjpF2kvFizxndJRzFtmr8tbz3t4JP2LbtqMJtMlciIiIhEoKRdpLxYu7bQpH36dKhTB9q1K8OY4qR3b387oUo/Je0iIiIRKGkXKQ+c80n7McdEXWXaNOja1c97Xt4cdZSvbf+wzkUwc2aywxEREUk5StpFyoNt2/zVQqMk7fv2+SnOy1s9e7jeveHjXV3YPX2uH1UrIiIieZS0i5QHa9f62yhJ+5w5sHdv+axnD+nTB/bmVuPTnSfDwoXJDkdERCSlKGkXKQ+KSNrL25VQI+nRA6pWdXxIn0MHJCIiIoCSdpHyoYikfdo0aNwYWrQow5jirG5dOK0bTEjre2gqHBEREQGUtIuUD6Gk/eijI949cyZkZUWdwr3c6NPXmHUwk82fqjxGREQknJJ2kfJg7Vpo2BBq1z7srv37Yf586NQpCXHFWe/e4EgjZ05jX6QvIiIigJJ2kfKhkOkeFy3yifvJJ5dxTAmQnQ31a+1nwoGz4euvkx2OiIhIylDSLlIeFJK0z5njbzMyyjCeBKlaFXp2388EemswqoiISBgl7SLlQSFJ+9y5/oJKbduWcUwJ0vuCWizjBJZ9tDzZoYiIiKQMJe0iqe7gQVi3rtCe9jZtoEaNMo4rQXr38aNpJ3xWJ8mRiIiIpA4l7SKpbvNmX7ReSE97RSiNCWnTBprV/54J69rDjh3JDkdERCQlKGkXSXWFzNG+cycsW1YxBqGGmEGfU7/nI87h4PSZyQ5HREQkJShpF0l1hSTt33zjbytSTztA70sasIV0vhy7MtmhiIiIpAQl7SKprpCkPTRzTEXqaQc45+J6AORM0keUiIgIKGkXSX2hpP2oow67a+5cf72lVq3KOKYEO+ooaF9/FR8tPjbZoYiIiKQEJe0iqW7tWmjcOOL0MHPmQIcOkFYB38m9Tt7Ex3uy2bfqu2SHIiIiknQV8KtepIIpYo72ilbPHtLrvBr8QB2mvbYk2aGIiIgknZJ2kVQXJWnfuBG++67i1bOHnD2sBcZBct7bm+xQREREkk5Ju0iqi5K0hwahVtSe9iOa16FLrfnkfN042aGIiIgknZJ2kVSWmwvr10dM2ufO9bcVtacdoNeJq/hsaxt+2OWSHYqIiEhSKWkXSWUbNsDBg1F72hs3hqZNkxBXGenVC/ZRg6mj1iQ7FBERkaRS0i6SygqZoz00CNWsjGMqQ2f+uBVV2U/O6M3JDkVERCSplLSLpLIoSfvBgz5pr8ilMQB1u5xEt6ozyJlWL9mhiIiIJJWSdpFUFiVp//Zb2Lmz4g5CzWNGrxNWMmNTC7ZtS3YwIiIiyaOkXSSVrV3rr5xUoHA9NHNMRe9pB+jVEw5ShSn/3ZrsUERERJJGSbtIKlu71ifsVavmWxyaOaZDhyTEVMa6DW1FLX4g5z+bkh2KiIhI0ihpF0llhczR3qIF1K+fhJjKWI1unTkz7VNyvqiT7FBERESSRkm7SCqLkrSHZo6pFKpXp1eLZczZdAwbNiQ7GBERkeRQ0i6SyiIk7fv3w4IFlaOePaTXWbkATHxvT5IjERERSQ4l7SKpav9+f3GlAkn7woX+rkrT0w50ufR46rOdnP9ovnYREamclLSLpKr16/1tgaQ9NAi1MvW0Vz2zG2cxmZzPaiY7FBERkaRQ0i6SqqLM0T5nDlSpAm3aJCGmZGnQgHOOWcCSLel8+22ygxERESl7StpFUlWUpH3+fDjxRKhRIwkxJVGvHgcAyPkwN8mRiIiIlD0l7SKpKkrSvnAhtG2bhHiSrMOAE2jCBnLe0qVRRUSk8lHSLpKq1q71F1Vq3DhvUW4uLFlSyUpjAmndz6AnE8mZWh3nkh2NiIhI2VLSLpKq1q6Fo4+GtENv0xUrYN++ypm007w556R/xZrt9Vi8ONnBiIiIlC0l7SKpKsIc7QsX+ttKmbQDvc7cC0DOR+pqFxGRykVJu0iqUtJ+mBP6ncSxfMtH43YlOxQREZEypaRdJFVFSNoXLID09Hxl7pWKdT+TXuQw8ZOqHDyY7GhERETKjpJ2kVS0Zw9s2RKxp72y9rID0L49verPZPPOmsyZk+xgREREyo6SdpFUtG6dvz366HyLK33SbkavcwyAnI/U1S4iIpWHknaRVBQhaf/+e1i/vpIn7UDzgdmcxEI+GrMj2aGIiIiUGSXtIqkolLQfdVTeoso+CDVP7970IofJ02qxf3+ygxERESkbStpFUlGEnnYl7YGjj6bXcUvYua86M2cmOxgREZGyoaRdJBWtXw9VqkCTJnmLFi70i044IYlxpYiz+9cFIOeDfUmOREREpGwoaRdJRevWQdOm+a6GumABHH88VK+exLhSRJOLTqcTs8kZq7p2ERGpHJS0i6Sides0c0xhunenV5XJTJ1Tnz17kh2MiIhI4iU0aTezfma20MyWmNntEe6vYWZvBPd/YWYtw+67I1i+0MzOLapNM2sVtLE4aLN6sPxqM9toZrODf9ck8phF4mLdunyDUA8ehMWLlbTnqV2bXhkb2JNbjc8+S3YwIiIiiZewpN3MqgBPAecB7YGhZta+wGrDga3OuROBJ4CHgm3bA0OADkA/4Gkzq1JEmw8BTzjnWgNbg7ZD3nDOZQb//pmAwxWJrwI97d9+66+3pKT9kB6XNKEKB8gZpxIZERGp+BLZ034KsMQ5t8w5tw8YCVxUYJ2LgJeCv0cD55iZBctHOhevN8wAACAASURBVOf2OueWA0uC9iK2GWzTK2iDoM2LE3hsIomTmwsbN2rmmCLUv/AsspnOR2/vTnYoIiIiCZfIpL0ZsCrs/6uDZRHXcc4dALYD6YVsG215OrAtaCPSvgaZ2ddmNtrMjo0UrJn9zMxmmNmMjRs3xn6UIvG2YYOvh4mQtLdtm6SYUlGnTpxT+zOmLU1n+/ZkByMiIpJYiUzaLcIyF+M68VoO8D+gpXOuIzCBQz37+Vd27lnnXJZzLqtJ2DR7ImUuyhztDRvmmwFS0tLoe/oucl0VJuYU/GgRERGpWBKZtK8Gwnu1mwNro61jZlWBBsCWQraNtnwT0DBoI9++nHObnXN7g+XPAV1LdVQiiRbhaqgLFvjSGIv087QS63Z5C+qyg/EjNyc7FBERkYRKZNI+HWgdzOpSHT+wdFyBdcYBw4K/LwVynHMuWD4kmF2mFdAamBatzWCbiUEbBG3+F8DMwufNGwDMj/NxisRXlJ521bMfrvp559CTiYz/qEqyQxEREUmohCXtQX35jcAH+ER5lHNunpn92cwGBKs9D6Sb2RLg18DtwbbzgFHAN8D7wA3OudxobQZt/Q74ddBWetA2wE1mNs/MvgJuAq5O1DGLxMX69f426GnfuRPWrFHSHlGzZvQ9ag5LNx/B0qXJDkZERCRxqha9Ssk5594F3i2w7I9hf+8BLouy7X3AfbG0GSxfhp9dpuDyO4A7ihu7SNKsWweNGkGNGgAsWuQXK2mPrM+FNeE5+HDMTk64tW6ywxEREUkIXRFVJNUUmKNdM8cU7qRrz+I4VvLhyE3JDkVERCRhlLSLpJoCV0NduBDS0uDEE5MYUwqzrK70rfspH33VmAMHil5fRESkPFLSLpJqCvS0L1gALVvmVctIQWb0PWsf2w/UZfqkXcmORkREJCGUtIukEuf8QFTNHFMs59zQFuMg45/RaFQREamYlLSLpJJt22Dv3ryk/eBBPxBVSXvhGp2bTXa12YyfVD3ZoYiIiCSEknaRVFJgjvY1a+CHH5S0Fyktjb6dvuOLLSeyfa1KZEREpOJR0i6SSgpcDVUzx8SuzxVNyaUqE//ydbJDERERiTsl7SKppEBPe2iO9pNOSlI85Ui3n3Wkru1k/Fs7kx2KiIhI3ClpF0kloauhBkn7kiVQu3a+cakSRfXaVel57BLGLz3BjwsQERGpQJS0i6SSdet8ll6vHuCT9hNPBLMkx1VO9O1fnaXueJa+PDXZoYiIiMSVknaRVBK6sFKQpYeSdolN31/4B+vDF1YlORIREZH4UtIukkrCLqyUmwtLlyppL47WHarTos5G3p/ZGPbvT3Y4IiIicaOkXSSVhCXta9bAvn1K2ovDDPqfvYsJ+89iz1vvJjscERGRuFHSLpJKwq6GumSJX6SkvXguuP5YdlGXyY9OT3YoIiIicaOkXSRV7N4N27f/P3v3HSdVdf9//HVgl0V6L0pvCsZGs0eKqChiQ4TkazdGwVhABYOxN+xJLLFAoqag6C8CFlSKBRUpihBAYHdR2qL0JsWF8/vjcxfXZcvAzsyd8n4+HvO4u3funPtZk10+c+ZzPkdJezl1P7UiVTJ38dasRrBsWdjhiIiIRIWSdpFEUWRjpexsyMqCQw4JMaYkVLkynHpKPm9xFn7U6LDDERERiQol7SKJosjGStnZ0Lo1VNBv6X7r078K39KS+c9NsxW9IiIiSU7pgEiiKCZpV2nMgTnzTDu+9X1neO+9cIMRERGJgjKTdudcVedcheDrds65vs65zNiHJpJmCu2G6r2S9vI45BDoeIznrczz4Pnnww5HRESk3CKZaf8YqOycOwSYDFwO/COWQYmkpbw8qFgR6tUjL8/WpSppP3Bn93V8nt+FtRM+//lTDBERkSQVSdLuvPc/AucDf/Xenwd0iG1YImkoLw8aNoQKFdQ5Jgr69IE9vgIT9/SCv/897HBERETKJaKk3Tl3PPBb4O3gXEbsQhJJU4U2VlLSXn4dO1ojnrcaXAEvvgh79oQdkoiIyAGLJGm/AbgN+K/3fr5zrhUwNbZhiaShIhsrZWZC06Yhx5TEKlSAs86CiVtP4qely2Hy5LBDEhEROWClJu3OuYrA2d77vt77kQDe+1zv/fVxiU4knRSZaW/ZEjL0mVa59OkDm36sxKe1+sDjj4cdjoiIyAErNWn33u8GOsUpFpH0lZ8PP/ygdo9RduqpUKkSvHXEbTBxIsyaFXZIIiIiBySS8pivnHPjnXMXO+fOL3jEPDKRdPLDD+A9NGqkdo9RVK0adO8Ob63uBLVrw/33hx2SiIjIAYkkaa8DrAN6AGcHjz6xDEok7RTaWGnNGtiyRUl7tPTpA4uWVGTJ/90Nb74J8+aFHZKIiMh+KzNp995fXszjingEJ5I2Cm2spM4x0dUnmGIYV+9KqF5ds+0iIpKUItkRtbJzbrBz7hnn3OiCRzyCE0kbhWbalbRHV4sW0KkTjH27CgweDK+9BosWhR2WiIjIfomkPOYVoBFwOvAR0ATYEsugRNJOQdLesCFLltjGqM2bhxtSKunfH2bMgG8vGAqVK8ODD4YdkoiIyH6JJGlv473/E7DNe/8ScBZwRGzDEkkzeXlQpw5kZZGdbQl7pUphB5U6LrzQjmOn1oNrroF//hOWLg03KBERkf0QSdL+U3Dc6Jz7FVATaBGziETSUZEe7SqNia6WLaFLF6uM4eab7aOMhx4KOywREZGIRZK0P++cqw3cDowHFgAPxzQqkXQT7IbqPSxZoqQ9Fvr3tzbtuTsOht/9DkaNggULwg5LREQkIpF0j3nRe7/Be/+x976V976B9/5v8QhOJG0EM+3r18OmTUraY2FvicxY4K67rJPMDTdYf3wREZEEV2LS7pwb4py7spjzf3DO3RjbsETSiPd7k3Z1jomd5s3h2GODEpl69eCee2DSJBg3LuzQREREylTaTPsVWOeYop4PnhORaNiwAXbtgkaNlLTHWP/+8OWXtm6Aa6+Fww+HIUNgx46wQxMRESlVaUm7997vKubkTsDFLiSRNFOkR7tztnBSoq9fPzuOHQtkZMCf/2xdZB57LNS4REREylJqTbtzrmEk50SkHIrshtq0qbUSl+hr1gyOPz4okQHo2RPOPx8eeABWrAg1NhERkdKUlrQ/ArztnDvFOVc9eHQDJgCPxiU6kXRQZKZdpTGx1b8/zJkDixcHJx59FHbvhmHDQo1LRESkNCUm7d77l4E/AfcA3wJLgbuBO4NNlkQkGpS0x9UvSmTAapFuvRX+/W+YOjW0uEREREpTanmM9/5d7/0p3vu63vt6wdfvxis4kbSQlwdVqrAxvxpr1yppj7UmTeDEEwuVyAAMH27/4a+8ErZtCy02ERGRkkSyuZKIxFLQ7jEn19Z3t24dcjxp4MILYe5cWLgwOFGlCoweDd9+C7fdFmZoIiIixVLSLhK2YDfU3Fz7Vkl77A0YYM1jRo8udPLkk+H66+Gvf4WPPgotNhERkeKUtrnSDcHxxPiFI5KGgpn2gqRd7R5jr2FDOPtseOkla5G/1/3327smlcmIiEiCKW2m/fLg+Nd4BCKStvLyoFEjcnJso84aNcIOKD387newZg1MmFDoZNWqNv2ekwMjRoQWm4iISFGlJe0LnXPfAoc65+YWesxzzs2NU3wiqe3HH2Hz5r0z7SqNiZ/TTrNFqS++WOSJX/8a/vAH+Mtf4JNPQolNRESkqNJaPg4EjgOygbMLPfoERxEpr0LtHnNyoFWrcMNJJxUrwhVXwHvvwbJlRZ588EGrU7rsMtiyJYzwREREfqGslo+rvfdHAXlA9eCxynv/XTyCE0l5wW6oP9U/mGXLNNMeb5cHRYB//3uRJ6pWtYL3pUth6NC4xyUiIlJUmd1jnHOnAEuAp4FngMXOuV/HOjCRtBDMtC+jGXv2aKY93lq0gF69rIx99+4iT550EtxyC7zwArz9dhjhiYiI7BVJy8fHgdOCjZV+DZwOPBHbsETSRJC052xrBChpD8NVV1l5zKRJxTx5zz1wxBHWTWbt2rjHJiIiUiCSpD3Te7+o4Bvv/WIgM3YhiaSRvDzIyCB3rbWMUXlM/PXta1179lmQCpCVBa+8AuvXwzXXgPdxj09ERAQiS9pnOedGOee6BY8XgNmxDkwkLeTlQcOG5CytQFYWHHxw2AGln6wsuOQSGDcOfvihmAuOOgruvRfeeAP+9a+4xyciIgKRJe3XAvOB64EbgAXANbEMSiRtFNoNtWVLqKA9ikNx1VXw00/w8sslXHDzzXDiiXDddbBqVVxjExERgQiSdu/9Tu/94977873353nvn/De74xHcCIpL9gNVe0ew9W+veXkL74Ie/YUc0HFivCPf8DOnTBokMpkREQk7jSvJxKmvDx8w0baWCkBXHstLFoE77xTwgVt2tjC1HHj4PXX4xqbiIiIknaRsOTnw5o1rKvVmi1bNNMetv79oVkzGDmylItuugk6dbIymXXr4habiIiIknaRsHz/PXhPToW2gJL2sGVm2j5K06bBp5+WcFFGBowaZd1khgyJa3wiIpLeItlcqZ1z7gXn3PvOuSkFj3gEJ5LSgt1Qc/ObASqPSQRXXgl165Yx237UUTB8uK1afe+9uMUmIiLpLZKZ9rHAl8DtwC2FHmVyzp3hnFvknMt2zg0v5vks59yrwfNfOOdaFHrutuD8Iufc6WWN6ZxrGYyxJBizUpF79XPOeedc50hiF4m5IhsrtWwZZjACULUq/OEPMGECzJ9fyoW33w6HHQZXXw1btsQtPhERSV+RJO353vtnvfczvPezCx5lvcg5VxF4GugNdAAGOuc6FLnsSmCD974NtsvqyOC1HYABwOHAGcAzzrmKZYw5EnjCe98W2BCMXRBLdaxl5RcR/Lwi8REk7bnra9G4MVSpEnI8Ali5epUq8MgjpVyUlWVlMsuWwQMPxC02ERFJX5Ek7ROcc4Occ42dc3UKHhG8riuQ7b3P9d7vAsYA5xS55hzgpeDr14GezjkXnB8TtJtcCmQH4xU7ZvCaHsEYBGOeW+g+9wIPAzsiiFskPgqS9u+rqJ49gdSta33b//UvWL68lAtPOMF2ZXriCfj223iFJyIiaSqSpP1SrBzmM2wn1NnArAhedwhQ+J+8FcG5Yq/x3ucDm4C6pby2pPN1gY3BGL+4l3PuGKCp9/6t0oJ1zl3tnJvlnJu1Zs2aCH48kXJavRrq1iUnt4KS9gRTsMb08cfLuPD++21HrOH7VP+JiIhEVSSbK7Us5hFJiuGKGy7Ca6Jy3jlXASu7GVpKnHax98977zt77zvXr1+/rMtFyi8vjx0Nm7NypRahJprmzWHgQHjhBWsUU6ImTeCWW+DVV+Hzz+MWn4iIpJ9IusdkOueud869Hjyuc85lRjD2CqBpoe+bAEX3/957jXMuA6gJrC/ltSWdXwvUCsYofL468CvgQ+fct8BxwHgtRpWEkJfHt7WOxnu1e0xEt94K27bBU09FcGHjxtbDvdjtVEVERMovkvKYZ4FOwDPBo1NwriwzgbZBV5dK2MLS8UWuGY+V3wD0A6Z4731wfkDQXaYl0BaYUdKYwWumBmMQjDnOe7/Je1/Pe9/Ce98CmA709d5HUt4jElt5eeRWbg9opj0R/epXcPbZViKzdm0pF1ataotRv/jCZtxFRERiIJKkvYv3/lLv/ZTgcTnQpawXBfXl1wHvAQuB17z3851z9zjn+gaXjQLqOueygSHA8OC184HXgAXARGCw9353SWMGYw0DhgRj1Q3GFklM3sPq1eQ4bayUyB56CLZuhbvvLuPCSy6BY46BYcNg+/a4xCYiIunF2SR1KRc49yVwofc+J/i+FfC6975jHOILRefOnf2sWZqMlxhavx7q1uWmX8/m+Vkd2boVXHErMyR0115rte3/+5+1Zi/Rhx9C9+62OPWPf4xXeCIikuScc7O992WWbkcy034LMNU596Fz7iNgChEs7BSRUhS0e9zWkFatlLAnsrvvtr7tt95axoXdulk9zaOPasMlERGJuki6x0zGasqvDx6Heu+nxjowkZRWsBvq+loqjUlwDRrYxPmECTBlShkX3347bNgAzz8fl9hERCR9lJi0O+d6BMfzgbOANkBr4KzgnIgcqLw8PJCbd5AWoSaBG2+0NpBDh8Lu3aVc2LUr9OgBjz0GO3fGLT4REUl9pc20nxIczy7m0SfGcYmktrw8VtOI7Tu0sVIyqFzZFqXOmQOvvFLGxbfdZp+kvPRSGReKiIhELpKFqC2990vLOpdKtBBVYm7IED59di4n7ZjEO+9A795hByRl8R6OPx6WLYMlS6zTY4kXHnssrFsHixZBRkYJF4qIiER3IeobxZx7ff9DEpG98vLIrXE0oHaPycI569mel2dt2Uu98LbbIDcXxo6NW3wiIpLaSqtpP8w5dwFQ0zl3fqHHZUDluEUokory8sipfDjOQYsWYQcjkTrhBGvJPnIkfPllKReecw60bw8PPmgz7yIiIuVU2kz7oVjtei1+Wc/eEfhd7EMTSWF5eeS6VjRpAllZYQcj++PJJ62jzOWXw65dJVxUoQIMHw7z5sHbb8c1PhERSU0lJu3e+3HAVcBj3vvLCz2u995/Fr8QRVLQqlXk7Gqq0pgkVLs2PPcczJ1r+yiVaOBAazmj2XYREYmCUmvavfe7gV5xikUkPWzZAlu3kru1gdo9Jqmzz4aLL7ba9q++KuGizEzrEfnZZzBzZlzjExGR1BPJQtTPnHNPOedOds51LHjEPDKRVJWXx48cxOot1TTTnsSefBLq1SujTObSS2071RdeiGtsIiKSeiJJ2k8ADgfuAR4LHo/GMiiRlLZqFblYtq6kPXnVqWNlMl9/XUo3mRo1YMAA+M9/YPPmuMYnIiKppcyk3XvfvZhHj3gEJ5KSCiXtKo9Jbn37wm9/a7Xts2eXcNHVV8O2bZa4i4iIHKAyk3bnXE3n3OPOuVnB4zHnXM14BCeSkvLyyMGydc20J78//xkaNoT+/WHTpmIu6NoVjjwSnn8+7rGJiEjqiKQ8ZjSwBegfPDYDf49lUCIpbdUqcjPaUaOGp27dsIOR8qpbF159Fb77Dq68sphGMc7ZbPuXX5YyHS8iIlK6SJL21t77O733ucHjbkDzgyIHatUqciq1p1Urh3NhByPRcOKJVtf+xhvw1FPFXPDb38JBB2lBqoiIHLBIkvbtzrmTCr5xzp0IbI9dSCIpbtUqcn1L1bOnmJtvhrPOsi6P+3R4rFXL6mf+9S/YujWU+EREJLlFkrRfCzztnPvWOfcd8BTw+9iGJZK69qxazdKdB6uePcVUqAAvvQSNGll+vmFDkQuuvtoS9jFjQolPRESSWyTdY+Z4748CjgSO8N4f472fG/vQRFKQ96xcCbv2ZCppT0F168Jrr8GKFXDFFUXq248/Hg4/XCUyIiJyQCLpHlPXOfcX4ENgqnPuz845LZ8TORBbtpC7vRGgdo+p6rjj4OGH4c034ZFHCj1RsCB1xgyYMye0+EREJDlFUh4zBlgDXAD0C75+NZZBiaSsVavU7jEN3Hijlcjcdht88EGhJy6+GLKyrI5GRERkP0SStNfx3t/rvV8aPO4DasU6MJGUlJdHLq2oWGEPzZqFHYzEinMwahS0bw8DB8K33wZP1K4NZ5wBY8fCnj1hhigiIkkmkqR9qnNugHOuQvDoD7wd68BEUlKwG2qzg/PJzAw7GImlatXgv/+F/Hy44ALYXtBz66KLYOVK+PTTUOMTEZHkEknS/nvg38Cu4DEGGOKc2+Kc2xzL4ERSTlAe06pNJL96kuzatoV//tP2Vbr22mBh6tlnW8/2V1VlKCIikYuke0x1730F731G8KgQnKvuva8RjyBFUsaqVeTSmtbtMsKOROKkTx+4804rY3/2WWwK/qyz4PXXYffusMMTEZEkEdF0n3Our3Pu0eDRJ9ZBiaSqzcs2spZ6WoSaZu64A848E264AT77DCuR+f57+OijsEMTEZEkEUnLx4eAG4AFweOG4JyI7KfcpQ5Qu8d0U6GClck0b2717XnHnAlVq6pERkREIhbJTPuZQC/v/Wjv/WjgjOCciOynnFUHAWr3mI5q17aFqZs3w4WXVmHXWefBG2/ATz+FHZqIiCSBSFfDFW7xWDMWgYikPO/JXWe/PpppT09HHGGtID/9FIZuvRvWrYMpU8IOS0REkkAkSfuDwFfOuX84514CZgMPxDYskRS0eTO5+U2pU2U7NfXWN20NGABDhsBT77Ti5cpXq0RGREQiUmrS7pxzwDTgOOD/BY/jvfdj4hCbSGopaPfY6MewI5GQjRwJ3brB73/6K1+OzYFdu8IOSUREElypSbv33gNveu/zvPfjvffjvPer4xSbSGoJNlZq3Vxt/tJdRoZNsNervZv+W0ex+U2VyIiISOkiKY+Z7pzrEvNIRFJc/vI8vqM5rdSjXYAGDeA/r2WwlJYMHl4t7HBERCTBRZK0d8cS9xzn3Fzn3Dzn3NxYByaSapZ/s418Mml9RJWwQ5EEcVL3TO48Zjz/XHoSr/w9P+xwREQkgUUy5dc75lGIpIHcxZaUtepQOeRIJJGMGOGY3O8jBg0+keNOgrZtw45IREQSUYkz7c65ys65G4FbsN7sK7333xU84hahSIrIWWbvkdWjXQqrePqp/DPzCjL37GLgQK1JFRGR4pVWHvMS0BmYh822PxaXiERSVO7qqmS6n2jSJOxIJKFUq0bTnu0YXedmZs+GESPCDkhERBJRaUl7B+/9/3nvnwP6ASfHKSaRlJSzsQ4tqq2lYsWwI5GE06cP5+Y9y6DfbODRR+H998MOSEREEk1pSfvevbW991ohJVIe3pP7YyNa190UdiSSiPr0AeDRI16mfXu46irYvDnkmEREJKGUlrQf5ZzbHDy2AEcWfO2c0z8nIvtj40ZyfUtaHbIj7EgkETVvDkccwUET/8vo0bByJdx6a9hBiYhIIikxaffeV/Te1wge1b33GYW+rhHPIEWS3fqF37OR2rRu5cMORRLV2WfDtGkcd+gGbroJnnsOpmjPJRERCUTSp11Eyin3KyuLaXVopZAjkYTVpw/s3g3vvcc990CbNlYms3Vr2IGJiEgiUNIuEgc5C3YC0Oqo6iFHIgmra1eoXx8mTKBKFRg9GpYuVTcZERExStpF4iA3Zw8ArbrUDTkSSVgVK8KZZ8K770J+PiefDNddB3/9K0ybFnZwIiISNiXtInGQszyLBu4HqjWsGnYoksjOPhs2bIDPPgPgwQdtjeoVV8D27SHHJiIioVLSLhIHuWuq0SprVdhhSKLr1QsyM+GttwCoVg1eeAGWLIGRI0OOTUREQqWkXSQOsjfVp03NNWGHIYmuRg3o1g0mTNh76tRTYcAAeOghyM0NLzQREQmXknaRGNuxA1bsakDrBlvCDkWSQZ8+8M03kJ2999Qjj0BGBtx0U4hxiYhIqJS0i8TY0lyPpwJtmu0KOxRJBmeeacf33997qkkTuOMOGD8e3nknpLhERCRUStpFYixnjs2wt27jQo5EkkLr1tCiBXzwwS9O33gjtGsH119vn96IiEh6UdIuEmM5c7cB0LpDVsiRSFJwDk47zbZD/emnvacrVbL2jzk58PjjIcYnIiKhUNIuEmPZC3ZRnc3U71A/7FAkWZx2GmzeDDNm7HP6/PPhvvtg2bKQYhMRkVAoaReJsZylFWhNDq5pk7BDkWTRowdUqLBPiQz8PMs+ZEicYxIRkVApaReJsZy8g2hDNjRuHHYokixq14YuXX6xGLVA8+Zw223wxhvwySchxCYiIqFQ0i4SQ7t3w9INtWhdZbUVJYtEqlcvK4/ZuHGfp4YOhYMPhltuAe9DiE1EROJOSbtIDC1fDj/tyaB1vU1hhyLJ5rTT7F3f1Kn7PFWlCtx7L3zxBbz+egixiYhI3ClpF4mhgv1x2jRRjz7ZT8cdB9WqFVvXDnDppXD44VYqs0tbAIiIpDwl7SIxlJNjx9atw41DklBmJnTvXmxdO0DFivDww/b/seeei3NsIiISd0raRWIo55tdZLGDJodWDTsUSUa9ellWnptb7NO9e1ujmbvvhk2qwBIRSWkxTdqdc2c45xY557Kdc8OLeT7LOfdq8PwXzrkWhZ67LTi/yDl3elljOudaBmMsCcasFJy/xjk3zzk3xzk3zTnXIZY/s0hh2fN30pKlVGimdo9yAE47zY4llMg4Z7Pt69bByJFxjEtEROIuZkm7c64i8DTQG+gADCwmYb4S2OC9bwM8AYwMXtsBGAAcDpwBPOOcq1jGmCOBJ7z3bYENwdgA//beH+G9Pxp4GNBeghI3OTmO1uRAEyXtcgDatYOmTUtM2gE6dYLf/AaeeAJWrIhjbCIiElexnGnvCmR773O997uAMcA5Ra45B3gp+Pp1oKdzzgXnx3jvd3rvlwLZwXjFjhm8pkcwBsGY5wJ47zcXul9VQA3SJC68h5yVWdaj/ZBDwg5HkpFzNts+ebJ1kinB/ffDnj1wxx1xjE1EROIqlkn7IcDyQt+vCM4Ve433Ph/YBNQt5bUlna8LbAzG2OdezrnBzrkcbKb9+uKCdc5d7Zyb5ZybtWbNmv34MUWK9/33sG1nps20K2mXA9Wrl/VqnzWrxEtatIDBg+Gll2DRoviFJiIi8RPLpN0Vc67oLHdJ10TrvH3h/dPe+9bAMOD24oL13j/vve/sve9cv3794i4R2S97O8dU+x6qaiGqHKCePW3GvYQuMgWGD4eDDoK77opPWCIiEl+xTNpXAE0Lfd8EWFXSNc65DKAmsL6U15Z0fi1QKxijpHuBldOcewA/i8h+29uj/eDt4QYiya1ePTjmGJgypdTLGjSAG26AMWNg7tw4xSYiInETy6R9JtA26OpSCVtYOr7INeOBS4Ov+wFTvPc+OD8g6C7TEmgLzChpzOA1U4MxCMYcZ2FNRAAAIABJREFUB+Cca1vofmcBS6L8c4oUKycHKrCbFi3CjkSSXvfu8NlnsL30N4A33ww1a8Kdd8YpLhERiZuYJe1Bffl1wHvAQuA17/1859w9zrm+wWWjgLrOuWxgCDA8eO184DVgATARGOy9313SmMFYw4AhwVh1g7EBrnPOzXfOzQnuUfAmQSSmsrOhWYWVVGrWKOxQJNn16GHbnn7+eamX1a4NQ4fCm2+WWgIvIiJJyNkktRTWuXNnP0v/4kk5Hdt1D9VnTmHSXZ9q6lPKZ8sWy8iHD4f77iv10s2boVUr6NIF3n03TvGJiMgBc87N9t53Lus67YgqEiM52V492iU6qle3LHzq1DIvrVEDhg2DiRNh2rQ4xCYiInGhpF0kBjZuhHUbKqpHu0RP9+4wYwZs3VrmpYMHQ8OGcPvttl+AiIgkPyXtIjGwt92jZtolWrp3h/z8iKbPq1SBESPgo49sXyYREUl+StpFYmBvu0eylbRLdJx4ImRmRlQiA3D11dC0qfVt12y7iEjyU9IuEgMFM+2tqnxvPfhEyqtKFTjuuDL7tRfIyoLbboNPP9Vsu4hIKlDSLhIDOTnQMGsj1ZrUst0sRaKhRw/48ktbNBGBK66wD3ruvluz7SIiyU5Ju0gMZGdDm0rfqTRGoqt7d9izBz7+OKLLC2bbp02LeIJeREQSlJJ2kRjIyYHWu5coaZfoOu44qFw54rp2gCuvtAZGmm0XEUluStpFomz7dli5EtrsmKekXaIrK8sWpO7HtHnBbPsnn+xXri8iIglGSbtIlOXm2rH1niXq0S7R16MHzJ0La9dG/JIrr4SDD7bZdhERSU5K2kWiTD3aJaa6d7fjhx9G/JLKlW22/eOP9+tlIiKSQJS0i0SZerRLTHXuDFWr7nety1VX2Wz7XXfFJiwREYktJe0iUbZkCdQ6aAd1WK/yGIm+zEz49a/3ux1M5cowbJjtkqrZdhGR5KOkXSTKliyBdrV+wGVmQv36YYcjqah7d/jmG1i9er9e9rvfQePGqm0XEUlGStpFomzxYmiXtcxm2SvoV0xioFs3O3700X697KCDbLb9ww/3+6UiIhIyZRQiUfTjj7B8ObRjkerZJXaOOQaqVz+gOperr4ZGjTTbLiKSbJS0i0RRwSLUdtvnqp5dYicjA04++YCS9oLZ9qlTrXe7iIgkByXtIlG0ZIkd226YoZl2ia1u3ayu/fvv9/ulv/89NGyo2XYRkWSipF0kihYvtmPbXf9T0i6xdYB17fDzbPvkyTBtWnTDEhGR2FDSLhJFixdD4/o/UZ2tStoltspR1w6abRcRSTZK2kWiaPFiaNdos32jmnaJpYwMOOmkA07aq1SBW2+FSZPg00+jG5qIiESfknaRKFqyBNrW/MG+0Uy7xFq3brBw4QHVtQNccw00aKDZdhGRZKCkXSRKNmyANWuCHu0VKlhfPZFYKkddO9hs+y23wAcfwGefRS8sERGJPiXtIlFS0DmmnV9kCXtmZrgBSerr2BGqVTvgEhmAa6+1jXs12y4iktiUtItESUHnmHZbv4TmzcMNRtJDOfq1F6ha1Wbb338fPv88eqGJiEh0KWkXiZIlS6wqptWaL5S0S/yUs64dYNAgqFdPs+0iIolMSbtIlCxeDM2be7JW5Chpl/gpZ107/Dzb/t57MH16dMISEZHoUtIuEiWLF0O7Zjvhp5+UtEv8RKGuHTTbLiKS6JS0i0SB91Ye067+BjuhpF3ipZz92gtUqwY33wwTJ8IXX0QnNBERiR4l7SJR8P33sGULtKu60k4oaZd4Kqhr/+GHcg0zeDDUravZdhGRRKSkXSQKCjrHtK2QY18oaZd4ikJdO/w82/7uuzBjRvnDEhGR6FHSLhIFe9s97pwHdepY9iMSL1Gqawebba9TB+65p/xhiYhI9ChpF4mCJUugUiVotn6OZtkl/jIzo1LXDlC9OgwdCm+/DTNnlj80ERGJDiXtIlGweDG0aQMVly1V0i7h6NYNFiwod107wHXXabZdRCTRKGkXiYLFi6FdOw/ffaekXcIRpbp2gBo1YMgQeOstmDWr3MOJiEgUKGkXKafduyE7G9o22QHbtilpl3BEsa4d4A9/gNq1NdsuIpIolLSLlNPy5bBrF7SrFZQlKGmXMESxrh1+nm2fMAFmz47KkCIiUg5K2kXKaW/nmKzv7Asl7RKWU06JWl072Gx7rVqabRcRSQRK2kXKaW/Svucb+0JJu4QlinXtADVr2mz7+PHw1VdRGVJERA6QknaRclq82NrkNVy/EKpUsS0lRcLQqRNUrRq1EhmA66+32XbtkioiEi4l7SLltGQJtG0LblnQOca5sEOSdBXlunaw2fabboJx4zTbLiISJiXtIuVk7R5Ru0dJDFHs117g+usteddsu4hIeJS0i5TDzp3w7bdK2iWBFNS1f/xx1IasVQtuvtlm27/4ImrDiojIflDSLlIOubmwZw+0a74D1q1T0i7hi0FdO8ANN0D9+jBiRFSHFRGRCClpFymHRYvs2K7qKvtCSbuELQZ17WCLrf/4R5g82R4iIhJfStpFymHhQjselpFtXyhpl0TQrRvMnx/VunaAa66Bpk1ttt37qA4tIiJlUNIuUg4LFlgSU31Nrp1Q0i6J4JRT7BjFunaAypXhzjutrn3ChKgOLSIiZVDSLlIOCxZAhw7YItSMDGjcOOyQRKBzZ9szYOrUqA996aXW4nTECNi9O+rDi4hICZS0ixygPXvgm2+gfXssaW/aFCpWDDssEatrP/nkmCTtGRlw773wv//BmDFRH15EREqgpF3kAC1bBj/+WGimXaUxkkh69LBFF3l5UR/6wgvh6KPhjjvgp5+iPryIiBRDSbvIAVqwwI5K2iUh9expxylToj50hQpw//3W8nT06KgPLyIixVDSLnKACjrHtG+9C1atUtIuieXoo21XpBj1Z+zdG048Ee65B7Zvj8ktRESkECXtIgdowQJo2BDq/LjC+t8paZdEUrEidO9uSXsM+jM6Bw88YO9Xn3466sOLiEgRStpFDtAvOseAknZJPD172uKL3NyYDP/rX8Ppp8ODD8LmzTG5hYiIBJS0ixwA7y1p39s5BpS0S+Lp0cOOMahrL3D//bB+PTz+eMxuISIiKGkXOSB5eTaz+IuZ9qZNQ41JZB+HHWZ7B8Sorh2gUyfo1w8eewzWro3ZbURE0p6SdpEDsE/nmMaNISsr1JhE9uGczbZPmRKTuvYC99xj7U8feihmtxARSXtK2kUOQEHSvrc8RqUxkqh69oQ1a2w3pBhp3x4uuQSeegpWrIjZbURE0pqSdpEDsHAh1K5t3WOUtEtCK6hrj2GJDMBdd9kuwffeG9PbiIikrZgm7c65M5xzi5xz2c654cU8n+WcezV4/gvnXItCz90WnF/knDu9rDGdcy2DMZYEY1YKzg9xzi1wzs11zk12zim7knIr6Bzj9uy27hwtWoQdkkjxmjeH1q1juhi14DbXXAOjRsGSJTG9lYhIWopZ0u6cqwg8DfQGOgADnXMdilx2JbDBe98GeAIYGby2AzAAOBw4A3jGOVexjDFHAk9479sCG4KxAb4COnvvjwReBx6Oxc8r6WVv55jly20f9zZtwg5JpGQ9e8JHH0F+fkxvM2IEVK5sRxERia5YzrR3BbK997ne+13AGOCcItecA7wUfP060NM554LzY7z3O733S4HsYLxixwxe0yMYg2DMcwG891O99z8G56cDTWLws0oaWbPGumR06ABkZ9tJJe2SyHr2tHZHs2fH9DYNG8LNN8PYsfDFFzG9lYhI2oll0n4IsLzQ9yuCc8Ve473PBzYBdUt5bUnn6wIbgzFKuhfY7Pu7xQXrnLvaOTfLOTdrzZo1Zf5wkr4WLrRjhw5ATo5907p1aPGIlKl7dzvGuK4dYOhQS95vvTWmDWtERNJOLJN2V8y5on/CS7omWud/vpFz/wd0Bh4p5lq898977zt77zvXr1+/uEtEgCKdY7KzrdXjIcW9RxRJEPXrw5FHxryuHaB6dbjzTvj4Y3j77ZjfTkQkbcQyaV8BFN5tpgmwqqRrnHMZQE1gfSmvLen8WqBWMMY+93LOnQqMAPp673eW66eStLdgAVSrFuyllJ1ts+wV1IhJElyPHjBtGmzfHvNbXXUVtGsHw4bFvIxeRCRtxDLTmAm0Dbq6VMIWlo4vcs144NLg637AFO+9D84PCLrLtATaAjNKGjN4zdRgDIIxxwE4544BnsMS9h9i9LNKGlm40GbZncOSdtWzSzLo1Qt27oRPPon5rTIz4cEH7Q3uSy+Vfb2IiJQtZkl7UF9+HfAesBB4zXs/3zl3j3Oub3DZKKCucy4bGAIMD147H3gNWABMBAZ773eXNGYw1jBgSDBW3WBssHKYasBY59wc51zRNw4i+2Vv5xjvraZd9eySDE45BSpVgvfei8vtzjsPjj8e7rjDdksVEZHycV4rhfbRuXNnP2vWrLDDkAS0aRPUqmXbtQ+7eJXVsj/9NAwaFHZoImXr1Qvy8mK6O2ph06bBySfD/ffDH/8Yl1uKiCQd59xs733nsq5TIa7IfvhF5xi1e5Rkc/rpMH8+rFgRl9uddBKcc469yVVTLhGR8lHSLrIf9ukcA0raJXmcHmwuHacSGbDa9m3b4L774nZLEZGUpKRdZD8sWGAdHlu2xOrZMzKgWbOwwxKJzK9+BQcfHNekvX176ybz7LM/b2sgIiL7T0m7yH5YuBAOPRQqVsRm2lu0sMRdJBk4Z7PtkybFtRfjXXdZR5kRI+J2SxGRlKOkXWQ/LFgQ1LOD2j1KcjrjDNiwAWbOjNstGze2nVJffTWutxURSSlK2kUitG0bfPttoXaPStolGZ16qm0GFscSGYBbbrGNWW+91X59RERk/yhpF4nQvHl2PPJIYN062LxZSbsknzp1oEuXuCft1atbz/YPP4R3343rrUVEUoKSdpEIzZljx6OP5ufOMdpYSZLRGWfAjBmwfn1cb3v11fY+d9gw2L07rrcWEUl6StpFIvT111CzJjRvjto9SnI7/XTYs8cWpMZRpUrwwAO2t9PLL8f11iIiSU9Ju0iE5syBo46yBhxkZ9sXLVuGHZbI/uvSxbb2jXOJDEC/ftC1K/zpT/Djj3G/vYhI0lLSLhKB3butpv2oo4ITOTnWnz0rK9S4RA5IRgb06gUTJ8Z9Vahz8OijsHIlPPFEXG8tIpLUlLSLRCAnx7rHHH10cEKdYyTZnX46rFoF8+fH/dYnnwznnQcPPQSrV8f99iIiSUlJu0gEvv7ajntn2rOztQhVktvpp9sxpFYuI0fCjh228ZKIiJRNSbtIBObMsV1QDz8c2LQJ1q7VTLsktyZN7KOj8eNDuX3btjBoELzwgm1aJiIipVPSLhKBr7+Gww6DypWxWhlQ0i7J75xz4LPPYM2aUG7/pz9Z//Zbbgnl9iIiSUVJu0gE5swpUs8OStol+fXta60f3347lNvXqwe33w7vvBP37pMiIklHSbtIGdautU4X+yTtrVqFFpNIVBxzjJXJjBsXWgjXXQctWsDNN2vDJRGR0ihpFylDsYtQGzeGqlVDi0kkKpyz2fb334ft20MJoXJlePBB+z175ZVQQhARSQpK2kXKsE/SnpOj0hhJHeecY7scTZ4cWggXXQTHHgsjRmjDJRGRkihpFynDnDk2sd6gQXBCPdollZxyiq0GDamLDPy84dKqVfD446GFISKS0JS0i5Th668L1bNv22aZhZJ2SRVZWdC7N0yYYItSQ3LSSXD++dpwSUSkJEraRUqxc6f1kN5bGpOba0dtrCSp5JxzLFOeOTPUMEaOtN+5O+8MNQwRkYSkpF2kFAsXQn5+oZn2JUvsqJl2SSW9e9vuYSF2kQH7tRo8GF58EebPDzUUEZGEo6RdpBRz5thx70x7wdaNhx4aSjwiMVG7ttW2h5y0g224VKOGNlwSESlKSbtIKb7+Gg46yLZcByxpb9ECqlULMyyR6Ovb1/7/XbAPQUjq1rUNl959Fz74INRQREQSipJ2kVLMmQNHHGGVA4B9Zn/44aHGJBITffvaMcQuMgW04ZKIyL6UtIuUwPsinWPy8+Gbb6BDh1DjEomJli3tHeqbb4YdCVlZ1kVm7lx4+eWwoxERSQxK2kVKsHw5bNhQpHPMrl2aaZfUdcEFMG0arFwZdiT0728bLt1+u3VaFRFJd0raRUpQsBPq3pn2gnYWStolVQ0caB8xvfZa2JHgHDz2mDZcEhEpoKRdpAQFnWOOOCI4UZC0H3ZYKPGIxFy7dtCxI/znP2FHAsCJJ9rk/8iRkJcXdjQiIuFS0i5Sgq+/tr7R1asHJ+bPV+cYSX0DB9omSyF3kSnw0ENWlaYNl0Qk3SlpFynBl18WKo0Ba4en0hhJdf372/HVV8ONI1Cw4dKoUfC//4UdjYhIeJS0ixTjhx9g6VLo2jU4oc4xki6aNYOTTkqYEhnQhksiIqCkXaRYX3xhx+OOC07k5KhzjKSPgQOtHGzevLAjAaBOHUvcJ06E998POxoRkXAoaRcpxvTptqFSp07BiQUL7KikXdJBv372C5BAs+2DB1sreW24JCLpSkm7SDGmT7f+7FWqBCfUOUbSSYMG0LMnjBljLSATQMGGS/Pmwd//HnY0IiLxp6RdpIjdu2HGjEKlMaDOMZJ+Bg60hR0zZoQdyV4XXmhtIEeMgM2bw45GRCS+lLSLFLFgAWzdWiRpX7BAi1AlvZx3HlSqlFAlMs7Bk0/aQvEHHgg7GhGR+FLSLlLEPotQCzrHqJ5d0knNmnDmmdb6MYGKyDt3hksvhSeegNzcsKMREYkfJe0iRUyfbt0q2rQJTqhzjKSr3/wGVq+GyZPDjuQXHngAMjLg1lvDjkREJH6UtIsUMX26zbI7F5wo6Byj8hhJN337Qt268PzzYUfyCwcfDLfdBm+8AR99FHY0IiLxoaRdpJBNmyxH32cRKkD79qHEJBKarCy47DIYN85m3BPI0KHQtCncdFNCVe+IiMSMknaRQmbOtA536hwjErj6alvXkWB9Fg86CB5+GL76Cv7xj7CjERGJPSXtIoVMn25lMV27Fjo5f75KYyR9tWsH3brBCy/Anj1hR/MLF10EJ5wAf/yjfUomIpLKlLSLFDJ9ulXB1KwZnMjPh0WLtAhV0tvvf2892xNsQapz8Oc/w5o1cO+9YUcjIhJbStpFAt7/vAh1L3WOEbGe7XXrwnPPhR3JPjp3hiuvtOT9m2/CjkZEJHaUtIsEcnNh3To49thCJwsWoao8RtJZAi9IBbj/fqhaFW64wd58i4ikIiXtIoHp0+24z06ooM4xIgm6IBWgQQO4+254/30YPz7saEREYkNJu0hg+nSbrftFJcz8+dC8uTrHiCTwglSAQYPsd/emm2DHjrCjERGJPiXtIoHp061rTMWKhU7Ong3HHBNaTCIJJUEXpAJkZlpd+9Kl8NhjYUcjIhJ9StpFgO3bYc6cIqUxGzfCkiW20k1EbEFq/fqWHSegnj3hggvggQdg+fKwoxERiS4l7SLAl19aue4vkvbZs+3YpUsoMYkknKws+MMf4O23Yd68sKMp1mOPWfXOzTeHHYmISHQpaRfh50Wov+gcM2uWHTt1ins8IgnruutsjcfIkWFHUqzmzW2zpddegw8+CDsaEZHoUdIuAkybBq1aQcOGhU7OnGkn69YNLS6RhFO7ttW2jxljBeQJ6NZboW1bW5yqRakikiqUtEva270bpk6FHj2KPDFrlurZRYpz001QoQI8+mjYkRQrKwueeQaysxP2AwERkf2mpF3S3uzZsGkTnHpqoZNr1sB336meXaQ4hxwCl14Ko0fD99+HHU2xTj0VBgyABx+05F1EJNkpaZe0N2mSHX8x015Qz66ZdpHi3XIL7NyZsJ1kAB5/3GbdBw/WTqkikvyUtEvamzQJjj7aOtntNXMmOAcdO4YWl0hCa9cO+vWDp5+2j6oSUOPGcN99tlPq2LFhRyMiUj5K2iWt/fgjfPqp9Xf+hVmz4NBDoUaNUOISSQrDhsHmzfC3v4UdSYkGDbL33jfeaKGKiCSrmCbtzrkznHOLnHPZzrnhxTyf5Zx7NXj+C+dci0LP3RacX+ScO72sMZ1zLYMxlgRjVgrO/9o596VzLt851y+WP68kn2nTYNeuIvXsYEm76tlFStepE/TqZXUoW7aEHU2xKlaEZ5+F1athxIiwoxEROXAxS9qdcxWBp4HeQAdgoHOuQ5HLrgQ2eO/bAE8AI4PXdgAGAIcDZwDPOOcqljHmSOAJ731bYEMwNsAy4DLg37H4OSW5TZ5s25+ffHKhkytXQl6e6tlFInHvvfDDD/Dww2FHUqKuXa29/NNP2ydrIiLJKJYz7V2BbO99rvd+FzAGOKfINecALwVfvw70dM654PwY7/1O7/1SIDsYr9gxg9f0CMYgGPNcAO/9t977ucCeWP2gkrwmTYITToCqVQudLFiEqpl2kbIdeywMHGjtH5cvDzuaEj3wADRrBldeqd7tIpKcYpm0HwIU/gu+IjhX7DXe+3xgE1C3lNeWdL4usDEYo6R7lco5d7VzbpZzbtaaNWv256WSpNauha++KqaefeZM+0z9qKNCiUsk6Tz4oLVnSeD6k2rV4PnnYdEi+3BARCTZxDJpd8WcK9p0q6RronU+Yt775733nb33nev/oo2IpKqpUy3PKLae/Ve/gipVQolLJOk0b24bLr3yys+fVCWg006Dyy6zDZfmzAk7GhGR/RPLpH0F0LTQ902AVSVd45zLAGoC60t5bUnn1wK1gjFKupfIL0yaBNWrF6mC8d5m2lXPLrJ/brvN+qYOHZrQTdEfewzq1YMrroD8/LKvFxFJFLFM2mcCbYOuLpWwhaXji1wzHrg0+LofMMV774PzA4LuMi2BtsCMksYMXjM1GINgzHEx/NkkBUyaBN27Q0ZGoZPffgvr16ueXWR/1agB99wDH38M4xL3z2+dOrYg9auvLIEXEUkWMUvag/ry64D3gIXAa977+c65e5xzfYPLRgF1nXPZwBBgePDa+cBrwAJgIjDYe7+7pDGDsYYBQ4Kx6gZj45zr4pxbAVwIPOecK7he0tjSpZCbW0xpzMyZdtRMu8j+u+oq6NDBdkvdtSvsaEp0wQVw/vlw553wzTdhRyMiEhnnE/hjzLB07tzZz0rgukwpvxdfhN/9DubPtxxjr1tvtW3Zt2yBSpVCi08kaU2cCL1722rP228PO5oSrV5tS1datoTPPrPWryIiYXDOzfbelzlbqB1RJS1NmmRbnLdvX+SJmTOta4wSdpEDc8YZMGCAlcp8/XXY0ZSoUSN47jlbN6tuMiKSDJS0S9rZs8c2VTr1VHCuyBOzZ6ueXaS8nnrKiscvvTThy2QuvRTuvx8+/zzsaERESqekXdLO3LnWo32fevZ586ws5thjQ4lLJGXUrWtN0b/+2jLiBPaXv9imSxdfDFu3hh2NiEjJlLRL2nn3XTvus6nS5Ml27NEjrvGIpKS+feGSSyxpnz077GhKVKMGvPyyLUwfMiTsaERESqakXdLO2LE2mX5I0T1zJ0+Gdu2gSZNQ4hJJOU8+CQ0bWg3Kzp1hR1Oik0+2NegvvADjizYmFhFJEEraJa3k5Fh/5gsvLPLETz9Zf+l9pt9F5IDVrm2tmubPT+hOMmDrZo8+2rpW5uWFHY2IyL6UtEtaef11O15wQZEnZs60glYl7SLR1bs3XHstPPoovPpq2NGUqFIl+Pe/Yds2a36j3VJFJNEoaZe08vrr1hymRYsiT0yebK1kunULISqRFPfkk3DiiXD55fZRV4Jq397aQH78MdxxR9jRiIj8kpJ2SRtLl1pP5n1KYwCmTLHPxuvWjXtcIimvUiV44w37/Tr3XPjhh7AjKtH//Z9tvPbgg/D222FHIyLyMyXtkjbeeMOO/foVeeLHH21LRJXGiMROw4bw5puWsPfrl9D92//yF3sPf/HF8N13YUcjImKUtEvaGDsWOnWybct/4bPPLIFQq0eR2OrUCUaNgk8+gRtuAO/DjqhYlSvb34vdu6F//4R+fyEiaURJu6SF776DGTNKKI2ZPBkyMqzvm4jE1m9+Y/0V//Y3uPPOsKMpUZs2MHq0/d24+eawoxERgYywAxCJhxJLY8CS9mOPhWrV4hqTSNp68EFYtw7uvRcyM+FPfwo7omJdcAHcdBM88QQceaS1gxQRCYuSdkkLY8fCMcdA69ZFnti40XZrTPAe0iIppUIFeP552x/hjjtsoeqwYWFHVayHH4YFC6xrZZs2ajAlIuFReYykvOXLYfr0EkpjPvoI9uzRIlSReKtQwepPfvMbGD4cHn887IiKlZFh7eXbtrWZ9+zssCMSkXSlpF1SXqmlMVOmwEEHWXmMiMRXxYrw0kv2yzl0KDzwQEIuTq1ZEyZMsK0c+vSxD+hEROJN5TGS8l5/HY46ymbK9jF5si1AzcqKe1wigk1l//vf9js4YgQsXmylM5UqhR3ZL7RuDf/v/8Gpp1pHmXfesdCT3qpV8OWX9vjuO1i9Gr7/3h5btlgrnYMOsmPVqvYf4vDDf360bWtvvkQk5lLhT45IiZYvh08/hfvuK+bJ1ath/nxrxiwi4cnMhFdegXbtrKPM0qWWISfYZme//jU8+6wtSB00yHZPdS7sqPaD9/am6N13bcJi1iz7Owj2gzRubP30GzWCI46AGjVgxw57bN9uSfysWbZIqOATkTp14MwzoW9fOP10e42IxISSdklpzz9v/xb95jfFPDllih1Vzy4SPudsUWrbtnD55XDccfDWW3DooWFH9gtXXgk5OdYAp149q+hJaD/9ZH/rxo2DiRPtDRHYG6TTToOOHa1//tFHR95Ba9s2+OYbmDcPpk61rWP/+U9789WjB1x9tSXxKfFRhEjicD4B6wfD1rlzZz9r1qyww5By2rkTmjWslxHMAAAeZklEQVSzf/vHjSvmgn79YNo0WLlSH++KJJLPPoNzz7UZ3r/+FS65JKGmtL2Ha66xSYGHH4Zbbgk7oiJ277YNrMaMsUU9a9daaUvPntC7t82I77PLXDnv9/nnMH683XP5cvvje+219rFEvXrRu5dICnLOzfbedy7rOi1ElZQ1dqztmH7ddcU8uWWLzQ5deKESdpFEc8IJVobRsSNcdpkVka9fH3ZUezkHzzwDF11k+0S98ELYEQWys+GPf7SEuXt3Kznq1ctmLdats+M110Q3YQf7G3rSSfYOJjfXSpvatIHbboOmTeH6661GXkTKRUm7pKynnrJP1outfhk/3mbxLroo7nGJSASaNbO664cesmTziCNg0qSwo9qrYkV4+WWbuP79722SIBTbtlkHnlNOsdKikSNtU4oxY2zW4t//tlKVeC22z8iA886z/+3+9z/47W/tHU6rVrbQeMOG+MQhkoKUtEtKmjkTvvjCZtkrFPf/8ldfhSZNbEZPRBJTxYq26dL06VC9us0aX3KJdTxJAJUqWXeqE06w3PTtt+N0Y++tHOV3v7NFo5ddBnl5Vmi/fLmtBbjoIiuJCdPhh8OLL1r9+7nnWnytWtkbi507w41NJAkpaZeU9NRTtqbqkkuKeXLjRluQ1b9/CRm9iCSUjh2tJeHw4faG+9BDrRQjARK/KlUsRz7ySJtgfv31GN5s1Sp45BFLhk84Af7zHyvx++QTWLTI/vscfHAMAzhAbdrAv/4Fc+ZYGc3w4fbJycSJYUcmklSUsUjKWbPGPhm+7LISuo+9+aZ1VFBpjEjyqFLFZmrnz7d67WHD4Fe/srqU3btDDa1WLasG6dLF/qy8/HIUB9+2zTqznH661YffeivUrg2jRtns+ujRlggn0ELdEh15pO1SVZCs9+5t73QKOtqISKmUtEvKeeEF2LULBg8u4YJXX7WFWF26xDUuEYmCNm1sTcq771r9dP/+NvP80kv2ZjwkNWvC++/b+4lLL4W//a0cg+3ZY20aL7vMyl8uvtj6q99+ux0//RSuuMJKhpLR6adbu8iHHoIPPoAOHax35q5dYUcmktCUtEtKyc+3zU969YLDDivmgrVrbTFb//7JMTMlIsU74wxb6Pjqq7Zb52WX2ULMv/wltMWOVataqcxZZ1m3w8cf348Xew9ff23dX1q0sBX0//0vDBgAH39szeHvvruErZ2TUFaWfVryzTf2H2zECOsX/9lnYUcmkrCUtEtKGTcOVqwooc0jWCuy/HyVxoikgooV7Q34V19ZtnzIIXDDDbaz58CBNou7Z09cQ6pc2f7MXHghDB1qjxKrdwr6qQ8ZAq1b2wZHDz9s9d5jxthupS+8ACefnLrrb5o0sYUA48fDpk1w4on2jmfjxrAjE0k42lypGNpcKXl16wbffWftiottv96zp2X133yjmXaRVPTVV/D3v1sd+IYN1jry3HNtNveUU+LW+jA/33Lxv/4V+vSxzovVq2N9zCdNssfkydZ/vlIlOPVUq+8++2xo2DAuMSacrVttV9w//xkaNLDjhRfqb7WkvEg3V1LSXgwl7clp8mT7d+/xx+Gmm4q54PvvrbPCiBFwzz1xj09E4mjHDvvo7ZVX7I/Djh1Wv3LqqdCjB3TtajPblSvHNIZn/pTH9Y835/Aay5lQ/bc0W/6pPXfIIVbH17u3PZK1Pj0WZs+Gq6+2jkFnnml93ps3DzsqkZhR0l4OStqTz+7d0LmzfaK6cGEJ/w4//bTVzfzvf7ZwTUTSw48/wtSp1kj97bdh2TI7n5EBRx1lLSVbt7YF6q1aWU15nTpll6R4b390fvjBJgVyc6314qJFtmB00SLIz+c9TqO/G8tBlXYz/roP6HrVkda2UjPIJcvPt969t99u/53vvttKnzIzw45MJOqUtJeDkvbk89JLtg7tP/+xdVvFOuEE2LzZknYRSU/ew8qVtgPbjBn2+PprWLdu32urV7e+sTVqWLKYn28davLzbeZ+7dp9O9ZkZtobgEMPta4oXbtCly4s2HQIffpYq/XHHoNBg5SzR2TZMptsmTAB2re3eqNit7kWSV5K2stBSXty+fFHaNfOPm2ePr2Efwg//9yS9ieftNkaEZHCtmyxfuG5ufDttzaDvnnzz49duywhz8y0GfqsLKhf32qvGzSwr1u2tFn6jIxib7F2rbWDfOcdK18fNcparksE3nrL/nbn5kK/fvbOp1mzsKMSiQol7eWgpD253Hcf/OlP1oThpJNKuOj88+HDD23Wplq1eIYnIrLXnj3wxBO2Keghh9ing8cfH3ZUSWLHDnj0UevpDrbS95ZbrEm+SBKLNGlP0R5Ski5Wr7b9Oc4/v5SEffFi2wV10CAl7CISqgoVrA3kp5/a1yefDPffH+q+UMmjcmWrcf/mGzjnHPsP16qVzbrv2BF2dCIxp6Rdktpdd8HOnZa4l+jxx62l2h/+EK+wRERK1bWrdafs18/y0M6drbxeItCsmX1EMXu27Wx988226dRzzyl5l5SmpF2S1oIFtu/IoEGlbBL4/ffwj39YIWm69j4WkYRUs6btofTmm7YO9rjj4MYbrV25RKBjR5g4EaZMsVqja66xNQX332/970VSjJJ2SUp79tjEefXqVs9eoqeesgVkQ4fGLTYRkf1xzjk2CTFoEPzlL9aR9o03rNGNRKB7d2s2MGUKHHOMfXTRrBlcfz3Mmxd2dCJRo6RdktJDD9nf50cegXr1Srho61brzX7uudZeRkQkQdWoYXMM06bZ1/362QLVjz4KO7Ik4Zwl7+++ay08zz8f/vY3OPJIqz165hnbIVckiSlpl6TzySc2uz5gAFx1VSkXjh5tf6RvuSVusYmIlMcJJ1it+6hRsGIFdOsGZ50Fc+eGHVkSOfJIePlla4r/5JPWV3/wYGjcGPr2hRdftNJJkSSjlo/FUMvHxLV2re08ftBBtgapRo0SLszPhzZtoEkTm7oSEUky27fb7PsDD8CmTZZvDhliHWe0MdN++uor24XvzTfhu+/sP+Bxx8GZZ9o7oy5drPe+SAjUp70clLQnpj177B+tDz6w8sWOHUu5+LHHrKPAhAnQp0/cYhQRibYNG6y3+zPP2ILVjh0teb/wQmuMJfvB///27jxKqvLM4/j36WZrbJRVBIFuNIjgEhEx5piYjBrXJMYTHU1yXDKeeJwsjjNZRjSTMcaZk8wfM2OMo8ejOS6JopKoxAkxBpfoEJF9RwVERRRodqRp6OaZP563UtVNVdNF013V8Puc85669d5b996qt7vuU+99F4927s88E2n27Mivqor2SGedFc1pTj01auZFOoGC9nZQ0F6eMnH4XXfFrNYFvf02nHhiTHX9zDOqkhKRg0J9PTzySATwy5ZFTPmVr8BXvxoxpr7q9sOGDdHm8qWXogPB/PnZHsCDB8cHO25c9nHkSH3QcsApaG8HBe3lZ/p0+MxnoqZ98uRWvjPd4YIL4gVLlsDw4Z16niIiHW3PHnjuuehnOXVqTMw0alQE75dfDmPHKq7cb1u3RuA+dy7MmROPixdDU1Os79sXPv5xOOmkbDrxxBjKTGQ/KWhvBwXt5WXGDDjvPBg0CGbNiu/Mgn71K7jqqjZUx4uIdH2bNsXwkI8+GpXF7lEDf+65cbPxnHOia4+0w86dsGhRNoifNy+e5w6oX1vbPJA/6aQYtax795KdtnQdCtrbQUF7+fjLX+D88yNgf/HFGHq3oLo6GDMmOqC++ipUVnbaeYqIlNr778Pvfw/TpsWQuOvXR/6IEVE5fPLJ2cfa2tL2u9y9OxLEXYFM6t4dKrrCuHZ79kSH1oULs2nBAnjzzWytfI8ecU066aT40DPNbPr3L+25S9lR0N4OCtrLw/Tp0dLlyCMjYN9nS5err47pBefMiduVIiKHqD17Io6cNi3uUC5YEO3gM/EkRGXIsGGRhg6N0biqq6OlR3V19M1s2cymsRF27IhUX9/8sWVeJu3cuffz3PNoqVcv6N070mGHQb9+ca65afhwqKmJNHhwGTUHamiApUubB/MLF8Yvqoza2gjec5Nm7D6kKWhvBwXtpffqq3DhhXGb98UXY4bqVk2dGkN3/fCH8JOfdMo5ioh0JTt3Rjy5YAG8+26MA//++/G4Zg1s2xbbFKOyMgLrqqoIsquqmi/36pXNy6RMXqbliHs27dqV/QGwY0e0QNm4MW6krl8fKVNDn9GzZ/QPHTMmZpMdOzbS6NFxrLKwYUO2nXwmvfVWdv3QoXsH8sOGldGvEelICtrbQUF7aT31VDRLP/rouMW7z4B93rzopTpiBMycWUbf0iIiXUtjI3z0UQTw9fV7r6+szNaC5wbencU9xqx/991onZJJK1bE2APLl2dr8Ssq4NhjI4DPBPMnnQTHH18mQ2Vu2RLXr9xAftmyuE0CMd33aadFmjAhHocOLe05S4dQ0N4OCtpLY8cO+O53Y0SE8eNhypQ2fD+tWAFnnhnfwNOnq8eViMghrKEhKrAXL44gfsmSWH7rrfhBAvFDY8yYaN+f29b/yCNLe+5A/GJasCAC+Nmzo23T4sXZQH7o0Gwgn0mDBpX2nKXdFLS3g4L2zrdwIVx5ZXzBfv/7cMcdbagJWbs2AvZNm6I9zZgxnXKuIiLStezaFYH7woUxomMmrVmT3eaoo7IBfCaNHl0GA8Ds2BE18jNnRhA/axa88UZ2PPmamua18ePH72OYNSk3CtrbQUF752lqgnvuiUmT+vaFhx+O4R33acuWmHr6zTejDc0nPtHRpyoiIgeZurqo2M4N5JcsiSAfovIo06xm9OhIxx0X4+JXVZXwxLdujdr4WbOywfzKldn1o0Y1b1ozblz0LpaypKC9HRS0dzx3ePrp6De6ZEl0On3wwTbenly7Fi67DF57DZ59NsaEFBEROQB2746K7PnzswH9okXNB4Axi/5WtbVR0V1bG2nIkLiOZVKnBvYbN2Zr4jPpvfeyJzxmTLY2fsKEuJWgPmBlQUF7Oyho71jTpsEtt8Drr0etxR13wJe/3MZO8i+8AF/7GmzeHNXyl1/e4ecrIiKyfXs0sXnjjUgrV0Yn2FWrYgSefMNYVldnA/hBg7KPffs2T0cc0fz5AYulP/ww2zZ+5sxI69bFum7dYnjkTBA/YUI8L3l7oEOPgvZ2UNB+4NXXx6x9990Hr7wSY+zedlsMrd6tWxt20NQEt98ewzmOHg1PPqmx2EVEpCw0NkZN/IcfRky8fn085kvr12c7xRbSs2f+YL4tef37t1LD7x4nmts+fubM6BuWOfApp2SD+AkT4prbJWa86roUtLeDgvYDwz1+4D/wADz2WDRDP+YY+M534IYbiqhJWLIEvvWtmKP7mmvg7rtjYGAREZEuxj0qsjZvzqYtW5o/by1/y5Z9j6ffr18032ktDRqU7nC7x22D3Nr42bNjJBuI2bZOPbV5IF9bqzHkDyAF7e2goH3/7dgRsfXUqfCHP8SYub16RRP0666Ds84q4gf7ggXRdmby5AjS77oLrr22A89eRESk/O3cuXdAn3leVxeV6blp7drsqJEZvXrF9CaZmWUzqbYWaoY1MXTrMrrNywnk583L9tAdMKB5+/gJE6JBv+wXBe3toKC97TL9Xl5/PZq9vPxyjJNbVQVnnw1f+AJccUURo081NcXwjXfeGbMs9ekDN94IN90UE02IiIhIURobo+lObiDfcoKqtWubv6ayMqY++WtAP6yJ2m6rqdm6kJr3pzNi2R/puXRetjH/kCExi9UJJ0Tz1czy4Yd3/hvuYhS0t4OC9r01NESt+bJlkRYvjmA9dxbmsWNjIJcLLoga9TY3f6mvh+efj+Fkfve7qCY44ogI1G+8MRroiYiISIepr987kM+kVasi0G9ZW3/UYKdmwHZqenxAbeNb1GxdRM3aGdQ0vEkN79CH7dGJLRPIH3dcdqidESOiDb2UR9BuZhcAdwKVwP3u/tMW63sCDwPjgQ3AFe6+Kq2bCFwHNAE3uvtzre3TzEYCk4D+wBzgKnff1doxCjmUgvY9e6L/yYYN2fTBB/GPm0mZf9rcf9bhw+Ou2OmnRxo/PuLsVrlHD5wVK2Du3Ehz5sRYWrt2xQ4uvhguvTQif40pKyIiUhZ2747APV9A/847ES9kWs9k9Kuqp6bXWmqa3mbER0s4sukDBlLHADbE46BKBtYcxoBj+9Lz2FStP3hwNLgfODBS374HfUfYkgftZlYJvAl8DlgNzAS+4u5Lcrb5JnCyu99gZlcCl7r7FWY2FngMOB0YCvwJOC69LO8+zewJ4LfuPsnM7gXmu/s9hY7R2rmXImhvbIzhpBob405TU1N2uS15DQ3RnnzHjvi1nFnOfb59ezRnqavLBuibNmUnVctVUREdVUaMiAB91Cg4/vhIxx1XRDw9cSLMmBFjxa5e3bz3zIABMeHDuHHwuc/BZz7ThmlQRUREpNzs2RNNbFoG85n03nvO1q2FO69Ws42B1NGXzfRhG9Vsj2QfUd2rieree6juY1QfbhzWG3r1rqBHVSU9enejR+9u9KzuTo/DutOjukfkdXe6d3MqKqCym1FRARWVln3etJuK3Q1U7G6gynfQyxrg+us77wPL0dagvS2D7e2v04Hl7r4yndAk4BJgSc42lwC3peXJwC/MzFL+JHdvAN42s+Vpf+Tbp5ktBc4Gvpq2eSjt955Cx/Ayaxc0fXrErB2hqgp6946+nP37R6w8YkQ8tkwDB8aP3KOPbuNQjPvyzjvxi2L8ePjSl+IXQG1tDCk1fLh6n4uIiBwEKiqiWfuQIXDGGfm2MHbtigrDTOVh7mPdusOoe6+CLXX92L61ibptzqqPjO31lWxv6M62jT1p3NAxYeu/M5GJ9jP4xjfKOi7pyKD9aOC9nOergZZzzf91G3dvNLMtwICU/1qL1x6dlvPtcwCw2d0b82xf6Bh1uSdiZtcDmZ9Y283sjTzvaWDL13UF9fWRNmyI21cHmS5ZJgc5lUl5UXmUH5VJ+VGZlJ9OK5NbgFucUjbDqWnLRh0ZtOf7qdKydrvQNoXy832arW3f1vPA3e8D7suz7V+Z2ay23L6QzqMyKT8qk/Ki8ig/KpPyozIpPyqTvXXkT4rVwPCc58OANYW2MbNuwBHAxlZeWyi/Duib9tHyWIWOISIiIiLSJXRk0D4TGGVmI82sB3AlMKXFNlOAa9LyZcALqa35FOBKM+uZRoUZBbxeaJ/pNS+mfZD2+cw+jiEiIiIi0iV0WPOY1H7828BzxPCMv3T3xWZ2OzDL3acADwCPpI6mG4kgnLTdE0Sn1UbgW+7eBJBvn+mQ/wxMMrM7gLlp3xQ6xn5qtfmMlITKpPyoTMqLyqP8qEzKj8qk/KhMWtDkSiIiIiIiZe7gHq1eREREROQgoKBdRERERKTMHdJBu5ldbmaLzWyPmZ3WYt1EM1tuZm+Y2fk5+RekvOVmdnNO/kgzm2Fmb5nZ46mjLKkz7eNp+xlmVttZ7+9gVqgc5MAws1+a2TozW5ST19/Mnk9/48+bWb+Ub2b281QWC8zs1JzXXJO2f8vMrsnJH29mC9Nrfp4mVZNWmNlwM3vRzJam761/SPkqlxIxs15m9rqZzU9l8uOUX/T1oNhrjhRmZpVmNtfMnk3PVR4lZmar0nfLPDOblfL03VUsdz9kEzAGGA28BJyWkz8WmA/0BEYCK4iOr5Vp+RigR9pmbHrNE8CVafle4O/T8jeBe9PylcDjpX7fXT21Vg5KB+wzPgs4FViUk/cfwM1p+WbgZ2n5ImAqMSfCGcCMlN8fWJke+6Xlfmnd68An02umAheW+j2XewKGAKem5T7Am+m7SuVSujIxoDotdwdmpM+6qOvB/lxzlFotl38CHgWeTc9VHqUvk1XAwBZ5+u4qMh3SNe3uvtTd8818egkwyd0b3P1tYDlwekrL3X2lu+8CJgGXpF90ZwOT0+sfAr6Us6+H0vJk4JyD9hdg58lbDiU+p4OKu/+ZveczyP1bbvk3/rCH14g5E4YA5wPPu/tGd98EPA9ckNYd7u5/8fi2fThnX1KAu3/g7nPS8jZgKTHjs8qlRNJnuz097Z6SU/z1oKhrTge/rS7NzIYBFwP3p+f7c31WeXQOfXcV6ZAO2ltxNPBezvPVKa9Q/gBgs7s3tshvtq+0fkvaXvZfoXKQjjXY3T+ACCCBI1N+sf8vR6fllvnSRuk2/jiiZlflUkKpKcY8YB0RRKyg+OtBsWUlhf038ANgT3q+P9dnlceB58AfzWy2mV2f8vTdVaQOG6e9XJjZn4Cj8qy61d2fyZMPcXulJSf/jxxvZfvW9iX7T59peSlUHsXmSxuYWTXwG+Amd9/ayo07lUsn8JhD5BQz6ws8RTS73Guz9FjsZ1/omiN5mNnngXXuPtvMPpvJzrOpyqPznenua8zsSOB5M1vWyrb67irgoA/a3f3c/XjZamB4zvNhwJq0nC+/jrh90y39Ws/dPrOv1WbWDTiCvZsdSHFaKx/pOGvNbIi7f5BuR65L+YXKYzXw2Rb5L6X8YXm2l30ws+5EwP5rd/9tyla5lAF332xmLxFtcIu9HhR7zZH8zgS+aGYXAb2Aw4mad5VHibn7mvS4zsyeIpoa6burSGoek98U4MrUs3wkMIro5DATGJV6ovcgOq5MSW2oXgQuS6+/BngmZ1+ZHs6XAS+k7WX/5S2HEp/ToSD3b7nl3/jVqcf/GcCWdKvzOeA8M+uXRgU4D3gurdtmZmek9qNX5+xLCkif1QPAUnf/z5xVKpcSMbNBqYYdM6sCziX6GhR7PSjqmtPx76xrcveJ7j7M3WuJz+oFd/8aKo+SMrPDzKxPZpn4zlmEvruK11k9XssxAZcSv9AagLVE4WfW3Uq0TXyDnF7IRK/mN9O6W3PyjyH+qZcDTwI9U36v9Hx5Wn9Mqd/3wZAKlYPSAft8HwM+AHan/5HriLae04C30mP/tK0Bd6eyWEjzkZj+Lv3tLwe+npN/GvGlvQL4BWl2ZqVWy+RTxC3fBcC8lC5SuZS0TE4G5qYyWQT8KOUXfT0o9pqjtM+y+SzZ0WNUHqUti2OIkXbmA4szn5u+u4pPlt6siIiIiIiUKTWPEREREREpcwraRURERETKnIJ2EREREZEyp6BdRERERKTMKWgXERERESlzCtpFRLoIM2sys3lmtsjMnjSz3gW2+31m/PB2Hm+cmd2flr9oZje3Y1+3mdn39rHNg2Z2WVp+ycxO29/j5ezz82b24/buR0Sk1BS0i4h0HfXufoq7nwjsAm7IXZkmI6lw94vcffMBON4twF0A7j7F3X96APbZIcysssCq/yVmycz7A0dEpKtQ0C4i0jW9AnzMzGrNbKmZ/Q8wBxhuZqvMbCCAmV1tZgvMbL6ZPZLyBpnZb8xsZkpnttx5msHwZHefn55fa2a/SMsPmtnPzWy6ma3M1I7n2cetZvaGmf0JGJ2Tf4qZvZbO66k0u2FBZnaPmc0ys8W5tebpff7IzF4FLjezG81sSdrvJACPyUheAj7f5k9WRKQMdSv1CYiISHHMrBtwIfCHlDWamB3wm2l9ZrsTiJkdz3T3OjPrn7a/E/gvd3/VzEYQ04OPaXGYzAyDhQwhZmk9nph2fHKLcxxPTPM+jrjWzAFmp9UPA99x95fN7HbgX4GbWjnWre6+MdWmTzOzk919QVq3090/lY65Bhjp7g0tmgfNAj4NPNHKMUREypqCdhGRrqPKzOal5VeAB4ChwDvu/lqe7c8GJrt7HYC7b0z55wJjM8E9cLiZ9XH3bTmvHQKsb+Vcnnb3PcASMxucZ/2ngafcfQeAmU1Jj0cAfd395bTdQ8RU8q35WzO7nrhmDQHGApmg/fGc7RYAvzazp4Gnc/LXEZ+TiEiXpaBdRKTrqHf3U3IzUuD9UYHtDfA8+RXAJ929vrVjAb1aWd/Q4jj55Dt2UcxsJPA9YIK7bzKzB1ucV+57vxg4C/gi8C9mdoK7N6btW3uvIiJlT23aRUQOXtOIWuoBADnNY/4IfDuzkZmdkue1S4GPtePYfwYuNbOq1D7+CwDuvgXYZGafTttdBbxcYB8AhxOB+ZZUo39hvo3MrAIY7u4vAj8A+gLVafVxtN7UR0Sk7KmmXUTkIOXui83s34CXzawJmAtcC9wI3G1mC4jrwJ9pMRKNuy8zsyPyNJtp67HnmNnjwDzgHaI5T8Y1wL1pRJeVwNdb2c98M5sLLE7b/l+BTSuBX6XmN0a02c+MoPM3wMRi34OISDmx6FgvIiLSnJn9I7DN3e8v9bnsr1Q7/6i7n1PqcxERaQ81jxERkULuoXnb9a5oBPDdUp+EiEh7qaZdRERERKTMqaZdRERERKTMKWgXERERESlzCtpFRERERMqcgnYRERERkTKnoF1EREREpMz9P7oj7SkBgwnPAAAAAElFTkSuQmCC\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": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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zJkzOffcc8nOzmb79u106dKFdevWATBz5kyOOeYYAD7//HOOOOIIDjnkEI444ggWLVpUYT3Gjh1bavmTJ09m5MiRNGnSJKqybr31Vv70pz+V/N+vXz/y8vIA+O9//8uPfvQjsrOzueyyyyguLqa4uJgLL7yQfv360b9/fx566KG9ynzvvfc49NBDqVev4hHLc3NzGTFiBIcddhjDhg1j8eLFAEycOJF+/fqRlZXFsccey/bt27n99tt55plnSlrpzYyjjjqKKVOmVLiMRIhraDezkWa2yMyWmNmNER5vaGbPBY9/ZmZdwh67KZi+yMxGVFammV0RTHNm1iZsupnZX4PH5prZofFbYxEREZHqe/nllxk5ciQZGRm0atWK2bNnA/DGG2/w8ssv89lnnzFnzhx+97vfMWbMGAYOHMgzzzxDTk4OjRs3LrfcXr16MX36dL788ktuv/12/u///q/CeowcOZJZs2axfv16wAfesWPHVquscAsWLOC5555jxowZ5OTkULdu3ZL6FxQU8PXXX/PVV19x0UUX7fXcGTNmcNhhh1W6jF/84hc8+uijzJo1i3vuuYcrrrgCgNtuu413332XOXPmMHnyZBo3bswtt9zCueeeW6qVfuDAgXz44YdRr1NNidvFlcysLvAIcCKQD3xhZq845+aHzXYJsME518PMzgHuA842sz7AOUBfoD3wjpllBM8pr8wZwGvAtDJV+THQM/g7HHgsuBURERGJ7OGHE7LYCRMmcE3QIn/OOecwYcIEDj30UN555x0uuugimjRpAkCrVq2qVG5hYSEXXHABubm5mBm7du2qcP4GDRpw6qmnMmnSJEaPHk1OTg7Dhw+vVlnh3n33XWbNmsWgQYMA2L59O+3ateOUU05h2bJlXHnllYwaNapkWeFWr15N7969Kyx/48aNfPrpp4wePbpkWlFREQBDhw7l/PPP58wzz+QnP/lJuWW0a9cu5l2OYiGeV0T9EbDEObcMwMwmAqcB4aH9NODW4P4k4O/mB7E8DZjonNsJLDezJUF5lFemc+7LYFrZepwGPOWcc8CnZtbCzA5yzq2O6dqKiIiI7IP169fz3nvv8fXXX2NmFBcXY2bcf//9OOeiGue7Xr167N69G6BUv+w//OEPHHvssUyePJm8vLySbjMVGTt2LHfeeSfOOU477TTq168fdVnh9Qivi3OO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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": 43,
"metadata": {
"collapsed": 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": 44,
"metadata": {
"collapsed": 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": 45,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=5, include_bias=True, interaction_only=False)"
]
},
"execution_count": 45,
"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": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 46,
"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": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6728.73877623, 7308.06173582, 12213.81078747, 18893.1290908 ,\n",
" 19995.81407813])"
]
},
"execution_count": 47,
"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": 48,
"metadata": {
"collapsed": 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": 49,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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NHliPUfVPLEepY1Nq/f3GjdunObPn6+dO3dKCu0mk5+frx07dshaq2uvvVb33XefPv/8c0lS27ZttWfPnmqPa63Vo48+qsLCQl144YXavXu32rZtq3bt2mnLli1avHhx2djyx6xqXHPHDDsAAIBL+JJ8kkJr2fOL8hUfF6+0sWll9fqUlJSkmTNnaty4cSopKVFsbKyeeOIJRUdHa8qUKbLWyhijhx9+WJJ0880365ZbblHr1q21YsWK49axT58+XTNnztT+/fs1cuRIvf3224qNjVVKSooGDhyowYMHq1evXho1alTZa/x+v8aNG6fTTjtNS5YsqXRcc2fKry+C5PV6bUZGhtNtAACAJmL9+vUaMGCA023AYRX9HhhjVlprvdW9liUxAAAAgIsR2AEAAAAXI7ADAAAALkZgBwAAAFyMwA4AAAC4GIEdAAAAcDECOwAAQBMXHR2t5ORkDR48WNdee62CwWCdj/Xuu+/q8ssvlyQtXLhQDz30UKVjv//+e82ePbvW7/E///M/+tOf/lRhvXv37kpOTlZycrJmzJhR62NX5V//+pfWrVtX9vh3v/udli5dWq/vURcEdgAAgCaudevWyszM1Jo1a9SiRQs98cQTRz1vrVVJSUmtjztx4sQqQ3NdA3tVpk+frszMTGVmZlb5ZaEujg3s999/v8aNG1ev71EXBHYAAIBmZMyYMcrJyVFubq4GDBigadOmKSUlRd98843eeustjRw5UikpKbr22mu1d+9eSdKbb76p/v37a/To0Xr11VfLjvXss8/qjjvukCRt27ZNV111lYYOHaqhQ4dq+fLlmjFjhjZt2qTk5GTde++9kqQ//vGPOvPMMzVkyBDNnDmz7FhpaWnq16+fxo0bpw0bNtTqMyUmJmrnzp2SpIyMDJ133nmSQjPykydP1nnnnadevXrp8ccfL3vNc889pyFDhmjo0KH6yU9+ouXLl2vhwoW69957lZycrE2bNumnP/2pXn75ZUnSsmXLdMYZZygpKUmTJ0/WwYMHy9575syZSklJUVJSkrKzs2vVe03E1PsRAQAAUKH7Fq3Vus276/WYA7u108wJg2o0tri4WG+88YYuvvhiSdKGDRv0zDPPaPbs2dq5c6cefPBBLV26VG3atNHDDz+sRx55RL/61a9066236u2331bv3r113XXXVXjsO++8U+eee64WLFigI0eOaO/evXrooYe0Zs0aZWZmSpLeeustbdy4UStWrJC1VhMnTtT777+vNm3aaN68eVq1apWKi4uVkpKiYcOGVfg+jz76qP7xj39Ikh5++GFddNFFVX7m7OxsvfPOO9qzZ4/69eunqVOn6ssvv1RaWpo++ugjderUSbt27VKHDh00ceJEXX755brmmmuOOsaBAwf005/+VMuWLVPfvn01adIkzZkzR3fffbckqVOnTvr88881e/Zs/elPf9JTTz1Vo38fNcUMOwAAQBO3f/9+JScny+v1Kj4+XlOmTJEkJSQkaMSIEZKkTz75ROvWrdOoUaOUnJysuXPnKi8vT9nZ2erZs6f69OkjY4xuvPHGCt/j7bff1tSpUyWF1szHxcUdN+att97SW2+9pTPOOEMpKSnKzs7Wxo0b9cEHH+iqq66Sx+NRu3btNHHixEo/S/klMdWFdUm67LLL1LJlS3Xq1EldunTRtm3b9Pbbb+uaa65Rp06dJEkdOnSo8hgbNmxQz5491bdvX0nSTTfdpPfff7/s+auvvlqSNGzYMOXm5lbbU20xww4AANBIajoTXt9K17Afq02bNmX3rbW68MIL9eKLLx41JjMzU8aYeunDWqvf/OY3+tnPfnZUfdasWSf0HjExMWVr8A8cOHDUcy1btiy7Hx0dreLiYllra/V+1toqny99j9Lj1zdm2AEAAKARI0boo48+Uk5OjiQpGAzqyy+/VP/+/fX1119r06ZNknRcoC81duxYzZkzR5J05MgR7d69W23bttWePXvKxlx00UV6+umny9bGf/vtt9q+fbvOOeccLViwQPv379eePXu0aNGiWvWemJiolStXSpJeeeWVasePHTtW8+fPV2FhoSRp165dknRcv6X69++v3Nzcsn82zz//vM4999xa9XgiCOwAAABQ586d9eyzz+qGG27QkCFDNGLECGVnZ6tVq1ZKT0/XZZddptGjRyshIaHC1z/22GN65513lJSUpGHDhmnt2rXq2LGjRo0apcGDB+vee+/V+PHj9V//9V8aOXKkkpKSdM0112jPnj1KSUnRddddp+TkZP3oRz/SmDFjatX7zJkzddddd2nMmDGKjo6udvygQYOUmpqqc889V0OHDtUvfvELSdL111+vP/7xjzrjjDPKvqBIUqtWrfTMM8/o2muvVVJSkqKionTbbbfVqscT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\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": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.5567716902028981"
]
},
"execution_count": 50,
"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": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"-29.87162132967278"
]
},
"execution_count": 51,
"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": 52,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Text(3, 0.75, 'Maximum R^2 ')"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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lLr7SGJnxP0gSfUmVYc5wN27d28vKiqKugyRo8LSpUvp06cP+fn59OzZk7Vr19KpUyf27NnD8OHD2bt3Lxs3bqSuro6MjAyKiorIy8vjww8/ZP/+/RQVFbF//37WrFnDCSecwPbt29m3bx+DBg1i3bp1mBkHDhygurqaoqIiKisr2bt3L507d6b+//OlS5dy6qmnArBjxw6qqqooKipq9vzxVqxYQWFhIZ07d+bAgQOsXr2aE088EYDKykqqqqoYMmTIx5+7du1ahg0bRk7OYTdDZt++fWzYsIHjjz8+1H//9rRkyZKP3L0gYUN37xCv008/3UUkOTp37uzvvPOOf+ELX/D9+/f7Kaec4vPnz/dLLrnE3d2rqqr80KFD7u4+Z84cv/zyy93dvba21seOHevPPPOMn3766f7qq6+6u/sjjzzi06ZNc3f3qVOn+pe//GWvq6vzZ5991rt27ervvvuu19bW+mmnneZLly79uIZ6v//9733q1Kktmj/eueee64sXL3Z391mzZvntt9/eqn+XadOm+V133dWqeaMClHkzvmOzwkys4MZj9wGZxC74ubvB9FnAuGAwH+jj7j2CabXEziQB2ODuk8KsVURaZuTIkaxbt47f/e53XHzxxYdNq6qqYurUqaxatQoz49Ch2F1VMjIyePTRRxk5ciQ33HADY8Y0fqPgz33uc5gZJ598Mn379uXkk08G4MQTT2TdunWMGtX0NZytmf+qq65i79691NbW8tZbb7X43+PXv/41ZWVlLFy4sMXzpoPQjllY7MliDxC7q+gIYIrF3WIZwN1vcfdR7j4K+Amxh93U218/TUEhkpomTZrEt771LaZMmXLY+O9+97uMGzeO9957j+eee44DBz65vnHVqlV06dKFLVu2HPFzc3NzgVi41L+vH66piT13Kf4i9fjPb+78Df3mN79h7dq1XHnllUybNq3J9W5o7ty5/Md//AezZ88+bHkdSZgHuEcD5R67I2Y1sStLL2ui/RTgdyHWIyLt7Nprr+V73/vex7/c61VVVTFgQOzu7I8++uhh42fMmMHLL79MZWUlTz/9dKuX3bdvX5YvX05dXR1//OMfW/058bKzs/n+97/PokWLWL58ebPmWbp0KTfccAOzZ8+mT58+7VJHKgozLAYQdwdOYBNHuLd/cKrZEGBe3Og8iz2MZlFw75rG5rs+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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": 53,
"metadata": {
"collapsed": true
},
"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": 54,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "af058c7902994cbe9bfb70784edf9baf",
"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": 54,
"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": "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": "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": "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": "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": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"yhat_test1=poly1.predict(x_train_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": "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": {
"collapsed": true
},
"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": {
"collapsed": true
},
"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": {
"collapsed": true
},
"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
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/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
},
"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
},
"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
},
"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
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7fd614450c50>"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtoAAAJQCAYAAACwxcONAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XmUH1dhJ/rvVS9qrbZsy8bYCMkZG4wXvHSMM04AY2MMmQADPMYsE5xJcAZCtpdDMJkkTszJGfIeIcALMCxxhuQQPH5mAM8clkAwCfAMWArEeAG8YLDsxMiLvGnt7vv++P269VOrtf76qiX58zmnTlXdulW/Wyr9pG/fvlVVaq0BAABm17y5bgAAAByKBG0AAGhA0AYAgAYEbQAAaEDQBgCABgRtAABoQNAGAIAGBG0AAGhA0AYAgAYG57oBs+Woo46qK1eunOtmAABwiFuzZs0Dtdblu6t3yATtlStXZvXq1XPdDAAADnGllB/tST1DRwAAoAFBGwAAGhC0AQCggUNmjDYAwFzbunVr1q5dm02bNs11U5gFIyMjOf744zM0NLRP+wvaAACzZO3atVmyZElWrlyZUspcN4c+1Frz4IMPZu3atVm1atU+HcPQEQCAWbJp06YceeSRQvYhoJSSI488sq/fTgjaAACzSMg+dPR7LQVtAABoQNAGAHgSW7x4cZLkvvvuy6te9aoZ6zz/+c/f7YsB3/Oe92TDhg1T6y95yUuyfv362Wto12R7d2b9+vX5wAc+MOufuy8EbQAA8tSnPjXXXnvtPu8/PWh/9rOfzeGHHz4bTdsrgjYAALPubW9723Yh84/+6I/yZ3/2Z3n88cdzwQUX5Kyzzsppp52Wz3zmMzvse/fdd+fUU09NkmzcuDGXXHJJTj/99PyH//AfsnHjxql6b3rTmzI6OppTTjklV1xxRZLkfe97X+67776cf/75Of/885MkK1euzAMPPJAkefe7351TTz01p556at7znvdMfd7JJ5+cN77xjTnllFNy0UUXbfc5k374wx/mZ37mZ/LTP/3T+YM/+IOp8p2d0+WXX54777wzZ5xxRt761rfu0bm34vF+AAAN/PH/uiW33vforB7zWU9dmit+4ZSdbr/kkkvyW7/1W3nzm9+cJLnmmmvy+c9/PiMjI/nUpz6VpUuX5oEHHsi5556bl770pTu92e+DH/xgFi5cmJtuuik33XRTzjrrrKltf/Inf5Ijjjgi4+PjueCCC3LTTTflN37jN/Lud787119/fY466qjtjrVmzZr81V/9Vb75zW+m1prnPOc5ed7znpdly5bl9ttvzyc+8Yl85CMfyatf/ep88pOfzOtf//rt9v/N3/zNvOlNb8ov/uIv5v3vf/9U+c7O6Z3vfGduvvnmfOc730mSjI2N7dW5zyY92gAAh4gzzzwzP/nJT3Lffffln//5n7Ns2bKsWLEitdb83u/9Xk4//fRceOGFuffee3P//ffv9Dj/+I//OBV4Tz/99Jx++ulT26655pqcddZZOfPMM3PLLbfk1ltv3WWbvva1r+Xf//t/n0WLFmXx4sV5xSteka9+9atJklWrVuWMM85Ikpx99tm5++67d9j/61//el7zmtckSf7jf/yPU+V7ek57e+6zSY82AEADu+p5bulVr3pVrr322vzrv/5rLrnkkiTJxz/+8axbty5r1qzJ0NBQVq5cudvnQ8/U4/vDH/4w73rXu3LjjTdm2bJlufTSS3d7nFrrTrfNnz9/anlgYGDGoSM7a8uentO+nPts0aMNAHAIueSSS3L11Vfn2muvnXqKyCOPPJKjjz46Q0NDuf766/OjH/1ol8d47nOfm49//ONJkptvvjk33XRTkuTRRx/NokWLcthhh+X+++/P5z73ual9lixZkscee2zGY33605/Ohg0b8sQTT+RTn/pUfu7nfm6Pz+e8887L1VdfnSRTbdrVOU1vx96e+2zSow0AcAg55ZRT8thjj+W4447LsccemyR53etel1/4hV/I6OhozjjjjDzzmc/c5THe9KY35Zd+6Zdy+umn54wzzsg555yTJHn2s5+dM888M6ecckpOOOGEnHfeeVP7XHbZZXnxi1+cY489Ntdff/1U+VlnnZVLL7106hi/8iu/kjPPPHPGYSIzee9735vXvva1ee9735tXvvKVU+U7O6cjjzwy5513Xk499dS8+MUvztve9ra9OvfZVHbVnX8wGR0drbt7viMAQEu33XZbTj755LluBrNopmtaSllTax3d3b6GjgAAQAOCNgAANCBoAwBAA4I2AAA0IGgDAEADgna/7rsvecELkhtvnOuWAABwABG0+3Xzzcn11ycvelHyz/88160BAJ7E1q9fnw984AP7tO9LXvKSrF+/fpd1/vAP/zBf+tKX9un4061cuTKnnXZaTjvttDzrWc/K7//+72fz5s273Kef85sLgna/Jl/huWlTcuGFya23zm17AIAnrV0F0fHx8V3u+9nPfjaHH374LutceeWVufDCC/e5fdNdf/31+e53v5tvfetbueuuu3LZZZftsr6g/WQz+ZPX3/5tMjSUXHBB8oMfzG2bAIAnpcsvvzx33nlnzjjjjLz1rW/NV77ylZx//vl57Wtfm9NOOy1J8vKXvzxnn312TjnllHz4wx+e2nflypV54IEHcvfdd+fkk0/OG9/4xpxyyim56KKLsnHjxiTJpZdemmuvvXaq/hVXXJGzzjorp512Wr73ve8lSdatW5cXvvCFOeuss/Krv/qrefrTn54HHnhgl+1evHhx/tt/+2/59Kc/nYceeiiPP/54Lrjggqljf+Yzn5nx/HZW70DhFez9mgzap5yS/P3fJ897XvJzP5dcdVXy8z8/t20DAObOb/1W8p3vzO4xzzgjec97drr5ne98Z26++eZ8p/u5X/nKV/Ktb30rN998c1atWpUkueqqq3LEEUdk48aN+emf/um88pWvzJFHHrndcW6//fZ84hOfyEc+8pG8+tWvzic/+cm8/vWv3+HzjjrqqPzTP/1TPvCBD+Rd73pXPvrRj+aP//iP84IXvCBvf/vb8/nPf367ML8rS5cuzapVq3L77bfn7LPPzqc+9aksXbo0DzzwQM4999y89KUv3eH8xsbGZqxXStmjz2xNj3a/JoeOjIwkJ5+c/MM/JE95SvLv/l3yS7+UrF07t+0DAJ7UzjnnnKmQnSTve9/78uxnPzvnnntu7rnnntx+++077LNq1aqcccYZSZKzzz47d99994zHfsUrXrFDna997Wu55JJLkiQXX3xxli1btsdtrbVOzX/v934vp59+ei688MLce++9uf/++2esvyf15ooe7X5N9mjPn9+Zn3xy8s1vJldckfz5nyef+ERy6aXJr/5qcuaZc9ZMAGA/20XP8/60aNGiqeWvfOUr+dKXvpQbbrghCxcuzPOf//xsmuw07DF/MtckGRgYmBo6srN6AwMDGRsbS7ItLO+txx57LHfffXdOOumkfPzjH8+6deuyZs2aDA0NZeXKlTO2c0/rzRU92v3q7dGeNDKS/OmfdsZqv+51ycc+lpx1VnL22ck73tH5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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
},
"outputs": [
{
"data": {
"text/plain": [
"0.4709833260694387"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"RigeModel = Ridge(alpha=0) \n",
"RigeModel.fit(x_train_pr, y_train)\n",
"RigeModel.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
},
"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
},
"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
},
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Grid1 = GridSearchCV(RR, parameters1,cv=4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the model "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n"
]
},
{
"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_NotbookLink_Top_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>"
]
},
{
"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 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment