Skip to content

Instantly share code, notes, and snippets.

@patrickthoreson
Created February 16, 2019 01:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patrickthoreson/17224fb52fe882fe5af713b8429ff5ef to your computer and use it in GitHub Desktop.
Save patrickthoreson/17224fb52fe882fe5af713b8429ff5ef to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/corsera_da0101en_notebook_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 4: Model Development</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some questions we want to ask in this module\n",
"<ul>\n",
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n",
" <li>do I know if I put a fair value on my car?</li>\n",
"</ul>\n",
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n",
"\n",
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": 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>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</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>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</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>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</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>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>hatchback</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>...</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>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>...</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>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</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>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \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 horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# path of data \n",
"path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>1. Linear Regression and Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<p>One example of a Data Model that we will be using is</p>\n",
"<b>Simple Linear Regression</b>.\n",
"\n",
"<br>\n",
"<p>Simple Linear Regression is a method to help us understand the relationship between two variables:</p>\n",
"<ul>\n",
" <li>The predictor/independent variable (X)</li>\n",
" <li>The response/dependent variable (that we want to predict)(Y)</li>\n",
"</ul>\n",
"\n",
"<p>The result of Linear Regression is a <b>linear function</b> that predicts the response (dependent) variable as a function of the predictor (independent) variable.</p>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
" Y: Response \\ Variable\\\\\n",
" X: Predictor \\ Variables\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <b>Linear function:</b>\n",
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li>a refers to the <b>intercept</b> of the regression line0, in other words: the value of Y when X is 0</li>\n",
" <li>b refers to the <b>slope</b> of the regression line, in other words: the value with which Y changes when X increases by 1 unit</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Lets load the modules for linear regression</h4>"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Create the linear regression object</h4>"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm = LinearRegression()\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How could Highway-mpg help us predict car price?</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For this example, we want to look at how highway-mpg can help us predict car price.\n",
"Using simple linear regression, we will create a linear function with \"highway-mpg\" as the predictor variable and the \"price\" as the response variable."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"X = df[['highway-mpg']]\n",
"Y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using highway-mpg."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(X,Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can output a prediction "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n",
" 20345.17153508])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Yhat=lm.predict(X)\n",
"Yhat[0:5] "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the intercept (a)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"38423.305858157386"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the Slope (b)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([-821.73337832])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What is the final estimated linear model we get?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear model with the structure:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plugging in the actual values we get:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 a): </h1>\n",
"\n",
"<b>Create a linear regression object?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lrm1 = LinearRegression()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1 = LinearRegression()\n",
"lm1 \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1 b): </h1>\n",
"\n",
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lrm1.fit(df[['engine-size']],df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1.fit(df[['highway-mpg']], df[['price']])\n",
"lm1\n",
"\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 c):</h1>\n",
"\n",
"<b>Find the slope and intercept of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Slope</h4>"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([166.86001569])"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lrm1.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"-7963.338906281049"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lrm1.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# Slope \n",
"lm1.coef_\n",
"# Intercept\n",
"lm1.intercept_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 d): </h1>\n",
"\n",
"<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# You can type you answer here\n",
"yhat = 166.86001569 * x -7963.338906281049\n",
"<br>\n",
"price = (166.86001569 * engine_size) -7963.338906281049"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# using X and Y \n",
"Yhat=38423.31-821.733*X\n",
"\n",
"Price=38423.31-821.733*engine-size\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Multiple Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>What if we want to predict car price using more than one variable?</p>\n",
"\n",
"<p>If we want to use more variables in our model to predict car price, we can use <b>Multiple Linear Regression</b>.\n",
"Multiple Linear Regression is very similar to Simple Linear Regression, but this method is used to explain the relationship between one continuous response (dependent) variable and <b>two or more</b> predictor (independent) variables.\n",
"Most of the real-world regression models involve multiple predictors. We will illustrate the structure by using four predictor variables, but these results can generalize to any integer:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Y: Response \\ Variable\\\\\n",
"X_1 :Predictor\\ Variable \\ 1\\\\\n",
"X_2: Predictor\\ Variable \\ 2\\\\\n",
"X_3: Predictor\\ Variable \\ 3\\\\\n",
"X_4: Predictor\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"a: intercept\\\\\n",
"b_1 :coefficients \\ of\\ Variable \\ 1\\\\\n",
"b_2: coefficients \\ of\\ Variable \\ 2\\\\\n",
"b_3: coefficients \\ of\\ Variable \\ 3\\\\\n",
"b_4: coefficients \\ of\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The equation is given by"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>From the previous section we know that other good predictors of price could be:</p>\n",
"<ul>\n",
" <li>Horsepower</li>\n",
" <li>Curb-weight</li>\n",
" <li>Engine-size</li>\n",
" <li>Highway-mpg</li>\n",
"</ul>\n",
"Let's develop a model using these variables as the predictor variables."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using the four above-mentioned variables."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(Z, df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the value of the intercept(a)?"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"-15806.624626329198"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What are the values of the coefficients (b1, b2, b3, b4)?"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" What is the final estimated linear model that we get?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear function with the structure:\n",
"\n",
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$\n",
"\n",
"What is the linear function we get in this example?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Price</b> = -15678.742628061467 + 52.65851272 x <b>horsepower</b> + 4.69878948 x <b>curb-weight</b> + 81.95906216 x <b>engine-size</b> + 33.58258185 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2 a): </h1>\n",
"Create and train a Multiple Linear Regression model \"lm2\" where the response variable is price, and the predictor variable is 'normalized-losses' and 'highway-mpg'.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2 = LinearRegression()\n",
"PV = df[['normalized-losses','highway-mpg']]\n",
"lm2.fit(PV,df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm2 = LinearRegression()\n",
"lm2.fit(df[['normalized-losses' , 'highway-mpg']],df['price'])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #2 b): </h1>\n",
"<b>Find the coefficient of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm2.coef_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>2) Model Evaluation using Visualization</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we've developed some models, how do we evaluate our models and how do we choose the best one? One way to do this is by using visualization."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"import the visualization package: seaborn"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# import the visualization package: seaborn\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Regression Plot</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When it comes to simple linear regression, an excellent way to visualize the fit of our model is by using <b>regression plots</b>.</p>\n",
"\n",
"<p>This plot will show a combination of a scattered data points (a <b>scatter plot</b>), as well as the fitted <b>linear regression</b> line going through the data. This will give us a reasonable estimate of the relationship between the two variables, the strength of the correlation, as well as the direction (positive or negative correlation).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's visualize Horsepower as potential predictor variable of price:"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false,
"scrolled": 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": {
"text/plain": [
"(0, 48264.48467423358)"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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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",
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see from this plot that price is negatively correlated to highway-mpg, since the regression slope is negative.\n",
"One thing to keep in mind when looking at a regression plot is to pay attention to how scattered the data points are around the regression line. This will give you a good indication of the variance of the data, and whether a linear model would be the best fit or not. If the data is too far off from the line, this linear model might not be the best model for this data. Let's compare this plot to the regression plot of \"peak-rpm\".</p>"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 47422.919330307624)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuMAAAJQCAYAAAAkI2p/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3W1wY9d95/nfuRcACfChyVY33Uo3ZYlJT9pWYtmypDgTTacrySZyMtPOzGoSabZi76wz7p04NZ7adTZOttKu7eSFXfHEa0/NZFvjuEZJbY3iaGfWvVNxPE4UDuPEip4cydsWY2kpyezWA/qBzwAI4N6zL+4FeUGCTYAN8OIC308VC+QhQB62ROKHc//nf4y1VgAAAAD2nxP3BAAAAIB+RRgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGKSinsC++3QoUP29ttvj3saAAAA6GHPPvvsVWvt4d3u13dh/Pbbb9czzzwT9zQAAADQw4wxrzVzP8pUAAAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmKTingCwV9OzeZ2fmdP8QkGT4zmdOTmlUycm4p4WAABA01gZRyJNz+Z19sJF5VdKGsumlV8p6eyFi5qezcc9NQAAgKYRxpFI52fmlHaNcpmUjAlu067R+Zm5uKcGAADQNMI4Eml+oaBs2q0by6ZdXVooxDQjAACA1hHGkUiT4zkVK17dWLHi6dh4LqYZAQAAtI4wjkQ6c3JKFc+qUK7K2uC24lmdOTkV99QAAACaRhhHIp06MaFzp+/UxMiglooVTYwM6tzpO+mmAgAAEoXWhkisUycmCN8AACDRWBkHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABiQhgHAAAAYkIYBwAAAGJCGAcAAABikop7AgCA5Jmezev8zJzmFwqaHM/pzMkpnToxEfe0ACBxWBkHALRkejavsxcuKr9S0lg2rfxKSWcvXNT0bD7uqQFA4hDGAQAtOT8zp7RrlMukZExwm3aNzs/MxT01AEgcwjgAoCXzCwVl027dWDbt6tJCIaYZAUByUTOOxKJmFYjH5HhO+ZWScpnNp5BixdOx8VyMswKAZGJlHIlEzSoQnzMnp1TxrArlqqwNbiue1ZmTU3FPDQAShzCORKJmFYjPqRMTOnf6Tk2MDGqpWNHEyKDOnb6TK1MAsAeUqSCR5hcKGsum68aoWQX2z6kTE4RvAGgDVsaRSJPjORUrXt0YNasAACBpCONIJGpWAQBALyCMI5GoWQUAAL2AmnEkFjWrAAAg6VgZBwAAAGJCGAcAAABiQhgHAAAAYtLxMG6McY0x3zTG/Ofw4zuMMX9tjHnJGPOHxphMOD4Qfvxy+PnbI1/j18LxvzXG/FRk/IFw7GVjzCc6/bMAAAAA7bQfK+Mfk/Ri5ONPS/qstfa4pAVJHw7HPyxpwVr7fZI+G95Pxph3SnpI0p2SHpD0b8OA70r6N5LeL+mdkh4O7wsAAAAkQkfDuDHmmKSfkfSF8GMj6cckPR7e5VFJPxu+/4HwY4Wf//Hw/h+Q9Ji1dt1a+4qklyXdF769bK2ds9aWJT0W3hcAAABIhE6vjP/vkv4XSX748S2SFq211fDjS5KOhu8flTQvSeHnl8L7b4xvecxO49sYYz5ijHnGGPPMlStXbvZnAgAAANqiY2HcGPP3JeWttc9Ghxvc1e7yuVbHtw9a+4i19h5r7T2HDx++wawBAACA/dPJQ39+RNJpY8xPSxqUNKpgpXzMGJMKV7+PSXo9vP8lSZOSLhljUpIOSLoeGa+JPmancQAAAKDrdWxl3Fr7a9baY9ba2xVswHzCWvvfSfpzSQ+Gd/uQpC+H718IP1b4+SestTYcfyjstnKHpOOSnpL0tKTjYXeWTPg9LnTq5wEAAADarZMr4zv5VUmPGWN+S9I3Jf1eOP57kv7AGPOyghXxhyTJWnvRGPMlSd+WVJX0UWutJ0nGmF+W9FVJrqQvWmsv7utPAgAAANwEEyw+94977rnHPvPMM3FPAwAAAD3MGPOstfae3e7HCZwAAABATAjjAAAAQEwI4wAAAEBMCOMAAABATAjjAAAAQEwI4wAAAEBMCOMAAABATAjjAAAAQEwI4wAAAEBMCOMAAABATAjjAAAAQEwI4wAAAEBMCOMAAABATAjjAAAAQEwI4wAAAEBMCOMAAABATAjjAAAAQEwI4wAAAEBMCOMAAABATAjjAAAAQEwI4wAAAEBMCOMAAABATAjjAAAAQEwI4wAAAEBMCOMAAABATFJxTwAAAHS36dm8zs/MaX6hoMnxnM6cnNKpExNxTwvoCayMAwCAHU3P5nX2wkXlV0oay6aVXynp7IWLmp7Nxz01oCewMg4AaBkrpf3j/Myc0q5RLhNEhlwmpUK5qvMzc/w3B9qAlXEAQEtYKe0v8wsFZdNu3Vg27erSQiGmGQG9hTAOAGhJdKXUmOA27Rqdn5mLe2rogMnxnIoVr26sWPF0bDwX04yA3kIYBwC0hJXS/nLm5JQqnlWhXJW1wW3FszpzciruqQE9gTAOAGgJK6X95dSJCZ07facmRga1VKxoYmRQ507fSb040CZs4AQAtOTMySmdvXBRhXJV2bSrYsVjpbTHnToxQfgGOoSVcQBAS1gpBYD2YWUcANAyVkoBoD1YGQcAAABiQhgHAAAAYkKZCoBE4MRHAEAvYmUcQNfjxEcAQK8ijAPoepz4CADoVYRxAF2PEx8BAL2KMA6g63HiIwCgVxHGgYSZns3r4Uee1P2ffkIPP/JkX9RNnzk5pYpnVShXZW1wy4mPAIBeQBgHEqRfNzJy4iMAoFfR2hBIkOhGRknKZVIqlKs6PzPX88GUEx8BAL2IlXEgQdjICABAbyGMAwnCRkYAAHoLYRxIEDYyAgDQWwjjQIKcOjGhB+8+qisr63rxzRVdWVnXg3cfpZYaAICEIowDCTI9m9fjz13W4ZEBvePIiA6PDOjx5y73fDcVAAB6FWEcSBCOhQcAoLcQxoEEoZsKAAC9hTAOJAjdVAAA6C2EcSBB6KYCAEBvIYwDCcKx8AAA9JZU3BMA0BqOhQcAoHewMg4AAADEhDAOAAAAxIQyFSBhpmfzOj8zp/mFgibHczpzcoqyFQAAEoqVcSBBpmfzOnvhovIrJY1l08qvlHT2wkVO4AQAIKFYGQcSJHoCpyTlMikVylWdn5ljdRxAx3BFDugcVsaBBOEETgD7jStyQGcRxoEE4QROAPstekXOmOA27Rqdn5mLe2pATyCMAwnCCZwA9htX5IDOIowDCcIJnAD2G1fkgM5iAyeQMJzACWA/nTk5pbMXLqpQriqbdlWseFyRA9qIlXEAALAjrsgBncXKOAAAuCGuyAGdw8o4AAAAEBPCOAAAABATwjgAAAAQE8I4AAAAEBPCOAAAABATwjgAAAAQE8I4AAAAEBPCOAAAABATwjgAAAAQE07gBAAANzQ9m9f5mTnNLxQ0OZ7TmZNTnMgJtAkr4wAAYEfTs3mdvXBR+ZWSxrJp5VdKOnvhoqZn83FPDegJhHEAALCj8zNzSrtGuUxKxgS3adfo/Mxc3FMDegJlKkDCcLkYwH6aXyhoLJuuG8umXV1aKMQ0I6C3sDIOJAiXiwHst8nxnIoVr26sWPF0bDwX04yA3kIYBxKEy8UA9tuZk1OqeFaFclXWBrcVz+rMyam4pwb0BMI4kCDzCwVl027dGJeLAXTSqRMTOnf6Tk2MDGqpWNHEyKDOnb6T8jigTagZBxJkcjyn/EpJuczmry6XiwF02qkTE4RvoENYGQcShMvFAAD0FsI4kCBcLgYAoLdQpgIkDJeLAQDoHYRxNIXe1gAAAO1HmQp2RW9rAACAziCMY1f0tgYAAOgMwjh2RW9rAACAziCMY1cchQwAANAZhHHsit7WAAAAnUEYx67obQ0AANAZtDZEU+htDQAA0H6sjAMAAAAxYWUcANAyDgIDgPZgZRwA0BIOAgOA9iGMAwBawkFgANA+hHEAQEs4CAwA2ocwDgBoCQeBAUD7EMYBAC3hIDAAaB/COACgJRwEBgDtQ2tDAEDLOAgMANqjYyvjxphBY8xTxpjnjTEXjTH/Wzh+hzHmr40xLxlj/tAYkwnHB8KPXw4/f3vka/1aOP63xpifiow/EI69bIz5RKd+FgAAAKATOlmmsi7px6y1d0l6t6QHjDHvk/RpSZ+11h6XtCDpw+H9PyxpwVr7fZI+G95Pxph3SnpI0p2SHpD0b40xrjHGlfRvJL1f0jslPRzeFwAAAEiEjoVxG1gNP0yHb1bSj0l6PBx/VNLPhu9/IPxY4ed/3BhjwvHHrLXr1tpXJL0s6b7w7WVr7Zy1tizpsfC+AAAAQCJ0dANnuIL9N5Lykr4m6f+TtGitrYZ3uSTpaPj+UUnzkhR+fknSLdHxLY/ZaRwAAABIhI6GcWutZ619t6RjClay39HobuGt2eFzrY5vY4z5iDHmGWPMM1euXNl94gAAAMA+2JfWhtbaRUnTkt4nacwYU+vickzS6+H7lyRNSlL4+QOSrkfHtzxmp/FG3/8Ra+091tp7Dh8+3I4fCQAAALhpneymctgYMxa+n5X0E5JelPTnkh4M7/YhSV8O378Qfqzw809Ya204/lDYbeUOScclPSXpaUnHw+4sGQWbPC906ucBAAAA2q2TfcZvlfRo2PXEkfQla+1/NsZ8W9JjxpjfkvRNSb8X3v/3JP2BMeZlBSviD0mStfaiMeZLkr4tqSrpo9ZaT5KMMb8s6auSXElftNZe7ODPAwAAALSVCRaf+8c999xjn3nmmbinAQAAgB5mjHnWWnvPbvfbl5pxAAAAANsRxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmKTingCSYXo2r/Mzc5pfKGhyPKczJ6d06sRE3NMCAABINFbGsavp2bw+/vjz+ub8gt5aLumb8wv6+OPPa3o2H/fUAAAAEo0wjl196isvarFQkfUl1xhZX1osVPSpr7wY99QAAAASjTIV7OqVawU5RnIcI0kyRrK+1SvXCjHPDAAAINlYGQcAAABiQhjHrqYODcm3km+trKx8a+XbYBwAAAB7RxjHrn71gRMaz6VlJFU9X0bSeC6tX33gRNxTAwAASDTCOHZ16sSEfvvBu/Se28Z164Gs3nPbuH77wbtobQgAAHCT2MCJppw6MUH4BgAAaDNWxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYEMYBAACAmBDGAQAAgJgQxgEAAICYpOKeAJJhejav8zNzml8oaHI8pzMnp3TqxETc0wIAAEg0Vsaxq+nZvM5euKj8Sklj2bTyKyWdvXBR07P5uKcGAACQaIRx7Or8zJzSrlEuk5IxwW3aNTo/Mxf31AAAABKNMI5dzS8UlE27dWPZtKtLC4WYZgQAANAbCOPY1eR4TsWKVzdWrHg6Np6LaUYAAAC9gTCOXZ05OaWKZ1UoV2VtcFvxrM6cnIp7agAAAIlGGMeuTp2Y0LnTd2piZFBLxYomRgZ17vSddFMBAAC4SbQ2RFNOnZggfAMAALQZK+MAAABATAjjAAAAQEwI4wAAAEBMqBnvARxVDwAAkEysjCccR9UDAAAkF2E84TiqHgAAILmaDuPGmLcbY34ifD9rjBnp3LTQLI6qBwAASK6mwrgx5p9JelzS+XDomKT/u1OTQvM4qh4AACC5ml0Z/6ikH5G0LEnW2pcksUOwC3BUPQAAQHI1G8bXrbXl2gfGmJQk25kpoRUcVQ8AAJBczbY2/K/GmF+XlDXG/DeSfknS/9O5aaEVHFUPAACQTM2G8U9I+rCkb0k6I+mPJX2hU5MCAPQ3zk8A0C+aDeNZSV+01v47STLGuOEYLTsAAG1VOz8h7Zq68xPOSQRyAD2n2ZrxP1MQvmuykv60/dMBAPQ7zk8A0E+aDeOD1trV2gfh+/TOAwC0HecnAOgnzYbxNWPM3bUPjDHvlVTszJQAAP2M8xMA9JNmw/i/lPRHxpi/MMb8haQ/lPTLnZsWAKBfcX4CgH7S1AZOa+3TxpgTkr5fkpE0a62tdHRmAIC+dOrEhM4pqB2/tFDQMbqpAOhhNwzjxpgfs9Y+YYz5R1s+ddwYI2vtf+zg3AAAfYrzEwD0i91Wxn9U0hOS/kGDz1lJhHEAAABgj24Yxq21nzTGOJK+Yq390j7NCQAAAOgLu27gtNb6YrMmAAAA0HbNdlP5mjHm48aYSWPMwdpbR2cGAAAA9LimuqlI+h8U1Ij/0pZx+kwBAAAAe9RsGH+ngiB+v4JQ/heS/o9OTQoAAADoB82G8UclLUv6fPjxw+HYz3ViUgCA7jY9m9f5mTnNLxQ0SR9wANizZsP491tr74p8/OfGmOc7MSEAQHebns3r7IWLSrtGY9m08islnb1wUeckAjkAtKjZMP5NY8z7rLVPSpIx5ock/WXnpgWgnVjFRDudn5lT2jXKZYKnkFwmpUK5qvMzc/x/BQAtarabyg9J+itjzKvGmFclfUPSjxpjvmWMeaFjswNw02qrmPmVUt0q5vRsPu6pIaHmFwrKpt26sWza1aWFQkwzAoDkanZl/IGOzgJAx7CKiXabHM8pv1La+H9KkooVT8fGczHOCgCSqamVcWvtazd66/QkAewdq5hotzMnp1TxrArlqqwNbiue1ZmTdLsFgFY1W6YCIKEmx3MqVry6MVYxcTNOnZjQudN3amJkUEvFiiZGBnXu9J1caQGAPWi2TAVAQp05OaWzFy6qUK4qm3ZVrHisYuKmnTox0dHwzaZjAP2ClXGgx7GKiaRh0zGAfsLKONAHOr2KCbQTm44B9BNWxgEAXYVNxwD6CWEcANBV2HQMoJ8QxgEAXYXWiQD6CWEcANBV2HQMoJ8QxgEAXcvGPQEA6DDCOACgq9DaEEA/IYwDALpKtLWhMcFt2jU6PzMX99QAoO0I4wCArkJrQwD9hEN/egDHRgPoJZPjOeVXShuH/ki0NgTQu1gZT7jp2bx+5fHn9c3vLujNpaK++d0F/crjz1NbCSCxaG0IoJ8QxhPu038yq4VCRVZSynVkJS0UKvr0n8zGPTUA2BNaGwLoJ5SpJNzc1TU5RnKMkSQZI1ljNXd1LeaZAcDenToxQfgG0BdYGQcAAABiQhhPuDtuycm3ku9bWWvl+1a+DcYBAADQ3QjjCfeJ979DY7m0jCN51so40lgurU+8/x1xTw0AAAC7IIwn3KkTE/rMg3fpPZPjOjI6qPdMjuszD95FrSUAAEACsIGzB7DRCQAAIJlYGQcAAABiQhgHAAAAYkIYBwAAAGLSsTBujJk0xvy5MeZFY8xFY8zHwvGDxpivGWNeCm/Hw3FjjPm8MeZlY8wLxpi7I1/rQ+H9XzLGfCgy/l5jzLfCx3zemPDkGwAAACABOrkyXpX0P1tr3yHpfZI+aox5p6RPSPoza+1xSX8WfixJ75d0PHz7iKTflYLwLumTkn5I0n2SPlkL8OF9PhJ53AMd/HkAAACAtupYGLfWvmGtfS58f0XSi5KOSvqApEfDuz0q6WfD9z8g6fdt4ElJY8aYWyX9lKSvWWuvW2sXJH1N0gPh50attd+w1lpJvx/5WgAAAEDX25eacWPM7ZLeI+mvJb3NWvuGFAR2SbWefEclzUcedikcu9H4pQbjAAAAQCJ0vM+4MWZY0v8l6V9aa5dvUNbd6BN2D+ON5vARBeUsuu2223abMgB0zPRsXudn5jS/UNDkeE5nTk5xTgAA9LGOrowbY9IKgvj/aa39j+HwW2GJicLbfDh+SdJk5OHHJL2+y/ixBuPbWGsfsdbeY6295/Dhwzf3QwHAHk3P5nX2wkXlV0oay6aVXynp7IWLmp7N7/5gAEBP6mQ3FSPp9yS9aK39ncinLkiqdUT5kKQvR8Y/GHZVeZ+kpbCM5auSftIYMx5u3PxJSV8NP7dijHlf+L0+GPlaANB1zs/MKe0a5TIpGRPcpl2j8zNzcU8NABCTTpap/IikX5D0LWPM34Rjvy7pU5K+ZIz5sKTvSvrH4ef+WNJPS3pZUkHSP5Uka+11Y8xvSno6vN85a+318P1/LunfS8pK+kr4BgBdaX6hoLFsum4sm3Z1aaEQ04wAAHHrWBi31n5djeu6JenHG9zfSvroDl/ri5K+2GD8GUk/cBPTBIB9MzmeU36lpFxm809vseLp2HguxlkBAOLECZwAsE/OnJxSxbMqlKuyNriteFZnTk7FPTUAQEwI4wCwT06dmNC503dqYmRQS8WKJkYGde70nXRTAYA+1vHWhgCATadOTHQ8fNM+EQCSg5VxAOghtE8EgGRhZRwAQr2wohxtnyhJuUxKhXJV52fmEvWz9MJ/CwBoBivjAKDeWVGeXygom3brxpLWPrFX/lsAQDMI4wCg3jmQZ3I8p2LFqxtLWvvEXvlvAQDNIIwDgHpjRVnqjfaJ8wsFVT1fc1dWNfvmsuaurKrq+Yn7bwEAzSCMA4B6Y0VZ6o32icMZV5cXS6p6Vq4xqnpWlxdLGsq4uz8YABKGDZwAoGBF+eyFiyqUq8qmXRUrXuJWlGv2o31iJxkTHt5stHmOs42MA0APIYwDgIIA++ClRX3h669orexpKOPqF++/o+2hli4hu1tZr+ro2KCurpZV9nxlXEdHRge0ul6Ne2oA0HaE8S7EkzWwXad/L6Zn83r8ucs6PDKg28KV8cefu6x3HRtr2/epdQlJu6auS8g5id/xiMnxnPIrJU0dHt4YK5SrmhgZjHFWANAZ1Ix3GVp6Advtx+/FfnTwoEtIc3phEyoANIsw3mV4sga224/fi/3optIrHVs67dSJCT1491FdWVnXi2+u6MrKuh68+2hHSoYefuRJ3f/pJ/TwI0+y6AEgFoTxLsOTNbDdfvxe7Ec3lV7p2NJp0ZKhdxwZ0eGRAT3+3OW2hmWuQgLoFoTxfdDK6gtP1sB2+/F7sR+lEZRfNIeSIQD9hDDeYa2uvvBkDWy3H78X+9Gfuxd6gO8HSoYA9JO+66ZS8XxdW11XJuUEb67T0d610dUXScplUiqUqzo/M9fwCfjUiQmdCx93aaGgY3RTAfbt92I/+nMnvQf4fqh1U6n93ZQ6UzLU6e8BAM3ouzDuW2mpWNn42BijtGuUSTkacF2lU0YZ11HKbc9Fg/mFgsay6bqx3VZfeLJGu/VCu0x+L/rHmZNT+pXHn9flhaKqvq+U42hkMKXf+Jl3tvV79MohTwCSre/C+FbWWpWrVuWqr1VtHijhOkZp16lbQc+4jhyntVV0Vl8QN3pbI4msJJnw1E0TftxGXIUE0C36PozvxPOtPN9TacumsVpA3wjq4e1OWH1B3FotlQLidn5mTgeyad16ILsx1on/Z7naAqAbEMZbVPF8VTy/buxGpS6sviBueymVAuI0v1CQa6S5K6sqe74yrqNDwxn+nwXQkwjjbbBbqcsPHDug8x98755LXYCbQakUkmZkIKWX8qtyHSPXMar6VpcXSzo+MRz31ACg7QjjHdSuUhfgZlAqhaSxNqwQrxWK2y3jANBDCOMxaLXUBbgZlEp1l17obNNpq2VPR8cGdXW1vFGmcmR4QGtlb/cHA0DCEMb3wVNz1/XY0/N6Y7moW0ezeujeSd03dbDuPjcqdYmuog/sQ2909B42qnUHOts0p1ZaNXV4syylUK5qYmQwxlkBQGew7NphT81d1+eeeEnX1tY1OpjStbV1fe6Jl/TU3PWmHu/5VsWyp+ViRVdX1nV5oahXrxV0aaGgKyvrWipWVKp48n0u3wLdjiPYm8NJxAD6CSvjHfbY0/Oqep4WC54qnq+062h4wNVjT89vWx1vVnQVPWprDXptRR1Ad6CzTXMorWoNpU9AshHGO+y162taKVZkHCMn7AqwsFZR1V9r+/eq1aJHv7JjjNKRQ4vSqaDDCyEd2H+91Nmm0wGQ0qrmUPoEJB9hvMPKVV8yQSiWJGMkz2xf1e4U31qtVzytb+nowoZRJE0vrP71SmcbAmD34FAvIPkI4x2Wdo3Wq5LvWxkj1TpzZdx4N2DutGHUMaZh20WX3uiI0fRsXh9//Hmtrlfl+VZXV9f18cef12cevCtRgaNXyi8IgN2D0icg+QjjHXb7LcO6tLCmtfJmzfhQJqVj40NxT60h31qVKtt7o9e6ugSlLuGtS0jH/vjUV17UYqEi1xi5xsj60mKhok995cXEhr8kb7nmhMzu0UulT0C/oiahwx66d1LplKtDwwO649CQDg0PKJ1y9dC9k3FPrSW1ri5LYVeX1xeLeu3aml67tqY3loq6urrZ2cWjswva7JVrBfm+1brnq1T1te758n2rV64lK/zVyjvyK6W68o7p2XzcU2vJyEBKlxdLqvq27oTM4QHWd/bbmZNTWi5W9NJbK3rxjSW99NaKlouVxJU+Af2Mv5wddt/UQX1Mx/XY0/N6c7moIzv0GU+qWkiFAMP/AAAgAElEQVQvqvFKem2z6ECKlXTsXcXztXWXhR+OJ0mvlHdwQmZ3sZJkgr1AMsm+6gL0I8L4Prhv6mDPhO9mEdLRTjtdbEnaRZheqe/lhMzucX5mTgeyad16ILsxlsQXeEA/I4xjX+0U0lPOZm/0IKwbThpFz+mV+l5OyOwevfICD+hn1IyjK1R9X4VyVYuFsvLLpbqTRvPLJS2slbW6XlW56nMpvA/tdOUkaVdUeuVkyV75OXrB5HhOxS0b7pP4Ag/oZ4RxdK2g/aKv1fWqFsKQfmmhoFevFTR/vaC3lku6vlbWSqmi9apHSO9hp991pKXxbnXqxIQevPuorqys68U3V3RlZV0P3n00ceUEp05M6NzpOzUxMqilYkUTI4M6d/rOxP0cvYAXRkDyUaaCxLHWquLZhpv3arXotQON0uHJo07CVlBR77MP3S3pOV144U15YQeP0+86Eo4nx/RsXo8/d1mHRwZ0W3joz+PPXda7jo0lNsjyEjhevdK7Huhnpt9WE3/w3XfbL39tJu5pYJ/VatLTrtnok05Ix357+JEnt9WM12qt/8NH3hfjzFoTPYEzepIoq+MAsMkY86y19p7d7sfKOPpC1fdVLW9fSY+G9NpK+kCKjaPojF45LKdXWjQCQDcgjKOv7RTSa6E82oYxk2KLBW7OcMbVS/lV+TYo76h6ni4tFHV8YnjXx3YTOnig3aZn8zo/M6f5hYImKbVBnyGMAw1UPD+oSV/fHDPGKFXXJ91Qk76PeuHJeq3sybOSUfAmSZ5V4vpz90qLRnSHaNlT9GTac1LifseBvSCMA01qZuPoRl065S5t1StP1vmVdaWc4LAiayVjJNcE4zvpxhchZ05O6eyFiyqUq3U143TwwF5Q9oR+RxgH2qC2kl4o1483CumspLeul56sHRP8f1Dj+dtf3NV064sQOnignSh7Qr8jjAMd1EpIZyV9Z73yZH3HLTm9fGVNxrcyJlgd9630fYcal3d084uQUycmYp8DegNlT+h37EgDYhAE9ODE0Ssr63p9sahXrq5p/npBby6VdG11XculioplT9UGZTH9pldOGfzE+9+hsVxaxpE8a2UcaSyX1ife/46G959fKCibduvGkvgiZC+mZ/N6+JEndf+nn9DDjzyp6dl83FNCh3BwEfodYRzoIrWQvlSs6OrKut5YKuq71wt69eqaLi8WlV8paalQUaFc7auQ3itP1qdOTOgzD96l90yO68jooN4zOa7PPHjXjivMvfIipFW18pz8SqmuPIdA3ps40RX9jkN/gARzTP1Jo6mw5CXtmp4realtZOynGuXp2bx+5fHntVKqqur7SjmORgZT+u0bBPhe0CuHIwHobxz6A/QB31qVKp5Kle2t8Wp16a5jlHaNXMco5QSBPeUkL6z3a42ylSQTtNaU6Y/j53tljwAANKPvwvhr19b0K3/0vEazaR3Y4a32OQ55QZJt9ErfgesYpVxH6fA25Rqlnc3w3m1hvRtb/HXa+Zk5HcimdeuB7MZYt2zg7CQ29AHoJ30Xxtervp797mJT982m3UhIT+0Y4Gvjo4MppVwCPJLB860839NOHa5dZ3M1fevq+n4H9m5t8ddp/bpCTB9zAP2k78L44eEBPXzfpJaKFS0VK1ouVrRUDDbMrZQq8iPXgIsVT8WKpzeXS01//aEBd3tYH9x5FX54MCWXntPoQkFYtypr59X1lOPIdc221fVa7Xq7dHOLv07q1xVi+pgD6Cd9F8bHhzL6Z3+v8eqKb61WS9WNoF4L64tbQvtSsaylYlWLxbLW1utrddfWPa2te3p9sbkAbySNDKZ0IJvWWC7dVPnMUMbtuhIC9Keq76vqq+HqujFBbXp6y8bSWi17K1gh7r8V4n7dIwCg//RdGL8RxxiNhqF3ssnHVD1fy2GAX46E+FqAX46E+9rnC+XNAG8lLZeqWi5VNb9QbOp7uo7RaBjgG4X1Rm+DaQ6Uwf6y1qri2YZ169GgnnaDVfVaN5hGm0tZIWaFGAC6jbU2PLzNyio4yM0qGGulWSFh/CalXEcHhzI6OJRp+jHlqq/lUmVbSF8qVrRY2B7gF4sVlaubgcbzrRYKFS0UKk1/z7RrWgrvbGBFJzUT1FORVfT//u++Xb/+n76ly4tFeb6V6xgND6T0Gz/zzhhmv79YIQaAxmph2CoMxJEwrLqx8L6SrB8JzOG4Hz5OG2PRgL3z12sXwngMMilHh4YHdGh4oOnHFCteXWjfvgq/fXW+GimAr3hWV1fLurpavsF3qTeYdloK8GxgRTtsBnWpqOAq0sJasJ/D961838oJ77de8VTx/LbWp3daP3aFAdAffN9uhNiN4BoG2+jqsbaG3fD+0TBcC8x+JAzXxn3b3jAcN8J4QmTTrrJpV28bHWzq/sEphV6k3n33AL+8ZQNrqeKrVFnXW8s79dvYjg2s6ITHnp7X8EBKhyMvYIsVT7/7X+d0/MiIjAm6u2RcR5mUs9EJxnWMXGO65kViv3aFARC/nYJyLdxujm0vvZDqV479cDXZ921d2MbeEMZ7lDFGQwMpDQ2kdHQsu/sDtLmBdacAX9vAWiuxqdXER93MBtZmV+CHBtjA2m/eWC5qdLD+z9Vg2tGby8E+C2utylUblHPt8Npxa0B3wlvXDW+3fK4T+rUrDIAb2xqAt64qb4z59SvDfoMV5EaP7aVV5F5EGMeG6AbWZnm+1Upp62p7uT7AF8paKlXbtoHVMdoxuG++Xx/ws2kCfJLdOprVtbV1ZdPuxlip4uvIaHMvNKXNVo3NcMJwnooEdScM6Y7R5sdhfXuz4b1fu8IA+8n3gwAa/a1s9Od/c8W39vHmCrEUWf2tlUlEV4gbPL72NTbeD+8TLcOohWjCMqII47gprmM0lstoLJfR25t8TN0G1kKlbjPrZvvIyOp7saJSZAOrb7WnDax1q+3R0plc4/r3gUjwQ7weundSn3viJRUrngbTjkoVX1Xf6qF7m+171BrfWvlh3Xoztp5mWmvh6GwE+eBqVb92hUFv2a2DxLaV28imt61fZ+P9jbHNsLvtAQ14NniRXZtPsy+4gW5CGMe+28sG1tKWDay14F43tiXgV7z6DazXVsu6tscNrFvr3hutwI9m04naSJgk900d1Md0XI89Pa83l4s6MprVQ/dO6r6pg3FPTdLup5lKwWr7P3rPUX32T7+jqudrMO2qVPFU9aWfv2dSV1fXZRSE9uA2fN9oY9wxklEw5pjIbeT+vYKNrs25UTeJbZvgpLoyh406X6u6j7dtmot8LwDtZ/rtl+sH3323/fLXZvb1ez41d12PPT2vN5aLurXLQkSS3ejf1VqrYsWrD++FyIr7lsOdagH+ZhdVhjLujvXujQL8yGCaDax9pvb/badeVNQC+UZAD8O7FAn44ftbS21qNfOus/mYus1bkY9rdvr8jS7db31s9AWHkfT171zRb/7xi0q7pu6wo//1p9+h+48fCn5PI3UI0cdrc3jz544ULOz0emWncWu3f53a91P4PTdapkXCb+2xtYAbXSmuD7qRf5HIv12j1mp1QVuEY6Dbfe/EyLPW2nt2ux9hvMOemruuzz3xklKOqbu8/rEfO04gvwmd+Hf1rdXaenXb6vtSobw9vO+wgbVVtQ2sjQL8TvXvQwMpOT20Agps9T/94fPb9ggUK55uGRrQ7/z8XTHODACa12wYp0ylwx57el4px2w8qdRWeR57ep4wfhM68e/qGKORwWC1+th4c4+JbmCt6zizraRmM8Cv7bCB9VKLG1hbCfBsYEWS7NY9B72HK8joZ4TxDuNJpTO65d81uoG1WeWqv2OAX2wQ5Du9gXWnAM8GVsSlHd1zkBzRK52jgyldW1vX5554SR8TV5DRHwjjHcaTSmck+d81k3J0y/CAbmlxA2v9inu1vgtNIbKBNbzfTW9gTTkt1b93egNrr6yc/cFfvaovPXtJxYqnbNrVz733mH7h794e97S6yn53z0G8uIKMfkcY7zCeVDqj3/5dB9OuBls8gbVY8bRY1zpycwV+p1X4uhNYq75KK+vKr7RwAmu4gbU+xKcahPjNLjXNbGDtlZWzP/irV/Xok6+Fvcql9aqnR598TZISF8g7+eKo27vnoL265UonEBfCeIfxpNIZ/LvemDHBKY+5TErfo+ZPYK1tYK2F+OVI3/dacI+G+JVSta47xlrZ01rZ0xtLzZ3AKm2ewFrfPjKlA7nMxvuP/uVrstYq47qSTe7K2ZeevRQG8fAKgpHk+/rSs5cSFcb388VRf7UY6E9JvtIJtANhfB/xpNJe900dTFQQ63Z73cC6GnaaWSyW68J70EKyUhful4oVra3Xn6SzUqpqpVSV1MwqWLBKH7Tfk95cLunsly/uugKfy3THBtZixdPWSh5jgvEk6XRZQa9cCUFz+u1KJ7AVYbzDeFJBL3MdE5xgmkvrNjV3imTF87USaRW5uOUU1mjpTO1zpYpf9zU8a+WF+fXrL1/d9XumHLNDUN85wA92YANrNu1qverVndNtw5X+JOl0WQE1xP2FK53od4TxDuNJBaiXdh0dHMro4FDzHWj+8qWr+td//rKMpJRrVKx4qnpW995+UMODqfoA32ADa9W3urZW1rW15jewDqScHVpINg7wo4NpZVI33sD6c+89FtSI+76MqR3sEownSafLCqgh7j9c6UQ/I4x3GE8qwM37keOHNHdltekuJNZalSr+tj7vtaC+Ux/46AbW9aqvfIsbWHMZ94ar728/PKSfeufbNP23V1Sq+sqmHf38PZOJqheXgrKCT391Vm8tl+T5Vq5jNDSQ0kdPfV9bvj41xK3plU5DQL8ijHcYTyrAzXtq7rr+5Ntv6eBQZqOm9E++/Za+/8how9BhjFE24yqbcXXkQPMdaNbWvYYhfaeDnLZuYC2UPRVa2MBaqPj6o+cu67+8mNeB7PaTWMcarMwPD3bRCawmPCq+zdOhhrh5lEICyUcY7zCeVICb99jT86pUPS2WPVU8X2nX0VDGbWu5lzFGw4MpDQ+mdHS8uRfL0Q2sdX3fG9TC1962bmBdXa9qdb2qy4vNzdMx2ug8s1v9e+12qM0bWB97el7DAykdjvTKb2f5HTXEzaMUEkg+wniH8aQC3LxXr61qdb0qIyPHGFU9q8ViRZ6/Guu8ohtYm1Xx/KBUplRtvArfIMRHN7D6VloMS25ammcktO90mFM0wA+mnB0D/H6U31FD3BxKIYHkI4zvA55UgJtT8ax8X7KysgqqIoykspe8hqFpt/UTWNcrnpZL1R1r3TfLaDbbTEY3sHq+1fW1sq63sIE1k3J0YHB7gB/LpZV2HF1fKyubduUaI8cxqniU38WBUkgg+QjjABIh2tzQqr/69g+kXR1Ouzo80lyAt9aqVPV3XGlfKmw/wGnrBtZy1deV1XVdWb3RBtb61fn8aln/5N/99a4r8BtlNIMppbY2XkdLKIUEko8wDiARjOoDeJdsYexKxgQ1xNm0qyOje9vA2qjefTPcV3VtdV1r5fr693LV15vLJb253PwJrMMDqZbKZ0a6aQNrF6AUEkg+wjiArmetv20l3EqS9RvcG3ux5w2s69WNMpmdNq0ub6zCB5tVo/aygXWkQfnMjQJ8uzewdhtKIYFkI4wD6HrGODIKVmFrNePBJyhxiFN0Y2izqp6/sXl1uUGpTG389cWS3lopqerZuhdivtXG/fYyz0YBfnQw8nFu9w2sANBOhHEgZIyRYyTHGBlT/7G0pSxi63O0DeuYrVSLDtaGPZglmfABtY9r97Ph43x/8zHR+0XfNyb4KtGvaUw4lej9Ix/sliXq5mEl39q6+TTzON/e+L4m8u93o38Pz1rZHb5WJuVoveLJOGbj5Err211PvOwFvXagS6qJE1hrvbOPjA5qMO2oWPZU9oI66NsO5hrWu0c3sC6VKipXN6+atHMD641W4Pvh/0cA7UcYR6xqgbcWLIOx+uC5ETpNfQDdeh9t3GcPj2cF7KZYaxXN0Xv9N7XWyvOt/NoLg/BrHp8Y0Xevr2q5WFXZ85VxHY0OpXXbwWFNjA4G9/WDx/jWygu/TtWzqvo7h/xu168HumztnZ3LpGQqnma+c1W/8/N37fr42gbW7WF9s1xmsViuD/DFirzIi9DmNrDWy6bdhivwO25kZQMrABHGsQdbV4wdZzNQO04w7hgj1xiZ8GM3XG12auE7covkM8bsugrf7NdJudu/0C+d+l6dvXBRt46lNw41qXhWv3TqezU8sPufMc+3qvr+RtC3NrhVuMJfG/PCFwCeH4T53VbsO61fD3S52d7Z0Q2sb2tlA2vZa3jaarQWPhrgV0r1HWiKFU/FitfSBtahAbdBSN9yEmuODaxALyOM9wkTDcTOlnKMBqvFjgmCteuYzXDtEKARj1MnJvTgpUV94euvaK3saSjj6hfvv0OnTkw09XjXMXIdd/c77sD3gxX2aKjf/NjK92sr+u0N7f16oEscvbONMRoeSGl4IKWjY819H99arWzp/x59v7YKH+1Os1Kq38C6tu5pbd3T64vNBfidNrBuDfDRt6GB3t7ACiQdYTwm0dC7UULRqLRi4wHbQ3M4vK2+uRakN94nQCPhpmfzevy5yzo8MqDbwtXhx5+7rHcdG2s6kN8MxzHKOLXfoZ1Dve9vlsjUwnltBb5WQlNbhS97virejVfdbx3N6vLimlbXPVU8X2nX0fCAq6NjQ+39AbtMUnpnO2ZzY2izM/N8u6115PLWVfhw9b12n0KkheReN7CODqa2r8DfoA5+ML2/G1h7bW8E0Iq+DePN1ipvPP822CAXDca1wFtXihGpVXbqVpwJxkArzs/MKe0a5TLBn6xcJqVCuarzM3P7Esab5ThGjozSLSzCl6u+Kl7wVgvonheswL9n8oBeuLwY/n2RKp6va2u+/v4PHujcD9EFerl3tuuYXTewblWu+kEwLwSbU+vLaMKa90JZS+Eq/WJx+wbWhUJFC4XmA3zaNS2F95vZwNqveyOAmr4L4wMpR1OHh+OeBrCvpmfzOj8zp/mFgibHczpzcqqrQuxu5hcKGtvSPi+bdnVpoRDTjNonk3IahhhrrV58c0WHhzNaKW1uXB0aSOmFy8vKZtxg9T2ycbWX0Dt7Uybl6NDwgA4NN3cCqySVKl5d3XvDAL9lvBopgK94VldXy7q62nwHmsG001KAr21g7de9EUBN34VxoN9Mz+b18cef1+p6VZ5vdXV1XR9//Hl95sG7EhPIJ8dzyq+UNlbGpWCz3LHxXIyz6ixjjC4tFnV4ZFATo5tX06y1yq+UdOuB+rrmRnXtG2+1LjV+vBtSW0HZws0ZTLsabHEDa6HcXICvfW55ywbWUsVXqbKut5ab70AzNOCqVPaUdp1wb0ewv8lxgnKcv3jpqg5kUxrLZnQgm9bwYEouV5fRYwjjQI/71Fde1GKhIjfcxGt9abFQ0ae+8mJiwviZk1M6e+GiCuVqXTeVMyen4p5aR7XyIqTZunapvra91jHGq21ErbWHjLE1JGUL+88Yo6GBlIYGUvqeFjawrpa2h/RogN9aG7/cYAOrJHnVxqfpfvLCxfp5Shppsf6dDazodoRxoMe9cq0QbO51Nvc6WN/qlWvJKfE4dWJC5xTUjl9aKOhYAktt9qJTL0JarW2vesEGyornq+pZVfygtr1S9TtSHkPZQjI4xmg0DMKtbGBdKdUH9r/57qL+9MW3gtN1jVSp+vKs1chASsWKr2JlcwOrlbRcqmq5VNX8QnNdhRyjHYP75vv1AT+bJsBj/xDGASTCqRMTPR++t+qWFyEp11HKDUoftqqGm07L3uZG1JtdUe/Xlo79wHWMxnIZjeU2N7D+veOH9EN3HNzcsHtouK4saWMDa2SFfbP3e3VbX/ilYkXrkZV232pPG1jrVtsHtwf4sVx9/ftAKzu3gQjCeBdK+mY7dJepQ0OafXNFZW9zdclIOnGEjcxJ0O0vQmpBPdugNCa6kl71Ij3avRv3ZY+jzzjidaMNu3vdwNq45r280ft9aUvAr3j1G1ivrZZ1bY8bWLf2fW+0Aj+aTSvNCawQYbzrTM/mdfbCRaVdo7FsWvmVks5euKhzUlc/IaN7jWVT2hp5bDgOdFLadZTeIahLQe16JXKIUi2w/8IP36Z/9V++0/V9xtG9ahtYJ1rcwLpc2h7g61fi62vjb3oDa8bdsd69UYAfGUyzgbUH8WzcZZLSTxnJ8dRriy2NdyuuGPUexzEaaHAy6n/73kndMjQQ/Pe+vqbvGcvpgz/8dt03dbCjteroX9ENrFs7Fe2ktoG1lQC/bQNr2dNa2dMbS82dwFrbwNoowO9U/z40kJJD/XtXI4x3mV7up4x4eOHSTfRvsbWb40nAFaP+s1t5TjU8JKlcDd7Ww8OTkExJbGUZ3cB6bLy5x9Q2sC4WN09aja60L5eCEB8N8GvlxhtYL7W4gbWVAM8G1v1FGO8yk+M5vXptVcvFzUM+RrMp3X4L9b3YG9cxDYN3ki51csUIWwW16o4i+wDl+8FG0lpIr4S3SXrh2Y/6qZVlow2su6l4/sbJqo0C/FLd54LbUrs2sA5uDfGpbUF+LLxlA+veEca7zA9PHdRTr14PWtEZqez5yq+U9fC9vfUHqZd1WznF6Xcd0X/6mze09ar+6XcdiWdCe8AVIzTDcYwGHXdb1xfPt8EKem0l3fMpdekitLK8sbTr6JbhAd2yxw2sQVDf3vN9a4i/6Q2sKael+nc2sG4ijHeZb8xd33b89chgSt+Yu65/Effkuky3hd7anLqtnOKzD90t6TldeOFNeb6V6xidfteRcDwZ+vEETrSP6xhlM+62jaSVLSvoZW/z5FLsH1pZtt9eNrCWKn5kpT3SdaZWA19biY/UwtdtYK36Kq2sK7/S+gbW3Vbfo11qknRVt1mE8S4zv1DQoeEBHR7Z/AWy1rICuEU3hl6pe8spPvDuY3pzubzxwuUD7z4W21z2ol9P4ERnBd1etq/MRbu8VDxbd+gRYb39aGUZP2PCF6wZV0cONBfgfWu1tl5/Amu073uj/u8rpWpdd69WN7BKmyew1rePrA/w0R7wSdjAShjvMqwANqdbQ283llN06wuXVnTL4TfoDzt1eampC+tVq3XPC1fY937QUT976N5Jfe6Jl2hlmTCOMRoZDNottrKBdbVUH+Dr6t1LWwJ8oX4DqyStlKpaKVUlNb+BtRbcm12Bz2X2dwMrYbzLsALYnG4MvVJ3vpjq1hcurer2w2/QP+rCekaSgr9F1tqNuvT16manF2rTb+y+qYP6mI5vnsCZkG4qaJ3rGB3IpXUgl979zqGq52u5tHUFPgjqS6XGK/ClSv0G1sUw9Dcr5ZgdgvrOAb7RCcVNf789PxIdwQpgc7ox9Erd+WKqW1+4ADfSjXtCdmOM0UDK1UDK1UhknDaMu7vRCZzobynX0cGhjA4ONd+BZr3iNQ7wW2reo2/RDaxV3+raWlnX1prfwDqQcraF9KZ/xqbviX3DCuDuujH0St35YmpyPKdXrq5u2xR8xyHaZaI79UJpVVSjNoy1VfTaIUaVMLDvpdQliT26gU4aSLs6nHZ1eKS5DjTWWhUr3sam1UblMkul8DYyHt0+sl71lW9xA2sNYRyJ1I2hNzq3bphHTaN2mVdWy/on9/FkHYckrvjut14prbqRzVV0SVvywtYOL+UbrKT3U49uoFOMCf7e5DKppjewWmu1tu5t6zwT7UDzu01+f8I4EqvbQm+3+sbcdU2MZLYdJEW7zP3Xayu+ndLvpVWZlKNMytFQJKQ3Wkmv+FaPPUOPbiAOxhgND6Y0PJiSdtjA2mwY71i3dWPMF40xeWPM/xsZO2iM+Zox5qXwdjwcN8aYzxtjXjbGvGCMuTvymA+F93/JGPOhyPh7jTHfCh/zedND57ZOz+b18CNP6v5PP6GHH3lS07P5uKeEBJtfKCizpX1bxnX6Jth0k+iKb20lJu0anZ+Zi3tqXWVyPKdLCwVdfH1J37q8pIuvL21cAetXtZX04YGUxocymhgd1NGxrK6urmt0MKV0WArjhMGcHt1AcnTy6KN/L+mBLWOfkPRn1trjkv4s/FiS3i/pePj2EYUvJowxByV9UtIPSbpP0idrAT68z0cij9v6vRKptnKWXynVrZwRyLFXwxlXlxdLqnpWrjGqelaXF0saynB0cbPa9QJ5fqGgqudr7sqqZt9c1tyVVVU9nxdGWxwZzWixWN2oxwy6IVR1ZLT5DVz9YnI8p1LVl+MYuY5R2nXkWavbbxnS0fGsDo0MaDSbVjbj9uRhKUAv6FgYt9bOSLq+ZfgDkh4N339U0s9Gxn/fBp6UNGaMuVXST0n6mrX2urV2QdLXJD0Qfm7UWvsNG+x0+f3I10o0Vs7QbhsXjUzkLTqOG2rnC+SRgVTwwig8CbXqBy+MhgeoGIz66rcb/9vuNN7PzpycUsWzKpSrsja4rXhW/+OPfq8GUq5GB9M6NDygWw9k9fZbhvT2W4Z064Gsbhke0Mhg0I6t2w9EAXrdfj8DvM1a+4YkWWvfMMbUiiSPSpqP3O9SOHaj8UsNxhsyxnxEwSq6brvttpv8ETqr32sl0X4r61UdHRvU1dXyRs34kdEBra5X455aIrRzM+FGl4zaDny7ZRySpEJ4yEc0I1q7OY5NrW5md53wpEXVXxmrhvXo5aqvdc/bqE2nRzrQed2yHNPoZbndw3hD1tpHJD0iSffcc09X/2Xp1v7ZSK7J8ZxevbZaN1b2fN1+C60Nm9HOF8irZW/7C6PhgW0nzPU7Y4Lw3Wgc27VjM3vQflHKZlzVDjGSFGwU3dbZhZNGgXba7zD+ljHm1nBV/FZJtWuOlyRFz709Jun1cPzUlvHpcPxYg/snXrf2z0ZyNWptmF8p6+F76bTQjHa+QOaFUXOOjg7o0tL6tkB+dLS5nsFon7TrKL2lR7q0GVqKKkMAAByzSURBVNIr1VqXl+DN8wnp6A5J6r/fyQ2cjVyQVOuI8iFJX46MfzDsqvI+SUthOctXJf2kMWY83Lj5k5K+Gn5uxRjzvrCLygcjXyvRTp2Y0LnTd2piZFBLxYomRgZ17vSdtD1rgK4zzfnG3HUdHs4o4zrybdBJ5fBwRt+Y27qlA43sVJO7lxfIPzx1UPmVYFU8+sLoh7v0CSIuv/UP36WRAVe1/YaOkUYGXP3WP3xXvBPDhiCgp3Qgl9bhkQF9z9iWmvShAQ0PppRJOexPwb6r9d+/trZe13//qS593uvYyrgx5j8oWNU+ZIy5pKAryqckfckY82FJ35X0j8O7/7Gkn5b0sqSCpH8qSdba68aY35T0dHi/c9ba2r/kP1fQsSUr6SvhW0+gf/bu6NfcvPmFgg4ND+jwyOZBBtZa9iE0qZ0HTNVeGG09DZWe7/VOnZjQv3747q481As3tlGTHil3qfVIL1c3y1zKVV9Vv/FBRsDNeuzpZPXf71gYt9Y+vMOnfrzBfa2kj+7wdb4o6YsNxp+R9AM3M0ckVz+c0Ncu7ENon5u9AM8Lo+a9cGlRF19f0lrZ01KxohcuLfK7nVCbp43Wbxr1/TCkR04ZLVcpdcHNe2O5KNdI8wvrqni+0q6j8Vy6a/vvd8sGTqAldJ1p3pmTU/rYH35Ty8W1jd3Po9mUfuNn3hn31BKhnVdheGHUnM//6Xf0uSdelmOklBP8G33uiZclSf/iJ/5OzLNDuziO0aDjajBdH9I9327ZMBrc0tkFzRrKpPTatTU5jpETtpF9a3ldb79lKO6pNbTfNeNAW0yO51Ss1HegINQ09sKlRS0X69sYLhereuHSYkwzSpZ29v5vZ/15L/vC118Jg7gjxzjhbTCO3lcrdTmQ3axHv/3QkG47mNORA4Mb9egDaZd6dDQWbSNbe4uOdxlWxpFIdJ1p3he+/opSrlHK2XztXfV9feHrr7DK2IR2XoVpZ/15L1sre0ptWSpyjGgBuYPp2bzOz8xpfqGgyR7+fypov+hIGWlr+8XoCnrZo/1iv1ureHrb6IAWCpVImUpGhUp3/g0hjHehfvnDejMINc0j2NycTpWWEBN2NpQJXmBHT2/3bTCOemxm32y/GGWtDTaKer4qYVBfr/qq+oT0fnDraFbX1tY1Gfk7Xax4mhjqzvaohPEuwx/W5tF1pjlDGVdr5aqs9WRtcHCKMUFNXZJ8/k+/oy98/RWtlT0NZVz94v137MvKfjuvwvD73ZxfvP8Ofe6Jl1X1gxaQvg3efvH+O+KeWtc5PzOnctXTtdX6Dj39vpndGKNMyiiTcqRI/qqF9Kof9Eiv+EFQr3pWFY/uLr3ioXsn9bknXlKx4mkw7ahUCV6IPXTv5O4PjgE1412mnfWpgCT9+InD8vwgzFgFt54fjCdFbUPf/9/evcfIdZ51HP8958xlr/bu2t7c7MRecGqlbdqmIdQQhSiNaLioLVKQGkCUqoFUtKQCAW0FrVC4iIIQNAhVCaGEW4kgUGGV0pISQhrkpElD4mLqJGYdYcdxNvF11+vd2Zl5+OOc2Z1Zzzi7m505c858P9Jodl6f3X2PXp/ZZ97zvM97bqHSsKDv7q8/3/bfvZ61/7m+V+bOm6/Ux2/6bvXnQ5WrUVrQx2/6btKqmnj+lTM6frakcsUVmqlccR0/W9ILr5xJumtdKQrSl2qkbx4q6pKN/do2NqAdmwe1dXRAF23o09hgYTEvPQzIS0+b6ybG9PGbdmrTYFHTc2VtGizq4zft7MqyhhIz412HKiFYb995eVqmxrQIi9vTon5BnxSl2XQy73297sJwfa/cnTdfSfC9AguV6MoO4oDRrFYykFSM1WqYTV+mUnXNlysqlaN0l1qOOrrXdRNjXRt8L0cw3mUofYb1duj4rPKhKaxbwFmpVnXoeHoCwKzkvXN9Y70VcoHOlSqqusssLhbhahpQYu3CILqTNVBYalsswViuar5S0fwCATrWhmC8y1AlBO1QqbrK1bqccUm5MD23XgcLoc7Ol+VqPIfBYrrewtZyfffqgu5ePe/V2jk+rBePz+jMuaWc8Q2DeW3fNJR01zKv2W6jtY2MarPntQWk1EjHhfDRucusZ34qIEnjw0VVfFnOuEftafHuXVuankOa8t6l1V/ftQWfU9NzDQs+Hzkw1eGed1avnvda3HHDhPJhqIs39ulNFw3r4o19yochEzgJCQJTX36pRvplcY30bWN1uejFnAq5gBrpWJSuaaUeQZUQrCevNr9t2qq9Gx07U9LoQE6nz5VV9ShFZWN/TsfOlJLu2qqt5vquX/ApSQOFnGZL5cxXyujV814Lyrymw0rKL9bvOIreQjAOZNyx6eYB6yst2rvR4ZOzumxkQFtHl2aS3D2VCx9Xk37Rqws+e/W814oJnHS6UPnFWmAeBedRbno5RRMoWB2CcSDjKtXmuYrlFu3daNvogA69NqPpucZayjs2pysvdrV1xreNDpyfD9yfy3w+MAtd0cvMTMVcqGKucZOrWj56admOo63e45Ee5IwD6Hq7J8b06kxJpUq0CUypUtWrMyXtTknZqprV1hnfPTGmqenG856aTt95r9YdN0xooeKaLZXlHj2zkB29rpaPvqFvqT76FZsGdcWmQV2ysV+bhooa7surLx8qIB89VZgZBzJueY3x+va02Dt5QuPDhfNmiPdOntCdSXduFQ6fnFVo0uSrM4vnsXmo0DL9Yu/kCW3oC3X6XFkLdbnyaTvv1SIPGli5xaouapxJL1eWUlxqM+pUdulOBONILUqfrUwQSM1SDYMU3Rc7fHJWmwaL2jzUt9iWxpzx4WJOL0zNKAxMYWAqV10vnZrTzvHmaScvTE1rZq6ifBgs1pCemavohan0bNi0VvuOnNL+o6d1tlTR6XML2nfkFNd3C7wXoplcGCgXKi69uGShspTispTy4nKC9MQQjCOVVpt728vKLdb8tGrvRlnJIXaP/uCVyi5XdHciMLX8I1gqVyXT4i1nM6lq0UxXlt399ef1uYcPxruuRmP9uYcPShK7ci7DeyFWq1bZpX4DI0kNeegLca10Krt0RormxpA2jxyY0m33Pq7rP/uwbrv38XWtEXzPo5MqlSs6dnpOz70yrWOn51QqV1rm3iLdspJD/NrZUrRDYi1HKJ7tfu1s88o2+Xhjpmo1CuKr8UKtQoo2bFqL+x47FAfigQIL4ueoHY1Wuw4BaKWQCzRYzGl0sKDxDX3aNjag7ZsGdelIvzYNFjXUlzuvPCPWBzPjaIt2z9Y8/8oZnZkrK5ApNFO54jp+tqRy5cwb7zy6TlZyiEvlqsLQlKvLESpXqy1nuq+8aEOTKjL51FWRWa2zpYoCuebLSzuuhha1oxFlINFOQWDqC0L15ZvsMrpQ1Xy5wgz6OiAYR1vc8+ikFioVHZ9pXHC3Xpt2LFSiGcIgqLt9X3WVKuS8ZVUWainnQ9O5hej/ai0HXGo9033HDRP6zJ79unhjTv35UOcWKqm8I7BaxTDQ7MJS4O3x7qsDeWbllstKChfSo1mAXqlG6XO14Hx+gbroq8E7G9rihalpvTZdUrnqiwvVXpsurdvCs0IukFyqusvl0epwj9vRIGiR0dCqHe1z5UUbNFgItVCtaq5c1UK1qsFCqJ0XbWh6/I27xnXXe9+s8eE+nT63oPHhPt313jen/kPJ6wmD5h+qW7X3sqykcCHdahVdRgYKumhDny7fNKArNg3q4o19Gh0oaKCQU8gfnZaYGUdbtHvh2c7x4fM3QxnMZ34zlLXoy4eabXJ7P5rVSI8sVIzYPTGmb754QmFgyls02zs9X7lg3fAs3BFYrZlS8/eJVu29LCspXMieMIjWMNQvFC3HJRajFJcqO4vGCMbRFqu9Hb9avXr7fi3G+nNNg/Gx/vRc/lmpGLF38oT684Fm5pfGY6gYZr5u+GrV3i/q9y1xX2pHoyx8YLv768/rvscO6WyposFCqNuv30HlnAyKyi0GTQP0hbJrvlJZrI3eS6UW0/PXGKnS7oVnzAatQhBoQzHQmfml2YcNxUCWokLj9RUjJGmgkNNsqbxuaxA6Zf/R05qZrzRsuDQzX9H+o6cT61M3GsiHUc64n9+O7KGUZW+rBegqSLUcdEkNZRZrNdGzWg+dYBxt0YmZ6yzMBnXCUCHU0VONtwFnSlVdOpKewCYrFSMWq4HUR+NOlZDlPvIDE/qjf3tB1bq/uYFF7cieqGSlq1KVynH1HItLWRKM965aPfR67h7NnMe7iZbqAvY0IxhHW9y4a1y3Hjl13m1HgufOe+1sqSGokaJc5Va1rbtRVipG1OqEL5/YqS4foB5XC8BIW+gNM/NlVT3+jGpL1XNm5stJdw1dxsxUyFlUrKG41O7uDbuJllKWj04wjrZ45MCUHnz6JW0ZLuryeGb8wadf0tVbRwjIO+z4TPOgu1V7N7rjhgn98oPP6qVT51SJK/QMFXP69I9clXTXVmW4L7cYYNTqZ0vSUJG34uXuvPlKgu8eYbWFRXWbYcnjdmAFzEzFXKhirvGO72JN9Pp0l3I1qsDWRdKTNIpUYVe47tHqLae73open0mSx1vHe2OmR1rcfv0OSdGsn8fP9e1AL+rPR1dzbZFuLU4ayKfxKkc3CQJTXz7Uxv68Ng8VdelIv7ZvHtTW0QFtGS5qQ39exXyY+Ac/gnG0xeGTs+pfttgqjTm+6A73PDqpXGgKA5NZ9JxL4Ye7q7eOaLAQLtZ4D0waLIS6eutIsh0DErRtdLBp+9YW7cAbVchFRSU2DxV12Ui/tm8a0KUj/docB+h9+XCxNHMncG8UbZGVHN8sCEzn5YzX2tPihalpnTxbUlWSXCpXK5qLFwWnyT2PTmp8Q1/DdZHGqjCd8IsPPK09+44tpiW99+qL9YcfuCbpbqEN3F25wBSaLZbCrXg2q2agO5lFM+jL99+olV2sr+ay0IY0F4JxtEWtmspsqUwd8IRlIU1ldr6iSn1qikuVuD1NDp+cVWjS5KsziyU/Nw8VUnnHqJ2bMP3iA0/rS8+8vPi6UvX49dME5Bk0U6rospE+vTZTWrwuLh4qUmUIiWtWF12KgvTFqi61R9nXvGCUNBW0Ra9u492NWu2ztE77L3VEqRL9Ufa6R317WgwXc3rp1JzK8Wxvuep66dRc6hZw1jZhmpqea9iE6ZEDU+vy8/fsOyZpqcRd7W5xrR3Zsm10QPPLdmeeL1e5k4qulQsD9ReWctEv2divyzcNaPumQV060q8tw0WNLI/gL/Tz2thX9DjqgHeHi4eLOnJ6vml7WoRBIPdqFIjX6hDH7WmyeNu99mnCl7WnRLs3Yaq0KPXYqh3ptntiTN988YQCi9LnSpWqXp0p6SeuG0u6a8CqBIGpLzg/3eV1v69N/QHQJVrttJmmHTgnNg/KzJQPAxXz0UYQZqaJzela4FW7HZ8LTRV35ULTZSN9qbsd3+4F2mHQvLpGmKaFDlixvZMnND5cUCEMVHWpEAYaHy5o7+SJpLsGdAQz40DGHTs9t6r2bvSJW3bpVx58VtNzZZUrVeWCQKMDeX3ill1Jd21VagubJ7YMLbbNlsoaH+5LsFert210QC8en9GZc+XFHN8N/Tlt3zT0+t+8AtddMaK9h042bUf2HD45q02DRW0eWroO3D2VaymAtUjP1BiANSnH04rL82/LKUqNuHHXuH7/1rfpHZeP6pKN/XrH5aP6/Vvflro0qDtumNBCxTVbKss9ek7jwubdE2Oamo4W29XSCqamS9o9sT5pBYdPNA/CWrUj3baNDujcQuPdIapvoZcQjAMZV1uoed4t/5Te8U/PR4jzZWVh897JE9oy1JhWsGVo/dIKXmqyxuFC7Ui3rHxIBdaKNBUg43aOD+u5Y9Nyq1v86FF7WtSqd+RDa6jecZeUukA2CwubD5+c1eahorYMtyetIAvlOLFyN+4a112KFgYfOTmrretcKhPodgTjQMY15FtXo3zr4b5cqvKt2129A6vT7k29TM0D75TezMEKZOFDKrBWpKkAGZeFfOt2V+/A6rQ7reCykeYLWlu1A0CaMTMO9IC0zzq1eyYWq9PutILfev9bdeffPq2ZUkVVj2pPDxVC/db737ouPx8AugnBOICud8cNE/rMnv2aLZXVnw91bqHCAq+EtfMD3o27xnX3bdeQQwygJ5CmAqDrZaUKCVZu35FT2n/0tI6entP+o6e178ippLsEAG3BzDiAVEh7qk3NIwemdM+jkzp8clbbmPFt6u6vP6/PPXxQgUm5IEpJ+tzDByVJd958ZcK9A4D1xcw40AMeOTCl2+59XNd/9mHddu/jeuTAVNJd6km1Eo1T03MNJRoZj0b3PXZIXnUtVFzz5ejZq677HjuUdNcAYN0RjAMZRwDYPepLNJpFz/nQdM+jk0l3ratMz5VVXdZWjdsBIGtIUwEyLis1urOQ3nH45KxG+vMNbZRoPB+b/gDoJQTjQMZ1KgBsZ7DcqR042x3wU6IRALAcaSpAxm0bHdC5hUpD23oHgO1OhelEekcn0nnavVlOVmzoy52326bF7QCQNQTjQMZ1IgBsd7DciR04OxHwU6JxZW6/foeCwJQPTcVc9BwEptuv35F01wBg3THNAGRcu3dLlNqfCtOJ9I5OpfNkpURjO9XKF9732CGdLVU0WAh1+/U7KGsIIJMIxoEe0O4AsN3Bcid24CSfu7vcefOVBN8AegJpKgDesHanwnQivYN8bgBAEsy9t4pFXXvttf7UU08l3Q0gc2qVSNqVCtMJWTgHAEB3MLNvufu1r3scwTgAAACwvlYajJOmAgAAACSEYBwAAABICME4AAAAkBCCcQAAACAhBOMAAABAQgjGAQAAgIQQjAMAAAAJIRgHAAAAEkIwDgAAACSEYBwAAABICME4AAAAkBCCcQAAACAhBOMAAABAQgjGAQAAgIQQjAMAAAAJIRgHAAAAEkIwDgAAACSEYBwAAABICME4AAAAkBCCcQAAACAhBOMAAABAQgjGAQAAgIQQjAMAAAAJIRgHAAAAEkIwDgAAACSEYBwAAABICME4AAAAkBCCcQAAACAhBOMAAABAQgjGAQAAgIQQjAMAAAAJIRgHAAAAEkIwDgAAACSEYBwAAABICME4AAAAkBCCcQAAACAhBOMAAABAQgjGAQAAgIQQjAMAAAAJIRgHAAAAEkIwDgAAACSEYBwAAABICME4AAAAkBCCcQAAACAhBOMAAABAQgjGAQAAgIQQjAMAAAAJIRgHAAAAEkIwDgAAACSEYBwAAABISOqDcTO7xcyeM7ODZvbJpPsDAAAArFSqg3EzCyX9iaQfknSVpNvM7KpkewUAAACsTKqDcUnXSTro7pPuXpL0gKT3JdwnAAAAYEXSHoxfJulw3esjcRsAAADQ9XJJd+ANsiZtft5BZj8n6efilzNm9lxbe4VO2yzptaQ7gY5hvHsL491bGO/ekvXxvmIlB6U9GD8iaVvd662Sji4/yN3vlXRvpzqFzjKzp9z92qT7gc5gvHsL491bGO/ewnhH0p6m8qSknWa2w8wKkj4gaU/CfQIAAABWJNUz4+5eNrOPSfqapFDSF9x9f8LdAgAAAFYk1cG4JLn7VyR9Jel+IFGkIPUWxru3MN69hfHuLYy3JHM/b70jAAAAgA5Ie844AAAAkFoE4+haZhaa2X+Z2Zfj1/eb2SEzeyZ+vD1uNzO728wOmtk+M7um7md80MxeiB8fTOpc8PrM7EUz+3Y8tk/FbWNm9lA8fg+Z2WjczpinXIvx/g0ze6nuGv/huuM/FY/3c2b2nrr2W+K2g2b2ySTOBa/PzEbM7EEzO2Bm3zGz3Vzf2dRirLm2L8TdefDoyoekX5L0RUlfjl/fL+nWJsf9sKR/UVR3/l2SnojbxyRNxs+j8dejSZ8Xj5bj/aKkzcvafk/SJ+OvPynps4x5Nh4txvs3JP1yk2OvkvSspKKkHZL+V9Gi/TD+ekJSIT7mqqTPjUfT8f4LSbfHXxckjXB9Z/PRYqy5ti/wYGYcXcnMtkr6EUn3reDw90n6S488LmnEzC6R9B5JD7n7CXc/KekhSbe0rdNoh/cpemNX/Pz+unbGvHe8T9ID7j7v7ockHZR0Xfw46O6T7l6S9EB8LLqImW2QdIOkP5Mkdy+5+ylxfWfOBca6Fa5tkaaC7vVHkn5VUnVZ+2/Hty3/0MyKcdtlkg7XHXMkbmvVju7kkv7VzL4V75orSRe5+8uSFD+Px+2Mefo1G29J+lh8jX+hlrYgxjvtJiS9KunP49TD+8xsUFzfWdRqrCWu7ZYIxtF1zOxHJU25+7eW/dOnJO2S9D2KblN+ovYtTX6MX6Ad3en73f0aST8k6aNmdsMFjmXM06/ZeH9e0ndJeruklyX9QXws451uOUnXSPq8u79D0llFaSmtMN7p1WqsubYvgGAc3ej7Jb3XzF5UdGvqJjP7a3d/Ob5tOS/pzxXdxpKiT8zb6r5/q6SjF2hHF3L3o/HzlKQvKRrfV+Lb04qfp+LDGfOUazbe7v6Ku1fcvSrpT8U1nhVHJB1x9yfi1w8qCti4vrOn6VhzbV8YwTi6jrt/yt23uvt2SR+Q9LC7/1Tdm7Ypyi387/hb9kj66XgF/rsknY5veX5N0g+a2Wh8S+wH4zZ0GTMbNLPh2teKxuq/FY1trWLCByX9U/w1Y55irca7do3HfkyN1/gHzKxoZjsk7ZT0TUlPStppZjvMrKDo/WJPp84DK+PuxyQdNrM3xU3vlvQ/4vrOnFZjzbV9YanfgRM95W/MbIui21fPSPpI3P4VRavvD0qalfQhSXL3E2b2m4ouakm6y91PdLbLWKGLJH0p+pylnKQvuvtXzexJSX9nZh+W9H+Sfjw+njFPt1bj/VcWlSx1RdVW7pAkd99vZn+nKIArS/qou1ckycw+piggCyV9wd33d/pksCK/oOg9vKCoCsqHFE0Icn1nT7OxvptruzV24AQAAAASQpoKAAAAkBCCcQAAACAhBOMAAABAQgjGAQAAgIQQjAMAAAAJIRgHACwys/vN7Nak+wEAvYJgHACwZmYWJt0HAEgzgnEAyAAz225mB8zsL8xsn5k9aGYDZvZOM/sPM/uWmX2tbifbnzWzJ83sWTP7BzMbaPIzfzOeKQ+Wtd9oZv9uZl+U9O1Wvzs+9kUz+x0z22tmT5nZNXE//tfMPrL8dwJAryEYB4DseJOke939aklnJH1U0h9LutXd3ynpC5J+Oz72H939e9z9bZK+I+nD9T/IzH5P0rikD7l7tcnvuk7Sr7n7VS1+98/XHXvY3XdL+oak+yXdKuldku56g+cLAKlHMA4A2XHY3f8z/vqvJb1H0lskPWRmz0j6dUlb439/i5l9w8y+LeknJb257ud8WtKIu9/hrbdp/qa7H7rA776+7t/2xM/flvSEu0+7+6uS5sxsZA3nCQCZkUu6AwCAdbM8cJ6WtD+elV7ufknvd/dnzexnJN1Y929PSnqnmY25+wkz+15J98T/9hlFM99nX+d317+ej5+rdV/XXvN3CEBPY2YcALLjcjOrBd63SXpc0pZam5nlzaw2Az4s6WUzyyuaGa/3VUm/K+mfzWzY3Z9w97fHjz1qbvnvfmy9TgoAsoxgHACy4zuSPmhm+ySNKc4Xl/RZM3tW0jOSvi8+9tOSnpD0kKQDy3+Qu/+9pD+VtMfM+tfwuz//Bs8FAHqCtU4HBACkhZltl/Rld39LL/1uAEg7ZsYBAACAhDAzDgAAACSEmXEAAAAgIQTjAAAAQEIIxgEAAICEEIwDAAAACSEYBwAAABJCMA4AAAAk5P8BasABdVgJKBEAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing the regression plot of \"peak-rpm\" and \"highway-mpg\" we see that the points for \"highway-mpg\" are much closer to the generated line and on the average decrease. The points for \"peak-rpm\" have more spread around the predicted line, and it is much harder to determine if the points are decreasing or increasing as the \"highway-mpg\" increases.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #3:</h1>\n",
"<b>Given the regression plots above is \"peak-rpm\" or \"highway-mpg\" more strongly correlated with \"price\". Use the method \".corr()\" to verify your answer.</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.10161587407588138"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df['peak-rpm'].corr(df['price'])"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.704692265058953"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['highway-mpg'].corr(df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The variable \"peak-rpm\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"highway-mpg\" which is approximate -0.101616. You can verify it using the following command:\n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Residual Plot</h3>\n",
"\n",
"<p>A good way to visualize the variance of the data is to use a residual plot.</p>\n",
"\n",
"<p>What is a <b>residual</b>?</p>\n",
"\n",
"<p>The difference between the observed value (y) and the predicted value (Yhat) is called the residual (e). When we look at a regression plot, the residual is the distance from the data point to the fitted regression line.</p>\n",
"\n",
"<p>So what is a <b>residual plot</b>?</p>\n",
"\n",
"<p>A residual plot is a graph that shows the residuals on the vertical y-axis and the independent variable on the horizontal x-axis.</p>\n",
"\n",
"<p>What do we pay attention to when looking at a residual plot?</p>\n",
"\n",
"<p>We look at the spread of the residuals:</p>\n",
"\n",
"<p>- If the points in a residual plot are <b>randomly spread out around the x-axis</b>, then a <b>linear model is appropriate</b> for the data. Why is that? Randomly spread out residuals means that the variance is constant, and thus the linear model is a good fit for this data.</p>"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuwAAAJQCAYAAADVKDHyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3X9w2/d95/nXGyAgAhIl0bZguRZTm6kcxtpL2lR17VkNy03dxOnOKr0b713Vm21mLz5ymvbc5s6eJp2J4qiT2ei62Y216SZUtZ78mDuniW5zVW7sOnZUHs8Xy42URE54pm0t5YR0LEM/IIkUQAH44nN/AKRI/bBAfUl8v198n48ZDoQPAeIDipRe+OD9eX/MOScAAAAA4ZQIegIAAAAAro3ADgAAAIQYgR0AAAAIMQI7AAAAEGIEdgAAACDECOwAAABAiBHYAQAAgBAjsAMAAAAhRmAHAAAAQqwj6AmEzS233OLuuOOOoKcBAACANnfkyJFTzrkN17sdgf0yd9xxhw4fPhz0NAAAANDmzOxnzdyOkhgAAAAgxAjsAAAAQIgR2AEAAIAQI7ADAAAAIUZgBwAAAEKMwA4AAACEGIEdAAAACDECOwAAABBiBHYAAAAgxAjsAAAAQIgR2AEAAIAQI7ADAAAAIUZgBwAAAEKMwA4AAACEGIEdAAAACDECOwAAABBiBHYAAAAgxAjsAAAAQIgR2AEAAIAQI7ADAAAAIdYR9ASAoI2M5zU8OqHJQlE93VkN9fdqoC8X9LQAAAAkscKOmBsZz2vngTHlp2e1PpNSfnpWOw+MaWQ8H/TUAAAAJBHYEXPDoxNKJU3ZdIfM6peppGl4dCLoqQEAAEgisCPmJgtFZVLJRWOZVFJThWJAMwIAAFiMwI5Y6+nOqlTxFo2VKp42dWcDmhEAAMBiBHbE2lB/ryqeU7FclXP1y4rnNNTfG/TUAAAAJBHYEXMDfTnt2r5Fua5OnStVlOvq1K7tW+gSAwAAQoO2joi9gb4cAR0AAIQWK+wAAABAiBHYAQAAgBAjsAMAAAAhRmAHAAAAQozADgAAAIQYgR0AAAAIMdo6hsDIeF7DoxOaLBTV053VUH8vbQYBAAAgiRX2wI2M57XzwJjy07Nan0kpPz2rnQfGNDKeD3pqAAAACIHAAruZ9ZjZP5jZy2Y2ZmZ/2hi/ycyeNbPXGpfdjXEzsz1mdszMXjKz9y34Wh9p3P41M/vIgvFfN7OfNO6zx8ys9c/07Q2PTiiVNGXTHTKrX6aSpuHRiaCnBgAAgBAIcoW9Kul/cc69W9K9kv7YzO6W9AlJ33PObZb0vcZ1SfqQpM2Nj0FJX5LqAV/SpyX9pqR7JH16LuQ3bjO44H4PtOB5LclkoahMKrloLJNKaqpQDGhGAAAACJPAArtz7k3n3A8bf56W9LKk2yV9WNJXGzf7qqTfa/z5w5K+5uoOSVpvZrdJ+qCkZ51zZ5xzBUnPSnqg8bm1zrkXnHNO0tcWfK3Q6OnOqlTxFo2VKp42dWcDmhEAAADCJBQ17GZ2h6Rfk/SipFudc29K9VAvaW735e2SJhfcbaox9nbjU1cZv9rjD5rZYTM7fPLkSb9PZ0mG+ntV8ZyK5aqcq19WPKeh/t6WzgMAAADhFHhgN7M1kv4PSX/mnDv/dje9ypi7gfErB53b65zb6pzbumHDhutNeVkN9OW0a/sW5bo6da5UUa6rU7u2b6FLDAAAACQF3NbRzFKqh/X/zTn3nxvDb5nZbc65NxtlLXPtUqYk9Sy4+yZJv2iMD1w2PtIY33SV24fOQF+OgA4AAICrCrJLjEn6T5Jeds79uwWfOiBprtPLRyT93YLxP2x0i7lX0rlGycwzkj5gZt2NzaYfkPRM43PTZnZv47H+cMHXAgAAACIhyBX2fyrpX0n6iZn9uDH2F5I+J+mbZvZRST+X9C8bn3tK0u9KOiapKOlfS5Jz7oyZ/aWkHzRut8s5d6bx5z+S9BVJGUlPNz4AAACAyLB6AxXM2bp1qzt8+HDQ0wAAAECbM7Mjzrmt17td4JtOAQAAAFwbgR0AAAAIMQI7AAAAEGIEdgAAACDECOwAAABAiAV6cBIA/0bG8xoendBkoaie7qyG+ns5iAsAgDbCCjsQYSPjee08MKb89KzWZ1LKT89q54ExjYznr39nAAAQCQR2IMKGRyeUSpqy6Q6Z1S9TSdPw6ETQUwMAAMuEwA5E2GShqEwquWgsk0pqqlAMaEYAAGC5EdiBCOvpzqpU8RaNlSqeNnVnA5oRAABYbgR2IMKG+ntV8ZyK5aqcq19WPKeh/t6gpwYAAJYJgR2IsIG+nHZt36JcV6fOlSrKdXVq1/YtdIkBAKCN0NYRiLiBvhwBHQCANsYKOwAAABBiBHYAAAAgxAjsAAAAQIgR2AEAAIAQI7ADAAAAIUZgBwAAAEKMwA4AAACEGIEdAAAACDECOwAAABBiBHYAAAAgxAjsAAAAQIgR2AEAAIAQI7ADAAAAIUZgBwAAAEKMwA4AAACEGIEdAAAACDECOwAAABBiBHYAAAAgxAjsAAAAQIgR2AEAAIAQI7ADAAAAIUZgBwAAAEKMwA4AAACEGIEdAAAACDECOwAAABBiBHYAAAAgxAjsAAAAQIgR2AEAAIAQI7ADAAAAIUZgBwAAAEKMwA4AAACEGIEdAAAACDECOwAAABBiBHYAAAAgxAjsAAAAQIgR2AEAAIAQI7ADAAAAIUZgBwAAAEKMwA4AAACEGIEdAAAACDECOwAAABBiBHYAAAAgxDqCngAAf0bG8xoendBkoaie7qyG+ns10JcLeloAAGCZsMIORNjIeF47D4wpPz2r9ZmU8tOz2nlgTCPj+aCnBgAAlgmBHYiw4dEJpZKmbLpDZvXLVNI0PDoR9NQAAMAyIbADETZZKCqTSi4ay6SSmioUA5oRAABYbgR2IMJ6urMqVbxFY6WKp03d2YBmBAAAlhuBHYiwof5eVTynYrkq5+qXFc9pqL836KkBAIBlQmAHImygL6dd27co19Wpc6WKcl2d2rV9C11iAABoI7R1BCJuoC9HQAcAoI0R2EOAPtoAAAC4FkpiAkYfbQAAALwdAnvA6KMNAACAt0NgDxh9tAEAAPB2COwBo482AAAA3g6BPWD00QYAAMDbIbAHjD7aAAAAeDu0dQwB+mgDAADgWlhhBwAAAEKMwA4AAACEGIEdAAAACLFAA7uZPWFmeTP76YKxx8zsDTP7cePjdxd87pNmdszMXjGzDy4Yf6AxdszMPrFg/E4ze9HMXjOzvzWzdOueHQAAAOBf0CvsX5H0wFXG/71z7lcbH09JkpndLen3JW1p3Oc/mlnSzJKS/lrShyTdLWlH47aStLvxtTZLKkj66Io+GwAAAGCZBdolxjk3amZ3NHnzD0v6hnPuoqTjZnZM0j2Nzx1zzk1Ikpl9Q9KHzexlSe+X9AeN23xV0mOSvrQ8s8dyGRnPa3h0QpOFonq6sxrq76VrDgAAQEPQK+zX8idm9lKjZKa7MXa7pMkFt5lqjF1r/GZJZ51z1cvGESIj43ntPDCm/PSs1mdSyk/PaueBMY2M54OeGgAAQCiEMbB/SdI7Jf2qpDclfb4xble5rbuB8SuY2aCZHTazwydPnlz6jHHDhkcnlEqasukOmdUvU0nT8OhE0FMDAAAIhdAFdufcW845zzlXk/Q3ulT2MiWpZ8FNN0n6xduMn5K03sw6Lhu/2mPudc5tdc5t3bBhw/I9GVzXZKGoTCq5aCyTSmqqUAxoRgAAAOESusBuZrctuPpfS5rrIHNA0u+b2Sozu1PSZkn/KOkHkjY3OsKkVd+YesA55yT9g6QHG/f/iKS/a8VzQPN6urMqVbxFY6WKp03d2YBmFD0j43nt2HtI23Yf1I69hygnAgCgzQTd1vFJSS9IepeZTZnZRyX9r2b2EzN7SdI/k/RxSXLOjUn6pqT/T9LfS/rjxkp8VdKfSHpG0suSvtm4rST9uaT/ubFB9WZJ/6mFTw9NGOrvVcVzKparcq5+WfGchvp7g55aJLAHAACA9mf1hWjM2bp1qzt8+HDQ04iVuS4xU4WiNtElZkl27D2k/PSssulLDZ+K5apyXZ16cvDeAGcGAACux8yOOOe2Xu92gbZ1BCRpoC9HQL9Bk4Wi1mdSi8bYAwAAQHsJXQ07gOaxBwAAgPZHYAcijD0AAAC0PwI7EGEDfTnt2r5Fua5OnStVlOvq1K7tWygxAgCgjVDDDkQcewAAAGhvrLADAAAAIUZgBwAAAEKMwA4AAACEGIEdAAAACDECOwAAABBiBHYAAAAgxAjsAAAAQIgR2AEAAIAQ4+AkIOJGxvMaHp3QZKGonu6shvp7OUgJAIA2wgo7EGEj43ntPDCm/PSs1mdSyk/PaueBMY2M54OeGgAAWCYEdiDChkcnlEqasukOmdUvU0nT8OhE0FMDAADLhMAORNhkoahMKrloLJNKaqpQDGhGAABguRHYgQjr6c6qVPEWjZUqnjZ1ZwOaEQAAWG4EdiDChvp7VfGciuWqnKtfVjynof7eoKcGAACWCYEdiLCBvpx2bd+iXFenzpUqynV1atf2LXSJAQCgjdDWEYi4gb4cAR0AgDbGCjsAAAAQYgR2AAAAIMQI7AAAAECIEdgBAACAECOwAwAAACFGYAcAAABCjMAOAAAAhBiBHQAAAAgxDk6CbyPjeQ2PTmiyUFRPd1ZD/b0c5AMAALBMWGGHLyPjee08MKb89KzWZ1LKT89q54ExjYzng54aAABAWyCww5fh0QmlkqZsukNm9ctU0jQ8OhH01AAAANoCgR2+TBaKyqSSi8YyqaSmCsWAZgQAANBeCOzwpac7q1LFWzRWqnja1J0NaEYAAADthcAOX4b6e1XxnIrlqpyrX1Y8p6H+3qCnBgAAcE0j43nt2HtI23Yf1I69h0K9/47ADl8G+nLatX2Lcl2dOleqKNfVqV3bt9AlBgAAhFbUmmbQ1hG+DfTlCOgAACAyFjbNkKRsukPFclXDoxOhzDSssAMAACBWotY0g8AOAACAWIla0wwCOwAAAGIlak0zCOwAAACIlag1zWDTKQAAAGInSk0zCOwAANygkfG8hkcnNFkoqqc7q6H+3sgEAADRQUkMAAA3IGp9nAFEF4EdAIAbsLCPs1n9MpU0DY9OBD01AG2GwA4AwA2IWh9nANFFYAcA4AZErY8zgOgisAMAcAOi1scZQHQR2AEAuAFR6+MMILpo69gGaCsGAMGIUh9nANHFCnvE0VYMAACgvbHCHnEL24pJUjbdoWK5quHRiaZXfVihBwAACC9W2CPOb1sxVugBAADCjcAecX7binHwBwAAQLgR2CPOb1sxDv4AAAAINwJ7xPltK8bBHwAAAOHGptM24Ket2FB/r3YeGFOxXFUmlVSp4nHwBwAAQIiwwh5zHPwBAAAQbqywg4M/AAAAQowVdgAAACDECOwAAABAiBHYAQAAgBAjsAMAAAAhRmAHAAAAQozADgAAAIQYgR0AAAAIMfqwQyPjeQ2PTmiyUFRPd1ZD/b30ZQcAAAgJVthjbmQ8r50HxpSfntX6TEr56VntPDCmkfF80FMDAACAWGGPveHRCaWSpmy6/qOQTXeoWK5qeHQiNqvsvMMAAADCjMAec5OFotZnUovGMqmkpgrFgGbUWnPvMKSStugdhl1SZEI7LzgAAGhvlMTEXE93VqWKt2isVPG0qTsb0Ixaa+E7DGb1y1TSNDw6EfTUmjIyntcj+4/qR5MFvXV+Vj+aLOiR/UcpaQIAtL2R8bx27D2kbbsPasfeQ239fx+BPeaG+ntV8ZyK5aqcq19WPKeh/t6gp9YSk4WiMqnkorEovcPwuadf1tliRa4mJc3katLZYkWfe/rloKcGAMCKidsePAJ7zA305bRr+xblujp1rlRRrqtTu7ZviU1JRdTfYTh+uqiESYmEycyUSJgSVh8HAKBdRf0d8qWihh0a6MvFJqBfbqi/VzsPjKlYriqTSqpU8WL1DgMAAFEUtz14ga6wm9kTZpY3s58uGLvJzJ41s9cal92NcTOzPWZ2zMxeMrP3LbjPRxq3f83MPrJg/NfN7CeN++wxM2vtM0TYRf0dht5bVqvmpJpzcnKqOaeaq48DANCuov4O+VIFXRLzFUkPXDb2CUnfc85tlvS9xnVJ+pCkzY2PQUlfkuoBX9KnJf2mpHskfXou5DduM7jgfpc/FqCBvpyeHLxX/8+fv19PDt4bmbAuSX/+QJ+6symZpKpXk0nqzqb05w/0BT01AABWTNz24AUa2J1zo5LOXDb8YUlfbfz5q5J+b8H411zdIUnrzew2SR+U9Kxz7oxzriDpWUkPND631jn3gnPOSfragq8FtIWBvpz+6sH36tfe0a3b1mX0a+/o1l89+N5IvegAAGCpov4O+VKFsYb9Vufcm5LknHvTzOa+87dLmlxwu6nG2NuNT11lHGgrcd6DAACIrzj9/xd0ScxSXK3+3N3A+JVf2GzQzA6b2eGTJ0/6mCIAAACwvMK4wv6Wmd3WWF2/TdJcQ80pST0LbrdJ0i8a4wOXjY80xjdd5fZXcM7tlbRXkrZu3XrVUA8AANBOOCk7OsK4wn5A0lynl49I+rsF43/Y6BZzr6RzjdKZZyR9wMy6G5tNPyDpmcbnps3s3kZ3mD9c8LUAAABiK24HD0Vd0G0dn5T0gqR3mdmUmX1U0uck/Y6ZvSbpdxrXJekpSROSjkn6G0kfkyTn3BlJfynpB42PXY0xSfojSfsa9/kvkp5uxfMCAAAIs7gdPBR1gZbEOOd2XONTv32V2zpJf3yNr/OEpCeuMn5Y0j/xM0cAAIB2E7eDh6IujCUxAAAAWEFxO3go6gjs8G1kPK8dew9p2+6D2rH3EPVvAACEXNwOHoo6Ajt8YdMKAADRE7eDh6IujG0dESELN61IUjbdoWK5quHRCX7pAQAIsTgdPBR1rLDDl8lCUZlUctEYm1YAAACWD4EdvrBpBQAAYGUR2OELm1YAAABWFoEdvrBpBQAAYGWx6RS+sWkFAABg5bDCDgAAAIQYgR0AAAAIMQI7AAAAEGIEdgAAACDECOwAAABAiBHYAQAAgBAjsAMAAAAhRmAHAAAAQozADgAAAIQYgR0AAAAIMQI7AAAAEGIEdgAAACDECOwAAABAiBHYAQAAgBAjsAMAAAAhRmAHAAAAQozADgAAAIRYR9ATAAAAiKI9z72qfc8f14Wyp9XppB7adqcevv+uoKeFNkRgBwAAWKI9z72qxw8eU8KkjoRUqnh6/OAxSSK0Y9lREgMAALBE+54/3gjrCSUs0bisjwPLjcAOAACwRBfKnhK2eCxh9XFguRHYAQAAlmh1OqmaWzxWc/VxYLlRww5E3Mh4XsOjE5osFNXTndVQf68G+nJBTwsA2tpD2+7U4wePqVqrKWH1sF5z9XFgubHCDkTYyHheOw+MKT89q/WZlPLTs9p5YEwj4/mgpwYAbe3h++/Sn77/V5RJJVWtSZlUUn/6/l9hwylWBCvsQIQNj04olTRl0/Vf5Wy6Q8VyVcOjE6yyA8AKe/j+uwjoaAlW2IEImywUlUktrpfMpJKaKhQDmhEAAFhuBHYgwnq6sypVFnckKFU8berOBjQjAACw3AjsQIQN9feq4jkVy1U5V7+seE5D/b1BTw0AQm9kPK8dew9p2+6D2rH3EPt/EFoEdiDCBvpy2rV9i3JdnTpXqijX1ald27dQvw4A18GmfUQJm06BiBvoyxHQAWCJ2LSPKCGwAwCA2JksFJU0aeLkjMpeTelkQresSbNpH6FESQwAAIidrlUdeuPsrKo1p2TCVK05vXF2VmtWsZaJ8OGnEgAAxI5zrvEHLbqcHwdChBV2AAAQOzNlT7ev71RH0uQ5p46k6fb1nbpQ9q5/Z6DFWGEHAACx09OdVX56Vr0b1syPFctV5bo6A5wVcHWssAMAEFNx7kPOORaIEgI7AAAxFPc+5JxjgSihJAYAgBiiDznnWCA6COxAxI2M5zU8OqHJQlE93VkN9ffyHxCA65osFLU+k1o0lkkl6UMOhBCBHYiwube0U0lb9Jb2LonQHhO8YPMnzt+/uU2XcyvsklSqeNrUnQ1wVgCupukadjP7ZTO7v/HnjJl1rdy0ADRj4VvaZvXLVNI0PDoR9NTQAnGvQfYr7t8/Nl0C0dFUYDez/1HSfknDjaFNkv7PlZoUgOZMForKpJKLxnhLOz54weZP3L9/bLoEoqPZkpg/lnSPpBclyTn3mpnxGw0EjLe0440aZH/4/rHpEoiKZktiLjrnynNXzKxDlw7zBRAQ3tKOt57urEqVxacy8oKteXz/AERFs4H9/zazv5CUMbPfkfQtSd9ZuWkBaAZvaccbL9j84fsHICrMuesvlJtZQtJHJX1Akkl6RtI+18ydI2br1q3u8OHDQU8DAJoy1+VkqlDUpph1OVkOfP8ABMnMjjjntl73dk0G9tWSZp1zXuN6UtIq51zbFfoR2IGliXNbPAAA/Gg2sDdbEvM9SZkF1zOSnruRiQFoH3FviwcAQCs0G9g7nXMzc1caf2ZXDhBzcW+LBwBAKzQb2C+Y2fvmrpjZr0sqrcyUAEQFfeABAFh5zfZh/zNJ3zKzXzSu3ybpv1uZKQGICvrAAwCw8ppaYXfO/UBSn6Q/kvQxSe92zh1ZyYkBCD/a4gEAsPLedoXdzN7vnDtoZv/NZZ/abGZyzv3nFZwbgJAb6Mtpl0RbPAAAVtD1SmJ+S9JBSf/iKp9zkgjsACRx9DEAACvlbQO7c+7TjUOTnnbOfbNFcwIQEXNtHVNJW9TWcZfEKjsAAMvkuptOnXM1M/sTSQR2AIssbOsoSdl0h4rlqoZHJ5oO7By8BADA22u2S8yzZvaIpL+VdGFu0Dl3ZkVmBSASJgtFrc+kFo0tpa0jK/T+8YIHANpfs4H9f1C9RPVjl43TCgKIMb9tHYdHJ1TxPJ2eqars1ZROJrQ207GkFfo44wUP/OIFHxANzR6cdLekv5Z0VNKPJf0HSVtWalIAosFvW8fX8tM6NV1WteaUTJiqNadT02W9lp9e4Zm3B06ahR9zL/jy07OLXvCNjOeDnhqAyzQb2L8q6d2S9qge1t/dGAMQYwN9Oe3avkW5rk6dK1WU6+rUru1bml6hK1drkkkJM5lMCTPJGuO4Lk6ahR+84AOio9mSmHc559674Po/mNnRlZgQgGgZ6Mvd8FvoqaSpVJFqNSczyTV6Q6aTtowzbF+cNAs//O5BAdA6za6w/8jM7p27Yma/Ken/XZkpAYiLu25dq5tXp9WRNHnOqSNpunl1WptvXRv01CKBk2bhR093VqWKt2iMF3xAODUb2H9T0vfN7HUze13SC5J+y8x+YmYvrdjsALS1of5epTuS2riuU++6tUsb13Uq3ZEkcDbJb0kS4o0XfEB0mHPXP5/QzH757T7vnPvZss0oYFu3bnWHDx8OehpAbMx1qZgqFLWJLhVAS/H7BwTLzI4457Ze93bNBPY4IbADAACgFZoN7M2WxAAAAAAIQGgDe6Ne/idm9mMzO9wYu8nMnjWz1xqX3Y1xM7M9ZnbMzF4ys/ct+Dofadz+NTP7SFDPBwAAALgRoQ3sDf/MOferC94q+ISk7znnNkv6XuO6JH1I0ubGx6CkL0n1gC/p06pvmr1H0qfnQj4AAAAQBWEP7Jf7sC4d2PRVSb+3YPxrru6QpPVmdpukD0p61jl3xjlXkPSspAdaPWkAAADgRoU5sDtJ3zWzI2Y22Bi71Tn3piQ1Lue2st8uaXLBfacaY9caX8TMBs3ssJkdPnny5DI/DQAAAODGNXvSaRD+qXPuF2aWk/SsmY2/zW2vdiyie5vxxQPO7ZW0V6p3ibmRyQIAAAArIbSB3Tn3i8Zl3sy+rXoN+ltmdptz7s1GyUu+cfMpST0L7r5J0i8a4wOXjY+s8NSBlprrozxZKKqHPsoAALSdUJbEmNlqM+ua+7OkD0j6qaQDkuY6vXxE0t81/nxA0h82usXcK+lco2TmGUkfMLPuxmbTDzTGgLYwMp7XzgNjyk/Pan0mpfz0rHYeGNPIeP76dwYAAJEQ1hX2WyV928yk+hz/d+fc35vZDyR908w+Kunnkv5l4/ZPSfpdScckFSX9a0lyzp0xs7+U9IPG7XY558607mkAK2t4dEKppCmbrv8qZ9MdKparGh6dYJUdAIA2EcrA7pybkPTeq4yflvTbVxl3kv74Gl/rCUlPLPccgTCYLBS1PpNaNJZJJTVVKAY0IwAAsNxCWRIDoDk93VmVKt6isVLF06bubEAzAgAAy43ADkTYUH+vKp5TsVyVc/XLiuc01N8b9NQAAMAyIbADETbQl9Ou7VuU6+rUuVJFua5O7dq+hfp1AADaSChr2AE0b6AvR0AHAKCNscIOAAAAhBiBHQAAAAgxAjsAAAAQYgR2AAAAIMQI7AAAAECIEdgBAACAEKOtI4BYGxnPa3h0QpOFonq6sxrq76VNJgAgVFhhBxBbI+N57Twwpvz0rNZnUspPz2rngTGNjOeDnhoAAPMI7ABia3h0QqmkKZvukFn9MpU0DY9OBD01AADmEdgBxNZkoahMKrloLJNKaqpQDGhGAABcicAOILZ6urMqVbxFY6WKp03d2YBmBADAlQjsAGJrqL9XFc+pWK7KufplxXMa6u8NemoAAMwjsAOIrYG+nHZt36JcV6fOlSrKdXVq1/YtdIkBAIQKbR0BxNpAX46ADtwg2qICrcEKOwAAWDLaogKtQ2AHAABLRltUoHUI7AAAYMloiwq0DjXsAABgyXq6s3r99IzOl6oqezWlkwmtzXTojpvXBD01oO2wwg4AAJbsvt6blJ8uq+zVlDCp7NWUny7rvt6bgp4a0HYI7AAAYMlemDijDWvSSicTqjkpnUxow5q0Xpg4E/TUgLZDSQwAAFiyyUJRt6xZpQ1dnfNjzjlq2IEVwAo7AABYsp7urEoVb9FYqeJpU3c2oBkB7YvADgAAlmyov1cVz6lYrsq5+mXFcxrq7w16akDbIbADAIAlG+jLadf2Lcp1depcqaJcV6d2bd/CSafACqCGHQAA3JCBvhwBHWgBVtgBAACAECOwAwAAACFGYAfgFlWGAAAgAElEQVQAAABCjMAOAAAAhBiBHQAAAAgxAjsAAAAQYgR2AAAAIMToww4g0kbG8xoendBkoaie7qyG+nvpCw0AaCussAOIrJHxvHYeGFN+elbrMynlp2e188CYRsbzQU8NAIBlQ2AHEFnDoxNKJU3ZdIfM6peppGl4dCLoqQEAsGwI7AAia7JQVCaVXDSWSSU1VSgGNCMAAJYfgR1AZPV0Z1WqeIvGShVPm7qzAc0IAIDlR2AH4MvIeF479h7Stt0HtWPvoZbWjw/196riORXLVTlXv6x4TkP9vS2bAwAAK40uMYBPce5SMrfpM5W0RZs+d0kt+R4M9OW0S/Va9qlCUZti9v0HAMQDgR2Bi3LgDTqwBm3hpk9JyqY7VCxXNTw60bLnP9CXi8X3+lqi/PsDAGgOJTEIVNTb8sW9S0kYNn0GWZITtKj//gAAmkNgR6CiHnjDEFiDFPSmz7gH1qj//gAAmkNgR6CiHniDDqxBC3rTZ9wDa9R/fwAAzSGwI1BRD7xBB9agDfTltGv7FuW6OnWuVFGuq1O7tm9pWQ113ANr1H9/AADNYdMpAjXU36udB8ZULFeVSSVVqniRCrx0KQl202dPd1b56dn5Ta9SvAJr1H9/AADNIbAjUO0QeKPepSTKXUbiHljb4fcHAHB95pwLeg6hsnXrVnf48OGgpwG0xMK2lAsDbyvLWvyae8FBYAWWLsov2IF2YGZHnHNbr3c7VtiBGAtDH3W/gSHq73AAQYn7ORJAlLDpFIixoDdtxr0tIxCkuHdZAqKEwA7EWNBdRggMQHCCfsEOoHkEdiDGgm5LSWAAghP0C3YAzSOwAxE3Mp7Xjr2HtG33Qe3Ye2hJ5SRB91EnMADBCfoFO4Dm0SXmMnSJQZREvcvLyHhej+4/qunZqqq1mjoSCXV1duivHnxvJOYPRB1dloBg0SUGiIHh0QlVPE+nZ6oqezWlkwmtzXQsqctL0G3dnCSZZGaSNa4DaAm6LAHRQGAHIuy1/LTOFStKJEzJhKlaczo1XVbFm27q/kG3dRsendC6TEq3rcvMj7W6rSQAAGFHDTsQYeVqTTIpYSaTKdFYpS5Xa03dP+guLWw6BQDg+gjsQISlkiZJqtWcnHOq1eoFJenG+PUEHZjZdAoAwPUR2IEIu+vWtbp5dVodSZPnnDqSpptXp7X51rVN3T/owEyXCsCfPc+9qvc89oze+RdP6T2PPaM9z70a9JQArAACOxBhQ/29SncktXFdp951a5c2rutUuiPZdOANOjAH3VYSiLI9z72qxw8eU6niqSNRf7H9+MFjhHagDdHW8TK0dUTU+G3LRls3IJre89gzjbB+ae2tWqspk0rqpcc+GODMADSLto5ATPhty0ZbNyCaLpQ9JeR0serJOclMSlp9HEB7IbADCFTQfeCBqFqVTKhY8TS3xdw5qeKkbIpqV6DdENiBiIty4A26DzwQZTetTql41rvisLGbVqcCmQ+AlcPLcCDC5gJvfnp2UeAdGc8HPbWmBN0HHog0M21Yk1KiscSeMGnDmlT91GAAbYUVdiDCFgZeScqmOyJ1Uuhkoaj1mcWrgRychFba89yr2vf8cV0oe1qdTuqhbXfq4fvvCnpaTenpzio/PauN6y61YS2Wq8p1dQY4KwArgRV2IMKCPvjIr6D7wCPeot4WMei2rABah8AORFgYAu/IeF479h7Stt0HtWPvoSWV4xA4EKR9zx9XwqSOREIJSzQu6+NRwDkGQHxQEgNE2FB/r3YeGFOxXFUmlVSp4rU08PrdNDrQl9MuiT7wuGF+Nl1fKNdX1hdKRKwtIm1ZgXggsAM+BdmlJejAuxw19EEHjih32Yk7vy8YV6eTunCxKqdLfcxN0upV/NcIIFz4VwnwIQxtCYMMvMuxaTTIwByGvz/cOL8vGH+7b4O+/eM356/PHfz9230bVmS+AHCj2r6G3cweMLNXzOyYmX0i6PmgvcS9LaHfGvqg21LG/e8v6vxuuj5xvqzubMeitojd2Q6dOF9e7qkCgC9tHdjNLCnpryV9SNLdknaY2d3BzgrtJOpdWvzyu2k06MAc97+/qOvpzur0hYuaODmj8RPnNXFyRqcvXGz6BeNkoajb12e15ZfW6b+6fZ22/NI63b4+y98/gNBp68Au6R5Jx5xzE865sqRvSPpwwHNCGwlDl5Yg+e1SEXRgjvvfX9Td13uT8tNllb2aEiaVvZry02Xd13tTU/fn7x9AVLR7YL9d0uSC61ONsWv62c9+pu985zuSpGq1qsHBQT311FOSpNnZWQ0ODuq73/2uJGlmZkaDg4M6ePCgJOns2bMaHBzU6OioJOnUqVMaHBzU97//fUnSiRMnNDg4qBdffLE+makpDQ4O6siRI5Kk119/XYODgzp69Kgk6dixYxocHNTY2Jgk6ZVXXtHg4KBeeeUVSdLY2JgGBwd17NgxSdLRo0c1ODio119/XZJ05MgRDQ4OampqSpL04osvanBwUCdOnJAkff/739fg4KBOnTolSRodHdXg4KDOnj0rSTp48KAGBwc1MzMjSfrud7+rwcFBzc7OSpKeeuopDQ4OqlqtSpK+853vaHBwcP57+e1vf1sf+9jH5q9/61vf0sMPPzx//cknn9THP/7x+etf//rX9eijj85f/8pXvqJPfvKT89f37dunT33qU/PXv/zlL+szn/nM/PUvfvGL+uxnPzt//Qtf+IJ27949f/3zn/+8Pv/5z89f3717t77whS/MX//sZz+rL37xi/PXP/OZz+jLX/7y/PVPfepT2rdv3/z1T37yk9p89vD8CvOZf3hChaPPza8wf/zjH9eTTz45f/uHH35Y3/rWt+avf+xjH9O3v/3t+euDg4OR/Nkb6MvpE7+Z0bv/yzf0bz6wUQN9uaZ/9m5bVVWp4ml28qc6/ff/QbXZGZUqntaffbUlP3tz7xAUjj6nM//wxPw7BJvPHg79z95XvvKV+euPPvqovv71r89fj8vP3gsTZ3TLxTe15gdPSDOnlE4mdEtpSt96fGdT/+4N9feqNDmm/NN75JWmVSxXVfrZS/JGh/l3r4GfPf7PncPP3sr97DWj3QP71c5ndlfcyGzQzA6b2eFKpdKCaaFd9ObWzK8wV7ya1qzqaHkf5JHxvAa/dlg/mjyrv3rmlZbVfy+Hf3XvO1TxnC5WPTlJxUZbyg/cfWtLHn/uHYI1qzpU8Wrz7xD05ta05PHhz2ShqFRy8T/zqaTpYrXW1P0H+nL67+95h9LJhM7P1k8I3fEbPVqfTV3/zgDQQubcFfm1bZjZfZIec859sHH9k5LknPs317rP1q1b3eHDh1s0Q8CfhV1OFvZhj9LhKXNdYujDjqX60BdG9Vp+RsmEyaze5cWrOW3OrdHTf9Yf9PQA4LrM7Ihzbuv1btfubR1/IGmzmd0p6Q1Jvy/pD4KdErB8lqMPetCC7sOO6JpfcJpbd3KXjQNAm2jrwO6cq5rZn0h6RlJS0hPOubGApwUsm+Xogx40Di7CjZope7p9fadOzdQ3nqaTCW1cs2pJJ5Xy8wcgCto6sEuSc+4pSU8FPQ9gJfR0Z5Wfnp1fYZei1eWCg4vgx9zPf++GS3sOiuV6LXozRsbzemT/Uc1crMqrOZ2auahH9h/Vv33wvfz8AQiVdt90CrQ1v33QgxZ0H3ZE21B/r86VKnotP63xE+f1Wn5a50qVpn/+P/f0yzo1U9ZspaaK5zRbqenUTFmfe/rlFZ45ACxN26+wA2Hn5y35gb6cdkm+Nm0GWRLQDiU9CJZJkmvUrTu7amuwaxl/a2ZJ4wAQFAI7EKDlKAnxs2kz6JKUqJf0hEGca7CHRye0NpPSxnWZ+bGobboGgGZQEgMEaDlKQkbG89qx95C27T6oHXsPLakPe9AlKVEv6ZH8ff+X47F3HhhTfnp20QuuKPXi92OyUFTVq2ni5IzGT5zXxMkZVb0a79AAaDsEdiBAk4WiMqnkorGllIT4DWx+H9+vuYOLcl2dOleqzB9cFJXV0aADc9AvuILWtapDU4WSihVPVc+pWPE0VShpzSrePAbQXvhXDQiQ35KQ4dEJlaueTs9U59vadXV2NF0SEIaSlCj3YQ+6D37c9wBMl8ryFrZcd5LXGG9G16qEpi9eeSpq1yrWsgCEC/8qAQHyWxLy6lvndfpCWVXPKWmmqud0+kJZr711viWPH3fL8Q6Fn5Kanu6sSpXFPcfjtAfg5IXKFZtMrTHejPXZVUsaB4CgENiBAPktCak0lhcTCZOZKZGox5ey19xJj1EvSQma38A8Mp7Xo/uP6kc/L+jEuZJ+9POCHt1/tOnQvhwvuIKswffLq9V0+U+6a4w348S52SWNA0BQKIkBAuanJCTdkVCp7KnmnMwk5yS5+ngrHj/uhvp7tfPAmIrlqjKppEoVb0mBefffj6tQrCiZMHUkE3JOKhQr2v334039nfht6xl0l6C5Odxol5tkIqHqVcJ5MtHcz3/VXf2F7bXGASAorLADEbY516VbutLqSJi8mlNHwnRLV1qbc11BTy0W/L5DMXHqghImJcxkMiXMlLD6+FLdSMQMetOq3027tdrVn/W1xq9wrZst4ZsZ5XcoAEQHK+xAhM2t8G5c13FDK7zwL8h3KPyukAe9adXvpt1EwmQ1tyhfW2O8Kaarh/Mm7x6GdygAxAMr7ECEUYMebXfenFXN1VeEnXOq1Zxqrj7eDL8r5EFvWvW7aXdNOnHVGvY16eb+a7tW5UuzFTFBv0MBID5YYQcijhr06PrEh96t/+nJH+pC2VPNSQmTVqeT+sSH3t3U/f2ukA/19+qR/Uf1xtmSvJpTMmFas6pDn/rndy/5udwIv21FZ8pX31x6rfHlFvQ7FADigxV2AAhQZyqpdDKhjoSUTibUedmK89tZjhVykyQnOeck13Q1yLLw2+XmYvXqwfxa45e7VuVMsxU1Qb9DASA+COwAEJDh0QmtzaS0+dYuvfu2ddp8a5fWZlJNl1T4Dbx+H98vvyVdZpcu5z4Wjl/PXbk1V+3jflduTVP35xwDAK1CSQxiz09bOcAPvyUVfts6hqGkw09J1+1rV2nq3MUras5vX9vcwUef+NC79cj+o5q5WF1UEtRsSZLf7z8ANIvAjlijywOC5LeGW/IXeJfj8YP03/7GO/TvnnvtquPNGOjL6d8++F5fgZs9JABagcCOWPPbVg7wY6i/V4/uP6o3CiVVazV1JBLq6mzdps+h/l49/OQPNbNg0+uadLJlj+/XCxNntHHtKk3PVlX2akon69+/FybO6OEmvwaBG0AUENgRa2EoCUC8OUkyycwku7EDkG7US1Nn58O6JNWcNFP29NLU2UiE2MlCUbesWaUNXZ3zY845fn8BtB02nSLW6PKAIA2PTmhdJqXNuS71bVyrzbkurWvhps99zx9XMmHKpJLzH8mEad/zx1vy+H7x+wsgLgjsiDW6PCBIfg8O8utC2buihWHC6uNRwO8vgLggsCPWOCkUQQp6hXh1OjlfDjOn5urjUcDvL4C4oIYdscemMwRlqL9XOw+MqViuKpNKqlTxWrpC/NC2O/X4wWOq1mpKWD2s11x9PCr4/QUQB6ywA0BABvpyevB9t+vk9EW9fGJaJ6cv6sH33d6yAPrw/XfpT9//K8qkkqrW6uU4f/r+X9HD99/VkscHADSHFXbEHgcnISgj43nt/+Eb2tC1Su9orLDv/+Ebes+m9S0N7QR0AAg3AjtiLQwHJ8X9BUOcn38YzgGI8/cfAKKCkhjE2sLAZFa/TCWtZW31RsbzemT/Uf1osqC3zs/qR5MFPbL/qEbG8y15/KDNvWDKT88uesEUl+cfdJeYuH//ASAqCOyItaAD0+eefllnixW5mpQ0k6tJZ4sVfe7pl1vy+EEL+gVT0Hq6szo1c1ETJ2c0fuK8Jk7O6NTMxZZ1iRkenVDF83Ti3KxeeWtaJ87NquJ5sfn+A0BUENgRa0G31Tt+uqhazemiV9NstaaLXk21mtPx0/E4qTHoF0xBu6/3Jr11/qIulOvdYS6UPb11/qLu672pJY//Wn5ap6bLqtackglTteZ0arqs1/LTLXl8AEBzCOyItaAPXqlUa6pdNlZrjMdB0C+YpHpZyI69h7Rt90Ht2HuopeUg3zoypcvaoMs1xpvlZ/7lak0151TxarpYqani1a+XY/LzBwBRQWBHrAV+8IotcbzNBP2CKega7qlCSZJkdulj4fj1+J1/zdXkNXqvO9UvPSc5R2AHgDChSwxij4NXgjPQl9Mu1WuppwpFbWpxl5Kgu7Rcvrp+vfHL+Z2/d41czgI7AIQLgR0I0JpVHbpwsSonybnGKquk1avi86sZ5AumyUJR6zOpRWOtrKHPpBIqVWpy7srxZvidf7V29ZcG1xoHAASDkhggQA9tu1MyUzJhSnfUL2UWqaPh/drz3Kt6z2PP6J1/8ZTe89gz2vPcqy177KBr6P/ot94p06UKqLk//9FvvbOp+/vuMuN3iR8A0BIEdiBAcT8afs9zr+rxg8dUqnjqSNTD8uMHj7UstAddQ//w/Xfp4/dvVldnh5IJU1dnhz5+/+am//7v671JJ2fKKns1JUwqezWdnCk33WUmlbz6fwHXGg+jIDcNA0CrxOd9dyCk4nw0/L7njythUkeiHhATJlVrNe17/nhLvicDfTk9OHVW+54/rgtlT6vTST207c4llej4PSnUz9//CxNnlOtK63ypqrJXUzqZ0NpMh16YOKOHm7h/InH1pfTkNcbDJgwnFQNAKxDYgYiL8tHyF8r1lfWFElYfb4WR8bz2//ANbehapXekkipVPO3/4Rt6z6b1TX0Pgw6Mk4Wibl69Sres6Zwfc841XcOesIQSVmvc71KXGrNorLAHvWkYAFolGv8qA23Mz1v6Qbcl9Gt1OqnL9zfWXH28FfyetBr0Sa1+a/DTHQklzZRKJrQqlVAqWb+evvxVVEjF/eAtAPERjX+VgTblN3AHHRglfy84Htp2p2quXgZTc7XGpVq26dZv4JssFFX1aos2fVa9WssCo98a/M25Lt3SlVZHwuTVnDoSplu60tqc61rhmS+PoDcNA0CrENiBAPkN3EGvMPp9wRH0plu/gW9NOqk3zs6q6jklzVT1nN44O9uydwj8Hvw11N+rVDKpjes69a5bu7RxXadSyWTLNt36FfSmYQBoFWrYEXtB1oD77aPd051Vfnp2voZXau0K43LUEAe56Xaov1c7D4ypWK4q06hhX0rgs/mib13qzegWjLeAnz72QR9c5VfU5w8AzSKwI9aC3jTY053V8VMzmp691OWjq7NDd96ypqn7+w2cfgV98JBffgPf9MWqbl/fqVON1orpZEIb167SzMXqyk58GUX9pN+ozx8AmkFgR6wF3WXivt6b9OLx0/MbLyuep1LF0x/c846m7h/0CmPQK/yS/3dI/AS+ueffu+HSC6xiuapcV+fb3AsAgKUhsCPWgl4hfvqnJ+arKZwuVVY8/dMTTZeJBLnCGPQKf9DvkAz19+rR/Uf1RqGkaq2mjkT9HZJP/fO7V/yxAQDxwaZTxFrQXSYmTl2QWb3/tUnzf544daElj++X302PfoWhS46TJGvUrVvjOgAAy4gVdsRa0CvENedUrTX2K1r98Jqqk8yiE/uCXOEP+h2S4dEJrcukdNu6zPxY1A7u2fPcq1ec9BrXk3cBIKwI7Ii1oGvAOxKmiufqq7Ju8Xhc+KlBD7qGPugXDH7tee5VPX7wmBImdSTq37vHDx6TJEI7AIQIgR2xF+QKcTad1MVqTc4tqGG31p30GTS/NehB15AvxwuGINuK7nv+eCOs16sjE1Y/xGrf88cJ7AAQItSwAwG669a1ynWtUjadbNRiJ5XrWqXNt64NemotsRw16EHWkPs9uGdkPK9H9h/VjyYLeuv8rH40WdAj+48u6bRYPy6UPck5Xax6mq14ulitX79Q9q5/ZwBAyxDYgQAN9fcq3bH4pMl0R3ROmvTL70mtczXkm3Nd6tu4VptzXVqXSbVs06nfTbefe/plnS1W5GpS0kyuJp0tVvS5p19ueg4j43nt2HtI23Yf1I69h5YU9ld1JFSp1fdOzO2hqNTq4wCA8KAkBghQ0DX0QfNbUhKGGnI/JVXHTxeVMCnR2LNgJrma0/HTzc3fb0nRTZkOFcveFXsobsrwXwMAhAn/KgMBi/NJjX5r0Hu6s3r99IzOly6dFLs206E7bm7upNioGx6dULnq6fTM4pNym+5Sk0how5qUTl+oqObqNew3r07JEqywA0CYENgBBMpPDfp9vTfpH18/U1+lNqns1ZSfLmvHb9y0QrNdXr23rNb4iWmVvUs14yapb2NzLzhefeu8zs9WlZApaaaq53T6QllV73xT9597h2PjukvvaHBSKwCED8soAALjtwb9hYkz2rAmrXQyoZqT0smENqxJ64WJMys880v81JD3bVxzxQsUp+YDe8Wr3zuRMJnZfGlN2WvuZY/fTbMAgNZghR1AYPzWoE8WirplzSptWLAi7JxrWQ273xry742f1FzLfefqNexz481IdyRUKnuqOVevf3eSXH28GWHYQxFkW0sAiAoCO4DA+N10uhx90P2c9LmwLaUkZdMdSzrp9ELZUyppStilgF1ztabbKm7OdV1Zw786taQa/iD3UPh9wQMAcUFJDBAwPyUVUee3JMPv/edO+ixVvEUnfe557tWm7u+3LeXqdFK1y6pXaq75g7OG+nuVSi5uC5pKRqct6HL04QeAOCCwAz75CdxzK4z56dlFK4xxCe1++5j7vf/Ckz4Tlmhc1seb0dOdVamyeDV8KSv8D227UzVXP1205mqNy/p4M/w+/6D5fcEDAHFBSQzgg9+39P2WVLQDvyUZfu5/oVxfWV8oYWq6JGWov1c7D4ypWK4qk0qqVPGWtML/8P136fipGR146YQqnlMyYdr+no1Nl+RI/r9/QdaQL0dJEwDEASvsgA9+39JfjhXGOJfU+OW3JMXvCvfIeF5Hfn5Od9yc1T/5pbW64+asjvz8XMv+DoN+h4cuNQDQHFbYAR/8djnxu8LIpj1/Htp2px4/eEzVWk0Jq4f1pZSkSP5WuIN+hyXoxw9DlxoAiAICO+CD38Dtt6Qi6MAVdctRkuKH3xd8UX98Kd4n/QJAsyiJAXzw+5b+QF9OD77vdp2cvqiXT0zr5PRFPfi+25sOMGza8yfokpSe7qxOzVzUxMkZjZ84r4mTMzo1c7FlNdx+N80CAFqDwA74sBw1zPt/+IY2dK3Suzd2aUPXKu3/4RtNB0YClz9BtxW8r/cmnZwpq+zVS3LKXk0nZ8q6r/emljw+NeQAEA2UxAA+BVnD7LekJu6CLgl5YeKMcl3pxQcfZTr0wsQZPdyCx6eGHACigcAOBMhvYBzoy+nBqbNXnNRJ4GpO0G0FJwtF3bx6lW5Z0zk/5pyjhhwAsAglMUCA/Ja0+C2pibugS0IoaQIANIPADgTIb2AMugY76gb6cvr1d6zT66eL+ukvzuv100X9+jvWtWzFOegXDACAaCCwAwHyu2mVLjH+7HnuVR146YQSJq3qMCVMOvDSCe157tWWPL7fv38AQDxQww4EzE8NcdA12GEwMp7X8OiEJgtF9Sxx0+S+548rYVJHor52kTCpWqtp3/PHW9aLnRpyAMD1sMIORFjcSyrmTnrNT88uOum12Rr+C2VPCVs8lrD6eKuMjOe1Y+8hbdt9UDv2HmL/AQDgCgR2IMLiXlLht4Z/dTqpmls8VnP18Vbw+4IDABAPlMQAERfnkgq/bTEf2nanHj94TNVa/eCimqt/PLTtzpWY7hX89uEHAMQDK+wAIstvW8SH779L9/zyelU8p4tVp4rndM8vr29Z/TqbhgEAzSCwA4gsvzX8e557Vf/4s7NKJU2rOkyppOkff3a2ZV1i6MMOAGhG6AK7mT1mZm+Y2Y8bH7+74HOfNLNjZvaKmX1wwfgDjbFjZvaJBeN3mtmLZvaamf2tmaVb/XwArBy/NfwLu8QkLNG4rI+3Qtw3DQMAmhO6wN7w751zv9r4eEqSzOxuSb8vaYukByT9RzNLmllS0l9L+pCkuyXtaNxWknY3vtZmSQVJH231EwHQGu76N7lC0F1i4r5pGADQnChtOv2wpG845y5KOm5mxyTd0/jcMefchCSZ2TckfdjMXpb0fkl/0LjNVyU9JulLLZ01gBUz12UllbRFXVZ2SU2F3tXppEqVxaG9lV1ipHhvGgYANCesK+x/YmYvmdkTZtbdGLtd0uSC20w1xq41frOks8656mXjVzCzQTM7bGaHT548uZzPA8AK8tvW8aFtd6rm6ocl1Vytcdm6LjESfdgBANcXSGA3s+fM7KdX+fiw6ivg75T0q5LelPT5ubtd5Uu5Gxi/ctC5vc65rc65rRs2bFjy8wEQDL9dVh6+/y5tf89G1Zx0sepUc9L292xsWZcY+rADAJoRSEmMc+7+Zm5nZn8j6f9qXJ2S1LPg05sk/aLx56uNn5K03sw6GqvsC28PoA30dGf1+ukZnS9VVfZqSicTWpvp0B03r2nq/iPjeR35+TndcXNWmVS9POb/b+/+g+w6ywKOf5+9u9tNmrVJadJCk9pGM4ZGsWJkRGqsgFLQKaD8UtEqKGGAUUdRRJwgGTsjzmgRRSbIj3YQKVitBAQUbOOKVDBpizQ0QN1Wk5Z2+bFNtt1sdu/dxz/u2bDZ7iY3Obv3ns39fma29973nHPPu8++0/OcN+95333/d5g9B0baMkzFedglSa2o3JCYiHjirI8vBO4u3u8GXhYR50TEZcAm4PPAfwGbihlh+mk+mLo7MxO4DXhRcfy1wEfa8TtIao+nbzyfkbFJJhvNhY8mG9OMjE3y9I3nt3T8rqFhJusNHjo8wZcfHuOhwxNM1hstD6mBckNanIddktSKKj50+icRcQXN4Sv3A9sBMnN/RO4opIoAABKoSURBVHwY+BJQB16bmQ2AiHgd8M9ADXhvZu4vvusNwE0R8UfAncB72vmLSK3Yc2CEXUPDHBwdZ8OalWzfttHe1RbdPvwt1q7qZ2zi2z3sgwO93D78LX69heO/8vARjkzU6SGoRVBvJN98bJJ640hL5y/70OuGNSsZGZs43sMOzsMuSXq8yiXsmfmLJ9l2HXDdPOUfBz4+T/kw355JRqqcsglftzs4Os4Fq85h7eDA8bLMbLmHeqrRfKylp5gmJgKmp5PJRmuTRJYd0rJ920Z27N7P+GT9+JAc52GXJM1VuSExUjcpO8tJtyu7Umh/bw8kTGeSJNOZkEV5C8oOaXEedklSKyrXwy51k4Oj46xe0XdCmWOYW1e2h3rTusHHP7R6bl/LD60uxpAW52GXJJ2KPexSB5XtIe52ZXuot2/bSF+txkXnDfA9Fw5y0XkD9NVqLSf827dtZKqRjE/WyWy+OqRFkrTY7GGXOsgxzOWV6aG+avM6dtIcmnRodJz1p/nQb9njJUlqRTRnP9SMrVu35t69eztdDXWRt3/6K7z7M/fx2GSDc/tr/OqVl7Vt4R5JktQ5EbEvM7eeaj972KUO2nNghJvveIC1g+dwSdHDfvMdD/CU9avtpW0Tb5gkSVVnwi6VVGYedVe67Ky3f/or/Pmt99IT0NvTfH7gz2+9F6DlpN159CVJS82HTtX1yqxUOTOP+sjYxAnzqLf6HQdHx6k3phn++qMceOgIw19/lHpj2lli2uTdn7mvSNZ76Ime4rVZ3oqyf39Jklphwq6uVjbhKjuP+qr+Gg88MkG9kcdX2nzgkQnO7a+d+mCV9thkg2LNpON6olneCufRlyS1gwm7ulrZhKvswjkRQWYyOT3Nsfo0k9PTZCYRceqDVdq5/TXqjeRYvcHEVINj9Qb1RrZ8w1T27y9JUitM2NXVyiZcZedR//qjx5pvmgtsFv+ZVa4l9azNa2kkTBfxn05oZLO8Fc6jL0lqBxN2dbWyCVfZhXMm69P09AQDfTVW9NUY6KvR0xNM1qdP+3fR6XvoyCRrVvYeHxbTE7BmZS8PHZls6XgXTpIktYMJu7pa2YSr7EqbfbVgOpOJqQZHp5rDMqYz6a85JKYdDo6Oc/HqlWx50nl838XnseVJ53Hx6pUt/wtL2b+/JEmtcFpHdbXFWKmyzEqba1edw+hjUyeU5TRcsOqcM/o+nZ4Na1YyMjZxfFpNOP0hLWX+/pIktcKEXV2vkwlXRNDTE9R6ggjIhMa0D522y/ZtG9mxez/jk3VWFAtXOaRFklQ1DomROmjsWJ2LVw/Q2xM0ppPenuDi1QM8eqze6ap1BYe0SJKWA3vYpQ6aGZKxce2q42Xjk3XWDQ50sFbdxSEtkqSqs4dd6iBnGZEkSadiD7vUQYvx0Gu323NghF1DwxwcHWeD8ZMknYVM2KUOc0jGmdtzYIQdu/fTVwtWr+hjZGyCHbv3sxOMqSTprOGQGEnL1q6hYfpqwcr+XiKar321YNfQcKerJknSorGHXeowh3ScuYOj46xe0XdC2Yq+WssLH0mStByYsKvrdTJhdkhHOYux8JEkSVXnkBh1tZmEeWRs4oSEec+Bkbac3yEd5TjLjiSpG5iwq6t1OmE+ODrOir7aCWUO6WidCx9JkrqBQ2LU1To9BtohHeU5y44k6WxnD7u62oY1Kzk61TihrJ0Js0M6JEnSqZiwq6t1OmF2SIckSToVh8Soq1VhpVGHdEiSpJMxYVfXM2GWJElV5pAYSZIkqcJM2CVJkqQKM2GXJEmSKsyEXZIkSaowE3ZJkiSpwkzYJUmSpApzWkeppD0HRtg1NMzB0XE2dGAed0mSdHYzYZdK2HNghB2799NXC1av6GNkbIIdu/ezE0zau4Q3bJKkpWbCLpWwa2iYyXqDbz5aZ7IxTX+th8GBXnYNDZu0tUknE2Zv2CRJ7eAYdqmErzx8hG8+Nkm9kdQiqDeSbz42yVcfPtLpqnWFmYR5ZGzihIR5z4GRtpx/19AwfbVgZX8vEc3Xvlqwa2i4LeeXJHUHE3aphKlGAtDTE0QEPT0BwGRRrqXV6YT54Og4K/pqJ5St6KtxaHS8LeeXJHUHE3aphP7eHkiYziRJpjMhi3ItuU4nzBvWrOToVOOEsqNTDdavWdmW80uSuoNZhVTCpnWDXDDYT29P0JhOenuCCwb72bRusNNV6wqdTpi3b9vIVCMZn6yT2XydaiTbt21sy/klSd3BhF0qYfu2jfTValx03gDfc+EgF503QF+tZsLWJp1OmK/avI6d12xh3eAAh49OsW5wgJ3XbPGBU0nSoopMx9rOtnXr1ty7d2+nq6FlZGaWkkOj46x3Wr+2M/6SpOUqIvZl5tZT7mfCfiITdkmSJLVDqwm7Q2IkSZKkCjNhlyRJkirMhF2SJEmqMBN2SZIkqcJM2CVJkqQK6+10BaTlbmZawYOj42xwWkFJkrTITNilEvYcGGHH7v301YLVK/oYGZtgx+797IS2Je3eMEiSdHZzSIxUwq6hYfpqwcr+XiKar321YNfQcFvOP3PDMDI2ccINw54DI205vyRJWnom7FIJB0fHWdFXO6FsRV+NQ6PjbTl/p28YJEnS0jNhl0rYsGYlR6caJ5QdnWqwfs3Ktpy/0zcMkiRp6ZmwSyVs37aRqUYyPlkns/k61Ui2b9vYlvN3+oZBkiQtPRN2qYSrNq9j5zVbWDc4wOGjU6wbHGDnNVva9tBnp28YJEnS0nOWGKmkqzav69isLFdtXsdOmmPZD42Os95ZYiRJOuuYsEvLXCdvGCRJ0tJzSIwkSZJUYSbskiRJUoWZsEuSJEkVZsIuSZIkVZgJuyRJklRhJuySJElShZmwS5IkSRVmwi5JkiRVmAm7JEmSVGEm7JIkSVKFmbBLkiRJFWbCLkmSJFWYCbskSZJUYSbskiRJUoV1JGGPiBdHxP6ImI6IrXO2vTEi7o2IL0fEc2aVX12U3RsRvzer/LKI+FxEfDUiPhQR/UX5OcXne4vtl7br95MkSZIWS6d62O8GfgYYml0YEZcDLwO2AFcDfxURtYioAe8AngtcDvxcsS/AW4HrM3MTMAq8sih/JTCamd8NXF/sJ0mSJC0rHUnYM/OezPzyPJueD9yUmccy8z7gXuBpxc+9mTmcmZPATcDzIyKAZwI3F8ffCLxg1nfdWLy/GXhWsb8kSZK0bFRtDPvFwMFZnw8VZQuVPwF4JDPrc8pP+K5i++Fif0mSJGnZ6F2qL46ITwMXzbPpTZn5kYUOm6csmf/GIk+y/8m+6/EnjXgV8CqASy65ZIGqSZIkSe23ZAl7Zj77DA47BGyY9Xk98GDxfr7ybwCrI6K36EWfvf/Mdx2KiF7gPOBbC9T1XcC7ALZu3TpvUi9JkiR1wpIl7GdoN/C3EfFnwJOATcDnafaWb4qIy4AHaD6Y+vOZmRFxG/AimuParwU+Muu7rgVuL7bfmpmnTMb37dv3jYj43zOs/wU0byJ0ZoxfOcavHONXjvErx/iVY/zKMX7llInfd7ayU7SQwy66iHgh8BfAWuAR4K7MfE6x7U3AK4A68JuZ+Ymi/HnA24Aa8N7MvK4o30gzWT8fuBN4eWYei4gB4P3AD9DsWX9ZZg4v8e+1NzO3nnpPzcf4lWP8yjF+5Ri/coxfOcavHONXTjvi15Ee9sy8BbhlgW3XAdfNU/5x4OPzlA/TnEVmbvkE8OLSlZUkSZI6qGqzxEiSJEmaxYR9cb2r0xVY5oxfOcavHONXjvErx/iVY/zKMX7lLHn8OjKGXZIkSVJr7GGXJEmSKsyE/QxExHsjYiQi7p5V9ocR8UBE3FX8PK+TdayyiNgQEbdFxD0RsT8ifqMoPz8iPhURXy1e13S6rlV0kvjZBlsQEQMR8fmI+EIRv7cU5ZdFxOeK9vehiOjvdF2r6CTxuyEi7pvV/q7odF2rLCJqEXFnRHys+Gz7Ow3zxM/216KIuD8ivljEaW9R5vW3RQvEb8mvvybsZ+YG4Op5yq/PzCuKn8fNaKPj6sBvZ+aTgR8GXhsRlwO/B/xrZm4C/rX4rMdbKH5gG2zFMeCZmfn9wBXA1RHxw8BbacZvEzAKvLKDdayyheIH8Duz2t9dnavisvAbwD2zPtv+Ts/c+IHt73T8eBGnmakIvf6enrnxgyW+/pqwn4HMHGKBVVN1apn5tcy8o3g/RvN/uhcDzwduLHa7EXhBZ2pYbSeJn1qQTY8WH/uKnwSeCdxclNv+FnCS+KlFEbEe+Cng3cXnwPbXsrnx06Lw+ltxJuyL63UR8d/FkBn/OakFEXEpzcWtPgdcmJlfg2ZSCqzrXM2WhznxA9tgS4p/Tr8LGAE+BfwP8Ehm1otdDuFN0ILmxi8zZ9rfdUX7uz4izulgFavubcDvAtPF5ydg+zsdc+M3w/bXmgT+JSL2RcSrijKvv62bL36wxNdfE/bF807gu2j+E/HXgD/tbHWqLyJWAX9Pc0XbI52uz3IzT/xsgy3KzEZmXgGsp7nw2pPn2629tVo+5sYvIr4XeCOwGfghmitPv6GDVaysiPhpYCQz980unmdX2988Fogf2P5OxzMy86nAc2kOqdzW6QotM/PFb8mvvybsiyQzHy4uYtPAXzPP6qv6tojoo5lsfiAz/6EofjginlhsfyLN3jvNY7742QZPX2Y+Auyh+SzA6oiYWf15PfBgp+q1XMyK39XFUK3MzGPA+7D9LeQZwDURcT9wE82hMG/D9teqx8UvIv7G9te6zHyweB2huer80/D627L54teO668J+yKZaeiFFwJ3L7RvtyvGa74HuCcz/2zWpt3AtcX7a4GPtLtuy8FC8bMNtiYi1kbE6uL9CuDZNJ8DuA14UbGb7W8BC8TvwKyLfdAc/2r7m0dmvjEz12fmpcDLgFsz8xew/bVkgfi93PbXmog4NyIGZ94DP0kzVl5/W7BQ/Npx/e099S6aKyI+CFwFXBARh4A3A1cV00glcD+wvWMVrL5nAL8IfLEYBwvw+8AfAx+OiFcC/we8uEP1q7qF4vdztsGWPBG4MSJqNDstPpyZH4uILwE3RcQfAXfSvCnS4y0Uv1sjYi3N4R13Aa/uZCWXoTdg+yvjA7a/llwI3NK8r6EX+NvM/GRE/Bdef1uxUPzev9TXX1c6lSRJkirMITGSJElShZmwS5IkSRVmwi5JkiRVmAm7JEmSVGEm7JIkSVKFmbBL0jIXEZdGxOPm/Y2InRHx7FMc+4cR8fqlq50kqSznYZeks1Rm7uh0HSRJ5dnDLklnh1pE/HVE7I+If4mIFRFxQ0S8CCAinhcRByLiMxHx9oj42KxjL4+IPRExHBG/Xuz/u7PeXx8RtxbvnxURf1O8f2dE7C3O+ZZZ22+Z+eKI+ImI+Ie5lY2IX46If4yIj0bEfRHxuoj4rYi4MyL+MyLOL/bbExFvi4jPRsTdEfG0onxtRHwqIu6IiF0R8b8RccGSRFaSOsyEXZLODpuAd2TmFuAR4GdnNkTEALALeG5mXgmsnXPsZuA5wNOAN0dEHzAE/GixfSuwqii/Evj3ovxNmbkVeArwYxHxFOBW4MnFqpMAvwK8b4E6fy/w88V5rwPGM/MHgNuBX5q137mZ+SPAa4D3FmVvprks/VOBW4BLThEfSVq2TNgl6exwX2beVbzfB1w6a9tmYDgz7ys+f3DOsf+Umccy8xvACM3lt/cBPxgRg8Axmkn0VppJ/EzC/pKIuAO4E9gCXJ7N5bPfD7w8IlYDTwc+sUCdb8vMscz8OnAY+GhR/sU59f8gQGYOAd9RfO+VwE1F+SeB0ZPERpKWNcewS9LZ4dis9w1gxazPcZrH9mbmVETcT7OH/LPAfwM/DnwXcE9EXAa8HvihzByNiBuAgeI73kcz+Z4A/i4z6xHxQpq94gC/Os95p2d9nubE61POqW+28DtJ0lnDHnZJOvsdADZGxKXF55e2eNwQzaR8iGav+quBu4pe9O8AHgMOR8SFwHNnDsrMB4EHgT8AbijKbsnMK4qfvadZ/5cCRMSVwOHMPAx8BnhJUf6TwJrT/E5JWjbsYZeks1xmHo2I1wCfjIhvAJ9v8dB/B94E3J6Zj0XERFFGZn4hIu4E9gPDwH/MOfYDwNrM/NIi/AqjEfFZmjcJryjK3gJ8MCJeCvwb8DVgbBHOJUmVE82OEknS2SwiVmXmoxERwDuAr2bm9Ut4vr8E7szM95T8nj3A6+f2ykfEOUCjGG7zdOCdmXlFmXNJUlXZwy5J3eHXIuJaoJ/mQ6K7lupEEbGP5nCZ316qc9CcFebDEdEDTAK/toTnkqSOsoddkiRJqjAfOpUkSZIqzIRdkiRJqjATdkmSJKnCTNglSZKkCjNhlyRJkirMhF2SJEmqsP8H7Cv8sicTl/MAAAAASUVORK5CYII=\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",
"sns.residplot(df['highway-mpg'], df['price'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>What is this plot telling us?</i>\n",
"\n",
"<p>We can see from this residual plot that the residuals are not randomly spread around the x-axis, which leads us to believe that maybe a non-linear model is more appropriate for this data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>How do we visualize a model for Multiple Linear Regression? This gets a bit more complicated because you can't visualize it with regression or residual plot.</p>\n",
"\n",
"<p>One way to look at the fit of the model is by looking at the <b>distribution plot</b>: We can look at the distribution of the fitted values that result from the model and compare it to the distribution of the actual values.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First lets make a prediction "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false,
"scrolled": 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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ShARkSyn0C4itZPKa7THNGwInTvXObT/7W/w4otw113Qu3f8r+vd2/e1v/MOfPe7dSpBRESynEK7iNROOsy0g2+RqUN7zL59fqWYgQN9L3tNjR4Nd97pr4d95plalyEiIllOoV1Eaic2057KPe3gQ/vKlbVePH3CBP/55Cc/gXq1/D/mT34CRUVw7bWwaVPtxhARkeym0C4itbNmDbRqBc2aRV1J1bp394urr1xZ45c659dk79ULRoyofQkNGsAjj8COHbWbrRcREVFoF5HaSfXlHmNiK8jUoq99+nT44AO45RZ/g9W66NUL7rgDJk2IYxLTAAAgAElEQVSC556r21giIpJ9FNpFpHbWrk2P0N69u9/Woq/97rv9Wxw7NjGl3Hqrv+nSNdfA1q2JGVNERLKDQruI1M6aNanfzw7QvLlP3jWcaX/nHZg1C266CRo1SkwpDRvCww/D5s1w222JGVNERLKDQruI1Nz+/bBhQ3rMtINvkalhaL/nHjjiCPj2txNbSmGh/yDw17/CG28kdmwREclcCu0iUnPr1vmrNNMptC9b5muOw9atvu/8yiuhZcvEl3PnndChA1x9da0XtRERkSyj0C4iNZcON1Yqq6AAPv/8y7qr8eyzPkxffHE45TRvDvff7y9yHT8+nHOIiEhmUWgXkZpLlzXaY2IXo8bZIjNhgr+R6oknhlfSyJEwapSfdS8uDu88IiKSGRTaRaTm0nGmHeIK7evWwauvwrhxdV/msTp//CPUr+/bZOLs3BERkSyl0C4iNbd2LTRt6m+ulA7atoXWreNa9vHpp32AHjcu/LI6dIDf/hZefhkefzz884mISPpSaBeRmovdWCnsqehEMfMtMnHMtE+YAH37fjk5H7ZrroGBA+H734f165NzThERST8K7SJSc+myRntZcSz7uGoVvPVWcmbZY+rVg4cegi++gOuuS955RUQkvSi0i0jNxWba00lBAWzcWOWtSCdO9NtE3QE1Xt26wc9/DlOmwOTJyT23iIikB4V2EamZ0lL49NP0C+2xFWSq6GufMMG3qnTqlKSayvjhD/1qNd/5Dnz0UfLPLyIiqU2hXURqZvNmOHAAjj026kpqppoVZFas8OumX3RREmsqo2FDP9NfUgIXXgj79kVTh4iIpCaFdhGpmXXr/DbdQnteHjRuXOlM+0sv+e255yavpPI6d4aH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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"\n",
"\n",
"ax1 = sns.distplot(df['price'], hist=False, color=\"r\", label=\"Actual Value\")\n",
"sns.distplot(Yhat, hist=False, color=\"b\", label=\"Fitted Values\" , ax=ax1)\n",
"\n",
"\n",
"plt.title('Actual vs Fitted Values for Price')\n",
"plt.xlabel('Price (in dollars)')\n",
"plt.ylabel('Proportion of Cars')\n",
"\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see that the fitted values are reasonably close to the actual values, since the two distributions overlap a bit. However, there is definitely some room for improvement.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 3: Polynomial Regression and Pipelines</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><b>Polynomial regression</b> is a particular case of the general linear regression model or multiple linear regression models.</p> \n",
"<p>We get non-linear relationships by squaring or setting higher-order terms of the predictor variables.</p>\n",
"\n",
"<p>There are different orders of polynomial regression:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center><b>Quadratic - 2nd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 \n",
"$$\n",
"\n",
"\n",
"<center><b>Cubic - 3rd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 +b_3 X^3\\\\\n",
"$$\n",
"\n",
"\n",
"<center><b>Higher order</b>:</center>\n",
"$$\n",
"Y = a + b_1 X^2 +b_2 X^2 +b_3 X^3 ....\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We saw earlier that a linear model did not provide the best fit while using highway-mpg as the predictor variable. Let's see if we can try fitting a polynomial model to the data instead.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We will use the following function to plot the data:</p>"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def PlotPolly(model, independent_variable, dependent_variabble, Name):\n",
" x_new = np.linspace(15, 55, 100)\n",
" y_new = model(x_new)\n",
"\n",
" plt.plot(independent_variable, dependent_variabble, '.', x_new, y_new, '-')\n",
" plt.title('Polynomial Fit with Matplotlib for Price ~ Length')\n",
" ax = plt.gca()\n",
" ax.set_facecolor((0.898, 0.898, 0.898))\n",
" fig = plt.gcf()\n",
" plt.xlabel(Name)\n",
" plt.ylabel('Price of Cars')\n",
"\n",
" plt.show()\n",
" plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets get the variables"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = df['highway-mpg']\n",
"y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's fit the polynomial using the function <b>polyfit</b>, then use the function <b>poly1d</b> to display the polynomial function."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3 2\n",
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\n"
]
}
],
"source": [
"# Here we use a polynomial of the 3rd order (cubic) \n",
"f = np.polyfit(x, y, 3)\n",
"p = np.poly1d(f)\n",
"print(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's plot the function "
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PlotPolly(p, x, y, 'highway-mpg')"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.polyfit(x, y, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can already see from plotting that this polynomial model performs better than the linear model. This is because the generated polynomial function \"hits\" more of the data points.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #4:</h1>\n",
"<b>Create 11 order polynomial model with the variables x and y from above?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 11 10 9 8 7\n",
"-1.243e-08 x + 4.722e-06 x - 0.0008028 x + 0.08056 x - 5.297 x\n",
" 6 5 4 3 2\n",
" + 239.5 x - 7588 x + 1.684e+05 x - 2.565e+06 x + 2.551e+07 x - 1.491e+08 x + 3.879e+08\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"f2 = np.polyfit(x, y, 11)\n",
"p2 = np.poly1d(f2)\n",
"print(p2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# calculate polynomial\n",
"# Here we use a polynomial of the 3rd order (cubic) \n",
"f1 = np.polyfit(x, y, 11)\n",
"p1 = np.poly1d(f1)\n",
"print(p)\n",
"PlotPolly(p1,x,y, 'Length')\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The analytical expression for Multivariate Polynomial function gets complicated. For example, the expression for a second-order (degree=2)polynomial with two variables is given by:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 +b_2 X_2 +b_3 X_1 X_2+b_4 X_1^2+b_5 X_2^2\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can perform a polynomial transform on multiple features. First, we import the module:"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.preprocessing import PolynomialFeatures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create a <b>PolynomialFeatures</b> object of degree 2: "
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"pr"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"Z_pr=pr.fit_transform(Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original data is of 201 samples and 4 features "
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 4)"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z.shape"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.frame.DataFrame"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(Z)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"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>horsepower</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>highway-mpg</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>111.0</td>\n",
" <td>2548</td>\n",
" <td>130</td>\n",
" <td>27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>111.0</td>\n",
" <td>2548</td>\n",
" <td>130</td>\n",
" <td>27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>154.0</td>\n",
" <td>2823</td>\n",
" <td>152</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>102.0</td>\n",
" <td>2337</td>\n",
" <td>109</td>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>115.0</td>\n",
" <td>2824</td>\n",
" <td>136</td>\n",
" <td>22</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" horsepower curb-weight engine-size highway-mpg\n",
"0 111.0 2548 130 27\n",
"1 111.0 2548 130 27\n",
"2 154.0 2823 152 26\n",
"3 102.0 2337 109 30\n",
"4 115.0 2824 136 22"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"after the transformation, there 201 samples and 15 features"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 15)"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z_pr.shape"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(Z_pr)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'numpy.ndarray' object has no attribute 'head'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-58-e08fc36ff2f4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mZ_pr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m: 'numpy.ndarray' object has no attribute 'head'"
]
}
],
"source": [
"Z_pr.head()"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[1.0000e+00 1.1100e+02 2.5480e+03 1.3000e+02 2.7000e+01 1.2321e+04]\n",
" [1.0000e+00 1.1100e+02 2.5480e+03 1.3000e+02 2.7000e+01 1.2321e+04]\n",
" [1.0000e+00 1.5400e+02 2.8230e+03 1.5200e+02 2.6000e+01 2.3716e+04]\n",
" [1.0000e+00 1.0200e+02 2.3370e+03 1.0900e+02 3.0000e+01 1.0404e+04]\n",
" [1.0000e+00 1.1500e+02 2.8240e+03 1.3600e+02 2.2000e+01 1.3225e+04]\n",
" [1.0000e+00 1.1000e+02 2.5070e+03 1.3600e+02 2.5000e+01 1.2100e+04]\n",
" [1.0000e+00 1.1000e+02 2.8440e+03 1.3600e+02 2.5000e+01 1.2100e+04]\n",
" [1.0000e+00 1.1000e+02 2.9540e+03 1.3600e+02 2.5000e+01 1.2100e+04]]\n"
]
}
],
"source": [
"print(Z_pr[0:8,0:6])"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00]\n",
" [1.110000e+02 1.110000e+02 1.540000e+02 1.020000e+02 1.150000e+02]\n",
" [2.548000e+03 2.548000e+03 2.823000e+03 2.337000e+03 2.824000e+03]\n",
" [1.300000e+02 1.300000e+02 1.520000e+02 1.090000e+02 1.360000e+02]\n",
" [2.700000e+01 2.700000e+01 2.600000e+01 3.000000e+01 2.200000e+01]\n",
" [1.232100e+04 1.232100e+04 2.371600e+04 1.040400e+04 1.322500e+04]\n",
" [2.828280e+05 2.828280e+05 4.347420e+05 2.383740e+05 3.247600e+05]\n",
" [1.443000e+04 1.443000e+04 2.340800e+04 1.111800e+04 1.564000e+04]\n",
" [2.997000e+03 2.997000e+03 4.004000e+03 3.060000e+03 2.530000e+03]\n",
" [6.492304e+06 6.492304e+06 7.969329e+06 5.461569e+06 7.974976e+06]\n",
" [3.312400e+05 3.312400e+05 4.290960e+05 2.547330e+05 3.840640e+05]\n",
" [6.879600e+04 6.879600e+04 7.339800e+04 7.011000e+04 6.212800e+04]\n",
" [1.690000e+04 1.690000e+04 2.310400e+04 1.188100e+04 1.849600e+04]\n",
" [3.510000e+03 3.510000e+03 3.952000e+03 3.270000e+03 2.992000e+03]\n",
" [7.290000e+02 7.290000e+02 6.760000e+02 9.000000e+02 4.840000e+02]]\n"
]
}
],
"source": [
"Z_pr_T = Z_pr.T\n",
"print(Z_pr_T[0:15,0:5])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Pipeline</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Data Pipelines simplify the steps of processing the data. We use the module <b>Pipeline</b> to create a pipeline. We also use <b>StandardScaler</b> as a step in our pipeline.</p>"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create the pipeline, by creating a list of tuples including the name of the model or estimator and its corresponding constructor."
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Input=[('scale',StandardScaler()), ('polynomial', PolynomialFeatures(include_bias=False)), ('model',LinearRegression())]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we input the list as an argument to the pipeline constructor "
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe=Pipeline(Input)\n",
"pipe"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can normalize the data, perform a transform and fit the model simultaneously. "
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, y, **fit_params).transform(X)\n"
]
},
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe.fit(Z,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Similarly, we can normalize the data, perform a transform and produce a prediction simultaneously"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" Xt = transform.transform(Xt)\n"
]
},
{
"data": {
"text/plain": [
"array([13102.74784201, 13102.74784201, 18225.54572197, 10390.29636555])"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ypipe=pipe.predict(Z)\n",
"ypipe[0:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #5:</h1>\n",
"<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"Input2=[('scale',StandardScaler()), ('model',LinearRegression())]\n",
"pipe2=Pipeline(Input2)\n",
"pipe2"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, y, **fit_params).transform(X)\n"
]
},
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe2.fit(Z,y)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" Xt = transform.transform(Xt)\n"
]
},
{
"data": {
"text/plain": [
"array([13699.11161184, 13699.11161184, 19051.65470233, 10620.36193015,\n",
" 15521.31420211, 13869.66673213, 15456.16196732, 15974.00907672,\n",
" 17612.35917161, 10722.32509097])"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ypipe2=pipe2.predict(Z)\n",
"ypipe2[0:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"</div>\n",
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"Input=[('scale',StandardScaler()),('model',LinearRegression())]\n",
"\n",
"pipe=Pipeline(Input)\n",
"\n",
"pipe.fit(Z,y)\n",
"\n",
"ypipe=pipe.predict(Z)\n",
"ypipe[0:10]\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 4: Measures for In-Sample Evaluation</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When evaluating our models, not only do we want to visualize the results, but we also want a quantitative measure to determine how accurate the model is.</p>\n",
"\n",
"<p>Two very important measures that are often used in Statistics to determine the accuracy of a model are:</p>\n",
"<ul>\n",
" <li><b>R^2 / R-squared</b></li>\n",
" <li><b>Mean Squared Error (MSE)</b></li>\n",
"</ul>\n",
" \n",
"<b>R-squared</b>\n",
"\n",
"<p>R squared, also known as the coefficient of determination, is a measure to indicate how close the data is to the fitted regression line.</p>\n",
" \n",
"<p>The value of the R-squared is the percentage of variation of the response variable (y) that is explained by a linear model.</p>\n",
"\n",
"\n",
"\n",
"<b>Mean Squared Error (MSE)</b>\n",
"\n",
"<p>The Mean Squared Error measures the average of the squares of errors, that is, the difference between actual value (y) and the estimated value (ŷ).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 1: Simple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.4965911884339175\n"
]
}
],
"source": [
"#highway_mpg_fit\n",
"lm.fit(X, Y)\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(X, Y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The output of the first four predicted value is: [16236.50464347 16236.50464347 17058.23802179 13771.3045085 ]\n"
]
}
],
"source": [
"Yhat=lm.predict(X)\n",
"print('The output of the first four predicted value is: ', Yhat[0:4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets import the function <b>mean_squared_error</b> from the module <b>metrics</b>"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.metrics import mean_squared_error"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value is: 31635042.944639895\n"
]
}
],
"source": [
"mse = mean_squared_error(df['price'], Yhat)\n",
"print('The mean square error of price and predicted value is: ', mse)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 2: Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.8093562806577458\n"
]
}
],
"source": [
"# fit the model \n",
"lm.fit(Z, df['price'])\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(Z, df['price']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we produce a prediction "
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The output of the first four predicted value is: [13699.11161184 13699.11161184 19051.65470233 10620.36193015]\n"
]
}
],
"source": [
"Y_predict_multifit = lm.predict(Z)\n",
"print('The output of the first four predicted value is: ', Y_predict_multifit[0:4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value using multifit is: 11980366.870726489\n"
]
}
],
"source": [
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Y_predict_multifit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 3: Polynomial Fit (of degree 4)</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let’s import the function <b>r2_score</b> from the module <b>metrics</b> as we are using a different function"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {},
"outputs": [],
"source": [
"X = df['highway-mpg']\n",
"Y = df['price']\n",
"f = np.polyfit(X, Y, 4)\n",
"Pred = np.poly1d(f)\n",
"#from sklearn.metrics import r2_score\n",
"#r_squared = r2_score(y, Pred(X))\n",
"#print('The R-square value is: ', r_squared)\n",
"#mean_squared_error(df['price'], Pred(X))"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.metrics import r2_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We apply the function to get the value of r^2"
]
},
{
"cell_type": "code",
"execution_count": 177,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square value is: 0.674840516987064\n"
]
}
],
"source": [
"r_squared = r2_score(y, Pred(x))\n",
"print('The R-square value is: ', r_squared)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 67.419 % of the variation of price is explained by this polynomial fit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>MSE</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also calculate the MSE: "
]
},
{
"cell_type": "code",
"execution_count": 178,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"20433560.105891857"
]
},
"execution_count": 178,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_squared_error(df['price'], Pred(X))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 4: Multivariate Polynomial Fit (of degree 4)</h3>"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Z.shape: (201, 4)\n",
"Z_poly.shape: (201, 70)\n",
"The R-square value is: 0.9559706946284232\n",
"The mean square error of price and predicted value using multifit is: 2766874.425418462\n"
]
}
],
"source": [
"Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]\n",
"Y = df['price']\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.metrics import r2_score\n",
"poly=PolynomialFeatures(degree=4)\n",
"Z_poly=poly.fit_transform(Z) # transform the input variables/features for poly so we can then use regular linear regression\n",
"print(\"Z.shape:\", Z.shape)\n",
"print(\"Z_poly.shape:\",Z_poly.shape)\n",
"lm = LinearRegression()\n",
"lm.fit(Z_poly, Y) # fit the transformed poly object into the linear regression model\n",
"Z_poly_predict = lm.predict(Z_poly) # Here we use the existing Z features/indepent variable set as same set to predict from\n",
"r_squared = r2_score(Y, Z_poly_predict)\n",
"print('The R-square value is: ', r_squared)\n",
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Z_poly_predict))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 5: Prediction and Decision Making</h2>\n",
"<h3>Prediction</h3>\n",
"\n",
"<p>In the previous section, we trained the model using the method <b>fit</b>. Now we will use the method <b>predict</b> to produce a prediction. Lets import <b>pyplot</b> for plotting; we will also be using some functions from numpy.</p>"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a new input "
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"new_input=np.arange(1, 100, 1).reshape(-1, 1)"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[1]\n",
" [2]\n",
" [3]\n",
" [4]\n",
" [5]]\n"
]
}
],
"source": [
"print(new_input[0:5,0:])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Fit the model "
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(X, Y)\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Produce a prediction"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([37601.57247984, 36779.83910151, 35958.10572319, 35136.37234487,\n",
" 34314.63896655])"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat=lm.predict(new_input)\n",
"yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can plot the data "
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(new_input, yhat)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Decision Making: Determining a Good Model Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Now that we have visualized the different models, and generated the R-squared and MSE values for the fits, how do we determine a good model fit?\n",
"<ul>\n",
" <li><i>What is a good R-squared value?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the higher R-squared value is a better fit</b> for the data.\n",
"<ul>\n",
" <li><i>What is a good MSE?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the smallest MSE value is a better fit</b> for the data.</p>\n",
"\n",
"\n",
"<h4>Let's take a look at the values for the different models.</h4>\n",
"<p>Simple Linear Regression: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.49659118843391759</li>\n",
" <li>MSE: 3.16 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Multiple Linear Regression: Using Horsepower, Curb-weight, Engine-size, and Highway-mpg as Predictor Variables of Price.\n",
"<ul>\n",
" <li>R-squared: 0.80896354913783497</li>\n",
" <li>MSE: 1.2 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Polynomial Fit (degree 4): Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.6741946663906514</li>\n",
" <li>MSE: 2.05 x 10^7</li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>Multivariate Polynomial Fit (degree 4): Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.9559706946284232</li>\n",
" <li>MSE: 2.76 x 10^6</li>\n",
"</ul>\n",
"</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Usually, the more variables you have, the better your model is at predicting, but this is not always true. Sometimes you may not have enough data, you may run into numerical problems, or many of the variables may not be useful and or even act as noise. As a result, you should always check the MSE and R^2.</p>\n",
"\n",
"<p>So to be able to compare the results of the MLR vs SLR models, we look at a combination of both the R-squared and MSE to make the best conclusion about the fit of the model.\n",
"<ul>\n",
" <li><b>MSE</b>The MSE of SLR is 3.16x10^7 while MLR has an MSE of 1.2 x10^7. The MSE of MLR is much smaller.</li>\n",
" <li><b>R-squared</b>: In this case, we can also see that there is a big difference between the R-squared of the SLR and the R-squared of the MLR. The R-squared for the SLR (~0.497) is very small compared to the R-squared for the MLR (~0.809).</li>\n",
"</ul>\n",
"</p>\n",
"\n",
"This R-squared in combination with the MSE show that MLR seems like the better model fit in this case, compared to SLR."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: We can see that Polynomial Fit brought down the MSE, since this MSE is smaller than the one from the SLR.</li> \n",
" <li><b>R-squared</b>: The R-squared for the Polyfit is larger than the R-squared for the SLR, so the Polynomial Fit also brought up the R-squared quite a bit.</li>\n",
"</ul>\n",
"<p>Since the Polynomial Fit resulted in a lower MSE and a higher R-squared, we can conclude that this was a better fit model than the simple linear regression for predicting Price with Highway-mpg as a predictor variable.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: The MSE for the MLR is smaller than the MSE for the Polynomial Fit.</li>\n",
" <li><b>R-squared</b>: The R-squared for the MLR is also much larger than for the Polynomial Fit.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression (MLR) vs Multivariate Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: The MSE for the MLR is greater than the MSE for the Multivariate Polynomial Fit.</li>\n",
" <li><b>R-squared</b>: The R-squared for the MLR is also much smaller than for the Multivariate Polynomial Fit.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Conclusion:</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing these four models, we conclude that <b>the MPF (Multivariate Polynomial Fit) model is the best model, and the MLR model is the 2nd best model</b> to be able to predict price from our dataset. This result makes sense, since we have 27 variables in total, and we know that more than one of those variables are potential predictors of the final car price.</p>"
]
},
{
"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/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"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