Created
November 21, 2020 20:53
-
-
Save eray995/40219b9ea817571a0b3411ef643ce78b to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<center>\n", | |
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n", | |
"</center>\n", | |
"\n", | |
"# Model Development\n", | |
"\n", | |
"Estimated time needed: **30** minutes\n", | |
"\n", | |
"## Objectives\n", | |
"\n", | |
"After completing this lab you will be able to:\n", | |
"\n", | |
"- Develop prediction models\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Some questions we want to ask in this module\n", | |
"\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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Setup</h4>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Import libraries\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 27, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"load data and store in dataframe df:\n" | |
] | |
}, | |
{ | |
"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.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 28, | |
"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>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": 28, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# path of data \n", | |
"path = 'https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DA0101EN-SkillsNetwork/labs/Data%20files/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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Linear Regression</h4>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<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" | |
] | |
}, | |
{ | |
"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", | |
"$$\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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Lets load the modules for linear regression</h4>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 29, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.linear_model import LinearRegression" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Create the linear regression object</h4>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 30, | |
"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>\n" | |
] | |
}, | |
{ | |
"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.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"X = df[['highway-mpg']]\n", | |
"Y = df['price']" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Fit the linear model using highway-mpg.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"metadata": {}, | |
"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": [ | |
"lm.fit(X,Y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" We can output a prediction \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n", | |
" 20345.17153508])" | |
] | |
}, | |
"execution_count": 33, | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"38423.3058581574" | |
] | |
}, | |
"execution_count": 34, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.intercept_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>What is the value of the Slope (b)?</h4>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([-821.73337832])" | |
] | |
}, | |
"execution_count": 35, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.coef_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>What is the final estimated linear model we get?</h3>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As we saw above, we should get a final linear model with the structure:\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"$$\n", | |
"Yhat = a + b X\n", | |
"$$\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Plugging in the actual values we get:\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>\n" | |
] | |
}, | |
{ | |
"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", | |
"\n", | |
"</div>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 36, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"lm1 = LinearRegression()\n", | |
"lm1" | |
] | |
}, | |
{ | |
"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", | |
"-->\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", | |
"\n", | |
"</div>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 37, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"X = df[['engine-size']]\n", | |
"Y = df['price']\n", | |
"lm1.fit(X,Y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"lm1.fit(df[['engine-size']], 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", | |
"\n", | |
"</div>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Slope</h4>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([166.86001569])" | |
] | |
}, | |
"execution_count": 38, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"lm1.coef_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Intercept</h4>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"-7963.338906281042" | |
] | |
}, | |
"execution_count": 39, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"lm1.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", | |
"-->\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", | |
"\n", | |
"</div>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 40, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([13728.4631336 , 13728.4631336 , 17399.38347881, 10224.40280408,\n", | |
" 14729.62322775])" | |
] | |
}, | |
"execution_count": 40, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"Yhat=lm1.predict(X)\n", | |
"Yhat[0:5] " | |
] | |
}, | |
{ | |
"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=-7963.34 + 166.86*X\n", | |
"\n", | |
"Price=-7963.34 + 166.86*engine-size\n", | |
"\n", | |
"-->\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Multiple Linear Regression</h4>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"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", | |
"$$\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", | |
"$$\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The equation is given by\n" | |
] | |
}, | |
{ | |
"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", | |
"$$\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.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 57, | |
"metadata": {}, | |
"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.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 58, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 58, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.fit(Z, df['price'])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"What is the value of the intercept(a)?\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"-15806.62462632922" | |
] | |
}, | |
"execution_count": 21, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.intercept_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"What are the values of the coefficients (b1, b2, b3, b4)?\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 43, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])" | |
] | |
}, | |
"execution_count": 43, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.coef_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" What is the final estimated linear model that we get?\n" | |
] | |
}, | |
{ | |
"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?\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 44, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 44, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"lm2=LinearRegression()\n", | |
"Z = df[['normalized-losses', 'highway-mpg']]\n", | |
"lm2.fit(Z, 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", | |
"-->\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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 45, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 1.49789586, -820.45434016])" | |
] | |
}, | |
"execution_count": 45, | |
"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", | |
"-->\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>2) Model Evaluation using Visualization</h3>\n" | |
] | |
}, | |
{ | |
"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.\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"import the visualization package: seaborn\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# import the visualization package: seaborn\n", | |
"import seaborn as sns\n", | |
"%matplotlib inline " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Regression Plot</h3>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's visualize **highway-mpg** as potential predictor variable of price:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.0, 48284.56260819524)" | |
] | |
}, | |
"execution_count": 47, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAJNCAYAAABwXMA5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACNlklEQVR4nOzde5zcZXn//9c955k97yab025INgmE8yEHQTEE1IqtxUNRoSoIKFHR+q211Z5oSw8//bZfW6yoQUQOWoFiq7GtWCWEgIBJOAQIBJJsEnZz2s2ed+c8n/v3x8yGbJLdnd3ZOezs+/l45LHJJ/nM3AvJ7nvuue7rMtZaRERERESkMFzFXoCIiIiIyEyiAC4iIiIiUkAK4CIiIiIiBaQALiIiIiJSQArgIiIiIiIFpAAuIiIiIlJAnmIvoNBmzZplFy1aVOxliIiIiEiZe/bZZ49aa2efeH3GBfBFixaxbdu2Yi9DRERERMqcMWb/qa6rBEVEREREpIAUwEVERERECkgBXERERESkgBTARUREREQKSAFcRERERKSAFMBFRERERApIAVxEREREpIAUwEVERERECkgBXERERESkgBTARUREREQKSAFcRERERKSAFMBFRERERApIAVxEREREpIAUwEVERERECkgBXERERESkgBTARUREREQKSAFcRERERKSAFMBFRERERApIAVxEREREpIAUwEVERERECkgBXERERESkgBTARUREREQKSAFcRERERKSAFMBFRERERApIAVxEREREpIAUwEVERERECkgBXERERESkgBTARUREREQKyFPsBcwEm3Z2sH5zK209YZrrQqxb08La5Y3FXpaIiIiIFIF2wPNs084Obt2wg46BKLVBLx0DUW7dsINNOzuKvTQRERERKQIF8Dxbv7kVr9sQ8nkwJv3R6zas39xa7KWJiIiISBEogOdZW0+YoNc94lrQ66a9J1ykFYmIiIhIMSmA51lzXYhIIjXiWiSRoqkuVKQViYiIiEgxKYDn2bo1LSRSlnA8ibXpj4mUZd2almIvTURERESKQAE8z9Yub+S2q86msSpAXyRBY1WA2646W11QRERERGYotSEsgLXLGxW4RURERATQDriIiIiISEEpgIuIiIiIFJACuIiIiIhIASmAi4iIiIgUkAK4iIiIiEgBKYCLiIiIiBSQAriIiIiISAEpgIuIiIiIFJACuIiIiIhIASmAi4iIiIgUkAK4iIiIiEgBKYCLiIiIiBSQAriIiIiISAEpgIuIiIiIFJACuIiIiIhIASmAi4iIiIgUkAK4iIiIiEgBKYCLiIiIiBSQAriIiIiISAEpgIuIiIiIFJACuIiIiIhIASmAi4iIiIgUkAK4iIiIiEgBKYCLiIiIiBSQAriIiIiISAEpgIuIiIiIFJACuIiIiIhIASmAi4iIiIgUkAK4iIiIiEgBKYCLiIiIiBSQAriIiIiISAEpgIuIiIiIFJACuIiIiIhIASmAi4iIiIgUkAK4iIiIiEgBKYCLiIiIiBSQAriIiIiISAEpgIuIiIiIFJCn2AsQybdNOztYv7mVtp4wzXUh1q1pYe3yxmIvS0RERGYo7YBLWdu0s4NbN+ygYyBKbdBLx0CUWzfsYNPOjmIvTURERGYoBXApa+s3t+J1G0I+D8akP3rdhvWbW4u9NBEREZmhFMClrLX1hAl63SOuBb1u2nvCRVqRiIiIzHSqAS8A1SAXT3NdiI6BKCHfm3/VI4kUTXWhIq5KREREZjLtgOeZapCLa92aFhIpSziexNr0x0TKsm5NS7GXJiIiIjOUAnieqQa5uNYub+S2q86msSpAXyRBY1WA2646W+9AiIiISNGoBCXP2nrC1Aa9I66pBrmw1i5vVOAWERGRkqEd8DxrrgsRSaRGXFMNsoiIiMjMpQCeZ6pBFhEREZHjKYDnmWqQRUREROR4qgEvANUgi4iIiMgw7YCLiIiIiBRQ3gO4McZtjHneGPNfmV/XG2N+aYzZlflYd9yf/VNjzG5jzGvGmHcfd32FMealzO99wxhjMtf9xpgHM9d/Y4xZlO/PR0REREQkF4XYAf8C8Opxv/4K8Ki1dhnwaObXGGPOAq4BzgauBL5ljBmeIf5t4GZgWebHlZnrNwE91tqlwD8DX8vvpyIiIiIikpu8BnBjTBPwO8Bdx11+H3Bv5uf3Au8/7voD1tqYtXYvsBtYbYyZB1Rba5+21lrgvhPuGX6sh4F3DO+Oi4iIiIiUonzvgP8L8CeAc9y1OdbaQwCZj8OnExcAbcf9ufbMtQWZn594fcQ91tok0Ac0TOlnICIiIiIyhfIWwI0x7wU6rLXPZnvLKa7ZMa6Pdc+Ja7nZGLPNGLOts7Mzy+WIiIiIiEy9fO6Avw24yhizD3gAuMIY8wPgSKashMzHjsyfbweaj7u/CTiYud50iusj7jHGeIAaoPvEhVhr77TWrrTWrpw9e/bUfHYiIiIiIpOQtwBurf1Ta22TtXYR6cOVG621HwM2ANdn/tj1wE8zP98AXJPpbLKY9GHLLZkylQFjzMWZ+u7rTrhn+LGuzjzHSTvgIiIiIiKlohiDeL4KPGSMuQl4A/gQgLV2hzHmIeAVIAncYq1NZe75DHAPEAR+nvkB8D3gfmPMbtI739cU6pMQEREREZkMM9M2jFeuXGm3bdtW7GWIiIiISJkzxjxrrV154nVNwhQRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAvIUewEiMrZNOztYv7mVtp4wzXUh1q1pYe3yxmIvS0RERCZJO+AiJWzTzg5u3bCDjoEotUEvHQNRbt2wg007O4q9NBEREZkk7YBL3mkHd/LWb27F6zaEfOl/qiGfh3A8yfrNrfpvKCIiMk1pB1zySju4uWnrCRP0ukdcC3rdtPeEi7QiERERyZUCuOTV8Tu4xqQ/et2G9Ztbi720aaG5LkQkkRpxLZJI0VQXKtKKREREJFcK4JJX2sHNzbo1LSRSlnA8ibXpj4mUZd2almIvTURERCZJAVzySju4uVm7vJHbrjqbxqoAfZEEjVUBbrvqbNV/i4iITGM6hCl5tW5NC7du2EE4niTodRNJpLSDO0FrlzcqcIuIiJQR7YBLXmkHV0RERGQk7YBL3mkHV0RERORN2gEXERERESkgBXARERERkQJSCco0oEmSIiIiIuVDO+AlTpMkRURERMqLAniJ0yRJERERkfKiAF7iNElSREREpLwogJc4TZIUERERKS8K4CVu3ZoWEilLOJ7E2vTHQk+S3LSzg2vvfIZLv7aRa+98RvXnIiIiIjlQAC9xxZ4kqUOgIiIiIlNLbQingWJOkjz+EChAyOch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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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.0, 47414.1)" | |
] | |
}, | |
"execution_count": 50, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAJNCAYAAABwXMA5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABbKklEQVR4nO3dfXhc53nf+d89Z2bwDhJ8gaiQkCWs5dCWK9kSrdqNLpa13UTZpLK7qyRSt4m3a9ds6tZqs07jdDfalk33sppsHHvbeKkoWStpG9lhm4TNxk4dKyyjVLLebMmlBVsKKBukXkCRIAhgAMzMOc/+cc4AM4MBMQBmzsyZ+X6uC9cAD2aAMxwO5jfPuZ/7MeecAAAAAMQj1eoDAAAAALoJARwAAACIEQEcAAAAiBEBHAAAAIgRARwAAACIEQEcAAAAiFG61QcQtz179rjrr7++1YcBAACADvfMM8+84ZzbWz3edQH8+uuv19NPP93qwwAAAECHM7Pv1hqnBAUAAACIEQEcAAAAiBEBHAAAAIgRARwAAACIEQEcAAAAiBEBHAAAAIgRARwAAACIEQEcAAAAiBEBHAAAAIgRARwAAACIEQEcAAAAiBEBHAAAAIgRARwAAACIEQEcAAAAiBEBHAAAAIgRARwAAACIEQEcAAAAiBEBHAAAAIhRutUHAGzVqYlpHT89qamZnMZG+nX08LiOHBxt9WEBAABcFTPgSKRTE9O6/+QZTc8taWdfRtNzS7r/5Bmdmphu9aEBAABcFQEciXT89KQynqk/m5ZZeJnxTMdPT7b60AAAAK6KAI5EmprJqS/jVYz1ZTydm8m16IgAAADqQwBHIo2N9Gux4FeMLRZ8HRjpb9ERAQAA1IcAjkQ6enhcBd8ply/KufCy4DsdPTze6kMDAAC4KgI4EunIwVEdu+smjQ71anaxoNGhXh276ya6oAAAgLZHG0Ik1pGDowRuAACQOMyAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMSKAAwAAADEigAMAAAAxIoADAAAAMUq3+gAAAMlzamJax09Pamomp7GRfh09PK4jB0dbfVgAkAjMgAMANuXUxLTuP3lG03NL2tmX0fTcku4/eUanJqZbfWgAkAgEcADAphw/PamMZ+rPpmUWXmY80/HTk60+NABIBAI4AGBTpmZy6st4FWN9GU/nZnItOiIASBZqwJFY1KACrTE20q/puSX1Z1dfQhYLvg6M9LfwqAAgOZgBRyJRgwq0ztHD4yr4Trl8Uc6FlwXf6ejh8VYfGgAkAgEciUQNKtA6Rw6O6thdN2l0qFeziwWNDvXq2F03cQYKAOpECQoSaWomp519mYoxalCB+Bw5OErgBoAtYgYciTQ20q/Fgl8xRg0qAABIAgI4EokaVAAAkFQEcCQSNagAACCpqAFHYlGDCgAAkogZcAAAACBGBHAAAAAgRk0P4GbmmdnXzewPo693mdlXzOzF6HKk7Lo/b2Yvmdm3zeyHysZvM7NvRt/7rJlZNN5jZl+Ixr9mZtc3+/4AAAAA2xHHDPh9kl4o+/qTkr7qnLtR0lejr2Vmb5N0j6SbJN0p6dfMzItu8zlJH5V0Y/RxZzT+YUkzzrk3S/q0pAeae1cAAACA7WlqADezA5J+RNJDZcMfkPRw9PnDkj5YNv6Ic27ZOXdW0kuSbjezayUNO+ced845Sb9VdZvSzzoh6X2l2XEAAACgHTV7BvxXJf0TSUHZ2DXOuVclKbostbHYL2mq7HrnorH90efV4xW3cc4VJc1K2t3QewAAAAA0UNMCuJn9qKRp59wz9d6kxpi7yvjVblN9LB81s6fN7OkLFy7UeTgAAABA4zVzBvwHJN1lZi9LekTSe83s30p6PSorUXQ5HV3/nKSxstsfkPRKNH6gxnjFbcwsLWmHpEvVB+Kce9A5d8g5d2jv3r2NuXcAAADAFjQtgDvnft45d8A5d73CxZWPOuf+tqSTkj4UXe1Dkv4g+vykpHuiziY3KFxs+WRUpjJnZu+O6rt/quo2pZ91d/Q71syAAwAAAO2iFTthfkrSF83sw5K+J+nHJMk5d8bMvijpW5KKkj7mnPOj2/y0pM9L6pP0pehDkn5D0m+b2UsKZ77vietOAAAAAFth3TZhfOjQIff000+3+jAAAADQ4czsGefcoepxdsIEAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGKUbvUBAACA9nZqYlrHT09qaiansZF+HT08riMHR1t9WEBiMQMOAADWdWpiWvefPKPpuSXt7Mtoem5J9588o1MT060+NCCxmAEHAGwaM6Ld4/jpSWU8U382jAz92bRy+aKOn57kMQe2iBlwAMCmMCPaXaZmcurLeBVjfRlP52ZyLToiIPkI4ACATSmfETULLzOe6fjpyVYfGppgbKRfiwW/Ymyx4OvASH+LjghIPgI4AGBTmBHtLkcPj6vgO+XyRTkXXhZ8p6OHx1t9aEBiEcABAJvCjGh3OXJwVMfuukmjQ72aXSxodKhXx+66ifpvYBtYhAkA2JSjh8d1/8kzyuWL6st4Wiz4zIh2uCMHRwncQAMxAw4A2BRmRAFge5gBBwBsGjOiALB1zIADAAAAMSKAAwAAADGiBAVAYrD7IgCgEzADDiAR2H0RANApCOAAEoHdFwEAnYIADiAR2H0RANApCOAAEoHdFwEAnYIADiTQqYlp3fvgE7rjgUd174NPdEUd9NHD4yr4Trl8Uc6Fl+y+CABIIgI4kDDduhiR3RcBAJ2CNoRAwpQvRpSk/mxauXxRx09PdnwYZfdFAEAnYAYcSBgWIwIAkGwEcCBhWIwIAECyEcCBhGExIgAAyUYABxLmyMFR3X3rfl2YW9YLr83pwtyy7r51P7XRAAAkBAEcSJhTE9M68ex57R3q0Vv3DWnvUI9OPHu+47ugAADQKQjgQMKwJTsAAMlGAAcShi4oAAAkGwEcSBi6oAAAkGwEcCBh6IICAECyEcCBhGFLdgAAko2t6IEEYkt2AACSixlwAAAAIEYEcAAAACBGlKAACXRqYlrHT09qaiansZF+HT08TkkKAAAJwQw4kDCnJqZ1/8kzmp5b0s6+jKbnlnT/yTPshAkAQEIwAw4kTPlOmJLUn00rly/q+OlJZsEBNAVn3YDGYgYcSBh2wgQQJ866AY1HAAcShp0wAcSp/KybWXiZ8UzHT0+2+tCAxCKAAwnDTpgA4sRZN6DxCOBAwrATJoA4cdYNaDwWYQIJxE6YAOJy9PC47j95Rrl8UX0ZT4sFn7NuwDYxAw4AANbFWTeg8ZgBBwAAV8VZN6CxmAEHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABixE6YAADgqk5NTOv46UlNzeQ0NtKvo4fH2RkT2AZmwAEAwLpOTUzr/pNnND23pJ19GU3PLen+k2d0amK61YcGJBYBHAAArOv46UllPFN/Ni2z8DLjmY6fnmz1oQGJRQkKkECcDgYQl6mZnHb2ZSrG+jKezs3kWnREQPIxAw4kDKeDAcRpbKRfiwW/Ymyx4OvASH+LjghIPgI4kDCcDgYQp6OHx1XwnXL5opwLLwu+09HD460+NCCxCOBAwkzN5NSX8SrGOB0MoFmOHBzVsbtu0uhQr2YXCxod6tWxu26i7A3YBmrAgYQZG+nX9NyS+rOrT19OBwNopiMHRwncQAMxAw4kDKeDAQBINgI4kDCcDgYAINkoQQESiNPBAAAkFwEcdaHvNAAAQGNQgoIN0XcaAACgcQjg2BB9pwEAABqHAI4N0XcaAACgcQjg2BDbEAMAADQOARwbou80AABA4xDAsSH6TgMAADQObQhRF/pOAwAANAYz4AAAAECMmAEHAGwam3MBwNYxAw4A2BQ25wKA7SGAAwA2hc25AGB7COAAgE1hcy4A2B4COABgU9icCwC2hwAOANgUNucCgO0hgAMANoXNuQBge2hDCADYNDbnAoCta9oMuJn1mtmTZvacmZ0xs38eje8ys6+Y2YvR5UjZbX7ezF4ys2+b2Q+Vjd9mZt+MvvdZM7NovMfMvhCNf83Mrm/W/QEAAAAaoZklKMuS3uucu0XSOyTdaWbvlvRJSV91zt0o6avR1zKzt0m6R9JNku6U9GtmVlpm/zlJH5V0Y/RxZzT+YUkzzrk3S/q0pAeaeH8AAACAbWtaAHeh+ejLTPThJH1A0sPR+MOSPhh9/gFJjzjnlp1zZyW9JOl2M7tW0rBz7nHnnJP0W1W3Kf2sE5LeV5odBwAAANpRUxdhmplnZt+QNC3pK865r0m6xjn3qiRFl6Uiwv2Spspufi4a2x99Xj1ecRvnXFHSrKTdTbkzAAAAQAM0NYA753zn3DskHVA4m/32q1y91sy1u8r41W5T+YPNPmpmT5vZ0xcuXNjgqAEAAIDmiaUNoXPusqRTCmu3X4/KShRdTkdXOydprOxmByS9Eo0fqDFecRszS0vaIelSjd//oHPukHPu0N69extzpwAAAIAtaGYXlL1mtjP6vE/S+yVNSDop6UPR1T4k6Q+iz09KuifqbHKDwsWWT0ZlKnNm9u6ovvunqm5T+ll3S3o0qhMHAAAA2lIz+4BfK+nhqJNJStIXnXN/aGaPS/qimX1Y0vck/ZgkOefOmNkXJX1LUlHSx5xzpb2Of1rS5yX1SfpS9CFJvyHpt83sJYUz3/c08f4AAAAA22bdNmF86NAh9/TTT7f6MAAAANDhzOwZ59yh6nG2ogcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGJEAAcAAABiRAAHAAAAYkQABwAAAGKUbvUBIBlOTUzr+OlJTc3kNDbSr6OHx3Xk4GirDwsAACBxmAHHhk5NTOsTJ57T16dm9PqVJX19akafOPGcTk1Mt/rQAAAAEocAjg196ksv6HKuIBdInplcIF3OFfSpL73Q6kMDAABIHEpQsKGzF3NKmZRKmSTJTHKB09mLuRYfGQAAQPIwAw4AAADEiACODY3vGVDgpMA5OTkFzilw4TgAAAA2hwCODf3cnQc10p+RSSr6gUzSSH9GP3fnwVYfGgAAQOIQwLGhIwdH9Ut336J3Xjeia3f06Z3XjeiX7r6FNoQAAABbwCJM1OXIwVECNwAAQAMwAw4AAADEiAAOAAAAxIgADgAAAMSIAA4AAADEiAAOAAAAxIgADgAAAMSIAA4AAADEiAAOAAAAxIgADgAAAMSIAA4AAADEiAAOAAAAxIgADgAAAMSIAA4AAADEiAAOAAAAxIgADgAAAMSIAA4AAADEiAAOAAAAxIgADgAAAMSIAA4AAADEiAAOAAAAxIgADgAAAMSIAA4AAADEKN3qA0AynJqY1vHTk5qayWlspF9HD4/ryMHRVh8WAABA4jADjg2dmpjW/SfPaHpuSTv7MpqeW9L9J8/o1MR0qw8NAAAgcQjg2NDx05PKeKb+bFpm4WXGMx0/PdnqQwMAAEgcAjg2NDWTU1/Gqxjry3g6N5Nr0REBAAAkFwEcGxob6ddiwa8YWyz4OjDS36IjAgAASC4CODZ09PC4Cr5TLl+Uc+FlwXc6eni81YcGAACQOARwbOjIwVEdu+smjQ71anaxoNGhXh276ya6oAAAAGwBbQhRlyMHRwncAAAADcAMOAAAABAjAjgAAAAQIwI4AAAAECNqwDsA28QDAAAkBzPgCcc28QAAAMlSdwA3szeZ2fujz/vMbKh5h4V6sU08AABAstQVwM3s70o6Iel4NHRA0u836ZiwCWwTDwAAkCz1zoB/TNIPSLoiSc65FyVRZNwG2CYeAAAgWeoN4MvOuXzpCzNLS3LNOSRsBtvEAwAAJEu9Afy/mNk/ldRnZn9d0u9K+k/NOyzUi23iAQAAksWc23gi28xSkj4s6QclmaQ/lvSQq+fGbebQoUPu6aefbvVhAAAAoMOZ2TPOuUPV4/X2Ae+T9JvOuV+PfpgXjbHSDwDQFOxxAKBT1VuC8lWFgbukT9KfNP5wAABgjwMAna3eAN7rnJsvfRF9TpsNAEBTsMcBgE5WbwBfMLNbS1+Y2W2SFptzSACAbsceBwA6Wb014P9I0u+a2SvR19dK+ommHBEAoOuNjfRrem5J/dnVlyn2OADQKeqaAXfOPSXpoKSflvT3Jb3VOfdMMw8MANC92OMAQCe76gy4mb3XOfeomf0PVd+60czknPuPTTw2AECXOnJwVMcU1oKfm8npAF1QAHSQjUpQ/qqkRyX9jRrfc5II4ACApjhycJTADaAjXTWAO+f+j2gTni85574Y0zEBAAAAHWvDGnDnXCDpH8RwLAAAAEDHq7cN4VfM7BNmNmZmu0ofTT0yAAAAoAPV24bwf1FY8/33q8ZZjg4AAABsQr0B/G0Kw/cdCoP4n0n6f5p1UAAAAECnqjeAPyzpiqTPRl/fG439eDMOCgAAAOhU9Qbw73fO3VL29Z+a2XPNOCAAQPs7NTGt46cnNTWT0xg9ugFgU+pdhPl1M3t36Qsz+8uS/rw5hwQAaGenJqZ1/8kzmp5b0s6+jKbnlnT/yTM6NTHd6kMDgESodwb8L0v6KTP7XvT1dZJeMLNvSnLOuZubcnQAGoLZSjTS8dOTynim/mz4EtKfTSuXL+r46Un+XwFAHeoN4Hc29SgANE1ptjLjWcVs5TGJsIQtmZrJaWdfpmKsL+Pp3EyuRUcEAMlSVwB3zn232QcCoDmYrUSjjY30a3puaeX/lCQtFnwdGOlv4VEBQHLUWwMOIKGmZnLqy3gVY8xWYjuOHh5XwXfK5YtyLrws+E5HD7M1BADUgwAOdLixkX4tFvyKMWYrsR1HDo7q2F03aXSoV7OLBY0O9erYXTdxRgUA6lRvDTiAhDp6eFz3nzyjXL6ovoynxYLPbCW27cjB0aYHbhYPA+hUzIADHY7ZSiQRrQ4BdDJmwIEuEMdsJdBILB4G0MmYAQcAtB0WDwPoZARwAEDbYfEwgE5GAAcAtB1aHQLoZARwAEDbOXJwVHfful8X5pb1wmtzujC3rLtv3U/9N4COQAAHALSdUxPTOvHsee0d6tFb9w1p71CPTjx7ni4oADoCARwA0HbKu6CYhZcZz3T89GSrDw0Ato0ADgBoO3RBAdDJCOAAgLZDFxQAnYwA3gFOTUzr3gef0B0PPKp7H3yCGkkAiUcXFACdjACecKcmpvWzJ57T1783o9dmF/X1783oZ088RwgHkGhHDo7q2F03aXSoV7OLBY0O9erYXTfRBQVAR2Ar+oR74MsTmskV5KVMaS8l56SZXEEPfHmCFyoAiXbk4Ch/xwB0JAJ4wk2+saCUSSkzSZKZ5Mxp8o2FFh8ZAAAAaqEEBQAAAIgRATzhbtjdr8BJQeDknFMQOAUuHAcAAED7IYAn3Cd/+K3a2Z+RpSTfOVlK2tmf0Sd/+K2tPjQAAADUQABPuCMHR/XLd9+id46NaN9wr945NqJfvvsWFi4BAAC0KRZhdgA6BQAAACQHM+AAAABAjAjgAAAAQIwI4AAAAECMmhbAzWzMzP7UzF4wszNmdl80vsvMvmJmL0aXI2W3+Xkze8nMvm1mP1Q2fpuZfTP63mfNwl1nzKzHzL4QjX/NzK5v1v0BAAAAGqGZM+BFSf+rc+6tkt4t6WNm9jZJn5T0VefcjZK+Gn2t6Hv3SLpJ0p2Sfs3MvOhnfU7SRyXdGH3cGY1/WNKMc+7Nkj4t6YEm3h8AAABg25oWwJ1zrzrnno0+n5P0gqT9kj4g6eHoag9L+mD0+QckPeKcW3bOnZX0kqTbzexaScPOucedc07Sb1XdpvSzTkh6X2l2HAAAAGhHsdSAR6Uh75T0NUnXOOdelcKQLqnUP2+/pKmym52LxvZHn1ePV9zGOVeUNCtpd1PuBAAAANAATe8DbmaDkv6DpH/knLtylQnqWt9wVxm/2m2qj+GjCktYdN111210yADQNKcmpnX89KSmZnIaG+nX0cPj9PEHgC7T1BlwM8soDN//zjn3H6Ph16OyEkWX09H4OUljZTc/IOmVaPxAjfGK25hZWtIOSZeqj8M596Bz7pBz7tDevXsbcdcAYNNOTUzr/pNnND23pJ19GU3PLen+k2d0amJ64xsDADpGM7ugmKTfkPSCc+5Xyr51UtKHos8/JOkPysbviTqb3KBwseWTUZnKnJm9O/qZP1V1m9LPulvSo1GdOAC0neOnJ5XxTP3ZtMzCy4xnOn56stWHBgCIUTNLUH5A0k9K+qaZfSMa+6eSPiXpi2b2YUnfk/RjkuScO2NmX5T0LYUdVD7mnPOj2/20pM9L6pP0pehDCgP+b5vZSwpnvu9p4v0BgG2ZmslpZ1+mYqwv4+ncTK5FRwQAaIWmBXDn3GOqXaMtSe9b5zb/UtK/rDH+tKS31xhfUhTgAaDdjY30a3puSf3Z1T+9iwVfB0b6W3hUAIC4sRMmAMTk6OFxFXynXL4o58LLgu909PB4qw8NABAjAjgAxOTIwVEdu+smjQ71anaxoNGhXh276ya6oABAl2l6G0IAwKojB0ebHrhpdQgA7Y0ZcADoILQ6BID2xww4AJRJ+uxxeatDSerPppXLF3X89GSi7oeU/McCANbDDDgARDph9nhqJqe+jFcxlsRWh53wWADAegjgABDphI1yxkb6tVjwK8aS2OqwEx4LAFgPARwAIp0we9wprQ6nZnIq+oEmL8xr4rUrmrwwr6IfJOqxAID1EMABINIJs8ed0upwMOvp/OUlFX0nz0xF3+n85SUNZL2NbwwAbY5FmAAQOXp4XPefPKNcvqi+jKfFgp/I2eM4Wh02m1m0kbJpdU9lVzYOAAlGAG9DrPwHWuPIwVHdfe6yHnrsrBbyvgaynj5yxw0Nff7x/K7P3HJR+3f26o35vPJ+oKyX0r7hHs0vF1t9aACwbQTwNlNa+Z/xrGLl/zGJF2l0vWaH11MT0zrx7HntHerRddEM+Ilnz+vmAzsb8nt4ftdvbKRf03NLGt87uDKWyxc1OtTbwqMCgMagBrzNsPIfqC2OtnTNfv7x/K5fpywmBYBaCOBtphO6MADNEEd4bfbzj+d3/Y4cHNXdt+7XhbllvfDanC7MLevuW/c3/EzBqYlp3fvgE7rjgUd174NP0GccQCwI4G2mE7owAM0QR3ht9vOP53f9ysuB3rpvSHuHenTi2fMNDchs9gOgVQjgMdjMDAunXYHa4givzX7+8fyuXxxnPCgJAtAqBPAm2+wMS6f08AUaLY7w2uznH8/v+sVxxoOSIACt0nVdUJyTgsAplYqnl2z5DIsk9WfTyuWLOn56ct0X3U7o4Qs02pGDozqm8Dl1bianA01q4dfs5x/P7/qUuqCU/nZKjT/jEcfvAIBaui6AF/xAL19cUMZLKZtOKVu6TKeU8Rp/QmBqJqedfZmKMWZYELdO6T1NeO0eRw+P62dPPKfzM4sqBoHSqZSGetP6hR95W0N/RydsvAQgebougJcU/EAFP9BC2ZiZKeOZMl4q+gg/z3qpLc+YM8OCVqP3NJLKSZJFu19a9HUDxXVWBQCqdW0Ar8U5p3zRKV8M1nwv46XUk06pJ+2pJxN+Xs+WyMywoNW2UgYFtNrx05Pa0ZfRtTv6Vsaa8f+WsyoAWoEAXqfSjHlpG+TSbHlP2lNvJgzm2fTaEhZmWNBqlEEhiaZmcvJMmrwwv7IV/Z7BLP9vAXQEAvgWlc+Wzy2FYymzaHbci2bLU0p7KWZY0FKUQSGJhnrSenF6Xl7K5KVMxcDp/OUl3Tg6uPGNAaDN0YawgQLntJj3dTmX1+tXlvS9Szl972JOr80uaWYhr1y+qKK/trwFaCZ6TyOJnIsqvl3ZR/k4ACQYM+BNVgwCFfOBcvnVsXQqpUx6dbFnNlrwmW5CFxaAMqj20ikdaZptPu9r/85evTGfXylB2TfYo4W8v/GNAaDNEcBj8OTkJT3y1JRevbKoa4f7dM+7xnT7+C4tqvKFJGWmTDqlTCoK5+kwmGe9+hZ8AuuhDKo90JGmfqXSqfG9qyUnuXxRo0O9LTwqAGgMplyb7MnJS/rMoy/q4sKyhnvTuriwrM88+qKenLy05rqBc1ou+JpfLmoml9f0lSWdn1nU2TcWNHUpLGW5tJDX/HJRy0WfU7FAwrD1ef0onQLQyZgBb7JHnppS0fd1Oeer4AfKeCkN9nh65Kkp3T6+q+6fU+rCUl7KUurEUtpMqLx/OTPmQPuhI039KJ2qH2VNQPIQwJvsu5cWNLdYkKVMqWgl/8xCQcVgYeMbb6Cib/ny6riZKZ0y9ZRCOaUsQFvopI40cYQ+Sqc2RlkTkEwE8CbLFwPJwvpuSTKTfKu92U+jOOdU8J0KNTqurCz8TKcqdv30trjTJxCnpM/0dcrGXIS+9sFGW0AyEcCbLOOZlotSEDiZSaWy7azXmsBbq5RFCt8gpKNAnk6Fi0GzUYeWFOEcbeDUxLQ+ceI5zS8X5QdOb8wv6xMnntMv331LYoJGp5RVEPraB2VNQDIRwJvs+t2DOjezoIX8ag34QDatAyMDrT60CkF5OUuV8lnzbHq1bSLlLIjTp770gi7nCvLM5JnJBdLlXEGf+tILiQx9SV5CzS6V7aOTypqAbkIXlCa7511jyqQ97Rns0Q17BrRnsEeZtKd73jXW6kOrWzhjXtTlqDPLuZmcXr6Y07mZnKbnljSbK7DJEJru7MWcgsBp2Q+0VAy07AcKAqezF5MT+kqlG9NzSxWlG6cmplt9aJsy1JPW+ctLKgauYpfKwR7mdOJ29PC4riwW9OLrc3rh1Vm9+PqcriwWElfWBHQb/lo22e3ju3SfbtQjT03ptSuL2lfWBzzJyheAzqu4Mu5FPczLZ8spY0EjFPxA1W/xgmg8KTqldKNil8qyS1qjtoaTJAsX4MuSfXYF6BYE8BjcPr4r8YG7Xn7g5Ae+lgqVmwxVl7HQlQWbFayTKtYbb0edUq/LLpXt4/jpSe3oy+jaHX0rY0l8Uwd0GwI4YlFPH/PyXuZAJ+qUel12qWwfnfKmDug2JB20TFjGEmh+uahLC3m9NrukqUs5vfzGgs5fXtSFuWXN5gpazPvykzTNiaZYr1Vmklpodsrujp1yPzrB2Ei/FqvOOCbxTR3QbQjgaDuBc1ou+JpbKujiwrJenV3Udy8u6HsXc3ptdkmXFvKaWypouehTc9pF7rp536bG29GRg6O6+9b9ujC3rBdem9OFuWXdfev+xJUKHDk4qmN33aTRoV7NLhY0OtSrY3fdlLj70Ql4MwQkEyUoSIxiEKiY37iMJeullKaMpeN8+p5bJT2rk8+/Jj/qvnHXzfui8WQ4NTGtE8+e196hHl0XbcRz4tnzuvnAzsSGV94Ct1an9JYHuo112wzize+41f3+V063+jDQZCmzlZrybDqlnjTdWNB69z74xJoa8FLt9O989N0tPLLNKd8Js3xHT2bBAaCSmT3jnDtUPc4MODpS4JyWCmu7saRTZTPldGNBzDplA5tOaacIAK1CAEdXoYwFrTSY9fTi9LwCF5ZuFH1f52YWdePo4Ia3bSd03kAznJqY1vHTk5qayWmMUhp0OAI4ul75pkJaXh2njKX9JP0FeiHvy3eSKfyQJN8pcf2zO6WdItpHeVlT+S6xx6REPceBehHAgXXUU8aS8WxlxpwylubqhBfo6bllpVPh5kHOSWaSZ+H41bTbG4+jh8d1/8kzyuWLFTXgdN7AVlHWhG5DAAc2ab0ylnTKwllyNhVqik55gU6ZVfy/8IPgqtdvxzcedN5Ao1HWhG5DAAcawDmngu9U8NeWsWSiGfJSGUvGSyVq85h20Qkv0Dfs7tdLFxZkgZNZOAseOOnNe9Yv3WjXNx5HDo4SuNEwlDWh2xDAgSYqbSq0XKOMJe2Z0tHiz7SXUjplhPOr6IQX6E/+8Fv1iRPPaX65uNLLfGdPRp/84beue5tOeOOxVe1WeoPmoawJ3YYADrRAMQhUDCQV1n4vZSYvFYbzdCoM5p4XlrikU2HdeTfWm3fCC/SRg6P65btv2VTpRie88diKdiy9QfNQ1oRuw0Y8QAKFAT2lTHSZ9kyZKJx3cvvE0oxoN71An5qY1s+eeE5zS0UVg0DpVEpDvWn90t23dPR975RNiwB0NzbiATqIHzj5ga9avTNKdeel3ualxaDZdPKDebfWHTtJsnCxr6w7tn/v5tIbAJ2v6wL42YsL+sdf+IZ29GW0oy+j4eiy1kdvhtZySJ7VuvPK8fINhzJeamVxaJJKWrqxJvj46Unt6Mvo2h19K2PtsAiz2bq19AZAd+i6AJ4vBnru3Gxd1814tiaUlwL7cG9pLF3x/Z6M1+R7AGxNxYZDVTIrM+XR7HkblrN0a01wt84Ed0LNPwCsp+sC+OhQj37y3ddpdrGo2cWCZhcLurJY0OXoshisntwt+E5vzOf1xnz+Kj+xUm86te6s+up4umKMXtFotYIfhC0Uq6yUs0QdWspLW+KeNW/XdnzN1q0zwSzKA9DJui6Aj/Rn9Xd+4Iaa33POKZf3V4L57GJBV5aKms3lw8uy8VJwn10sqCyza6kYaGluecOd7coNZL2aoX04CurV3xvuzdCqDrFYKWepGq+18VCpnWKzMBPcfTPB3VrzD6DzdV0Avxoz00BPWgM9aX3fzr6Nb6AwoCwsV4fz6Osawf3KYkFzS8WKRVQLeV8LeV+vzi7VfaxDvemqUpjVmfXhGrPuQ71ppRJS54v2t97GQ+XdWUqfp6OWiplUSqltvHFkJpiZYADoFATwbUqZaag3o6HejA6M1HcbP3CarzGjvjrrvnZsYblyI5e5paLmloqSFus8TmmorG79aotPS98byHqJWZyH9nC17ixS+HxJe2E5S7oU1r36+psfPTyuT5x4TucvL65sYjPYk9Yv/MjbmnNn2ggzwQCQDM45ObdxtyoCeAt4KdOO/ox29Gc2vnKk4Ae6UiqJqRXcc2Fwv1JW275Ytvti4LQyvqnjXCl7Sa8J6HSOwWYFV1kIKoWLQUsBPZNKKZNe3YxIkkySXPgHTs6UxP9p3djJBQC2ozzUOueiy+h7cqufu/BrSSvlwRXXd6vXX+9naeV7a6+r8uuu8/1yAz3rx2wCeEJkvJR2D/Zo92BP3bfJF4OKWvWas+1lJTOXF/Mq+Kv/gfzA6dJCXpcW6l+EerXOMTVn23vTdI7BinAxqLQof833fvWrL6ov62n3YE8YvE1ayvv6tVN/ofe8ebe8aAfRdn4D2K2dXAC0v/VCbq2AW/q6+s+tyVa+H5R+RhDeJogmTyouo/EgcBU/f/Xz2sG2ExDAO1g2ndLeoR7tHaovtDvntBSF9tKM+nqhvXymfdudYzKpqlp2OsdgrVdnFzXcm175Qy1Jac/0vUsLOj+zWorlRfXnKx8WzqJ7nq2E9NJH3Lq1kwuA7QkCtxJGg1K4dZLvXPh5sBp4S99z1V9rNWRLq2G3FIgRLwI4VpiZ+jKe+jKe9g331nWbmp1jai1IXSyVyNToHFMItFTYXueY4Rohnc4xneXa4T5dXFhWX9kZk6VCoH3DlQumwzr0jV9MzMJAnkppTVhPpbRy6Vnj+qF3aycXoNOVB2M/WJ0BDqpnfGvMAJfCcfUsMMG4sxHAsS2N6BxzObda216rXKZU+16u0Z1jaoX2QTrHtJV73jWmzzz6ohYLvnozKS0VAhUDp3veNbaln+ecU9E5qXY5+hrVs+qlz1MpU8pMKQsXmYa7xa9+Xd75pVs7uQDtIgjKQrHKg/JqKFZVAC7NIstpJWSXZpXLbwtsBgEcsdtq55i5pVIgL65snFTdOeZyWelMIzrHlML6MJ1jWu728V26Tzfqkaem9NqVRe0b7tM97xrT7eO7Yvn99c6s1+JFIf1/vHW/fuUr31HRD9Sb8bRcDFT0nX7qPW/SUsEPu8SkohDP/yMWrLaZ8vBaEr7hDP+/lv+PraeOuDzglhbIhbctu+4Gx1Q+k1wKyBU/m5CMNmXd9h/y5nfc6n7/K6dj/Z1PTl7SI09N6dUri7o25tDQyTb6dy34geaqusaUB/QrNcaXCnVOh66jvHNMebvH9Wrc6RzTfUr/b+t9E1H6vxGGnNVZ9nDWPZxpt+oZ+LLrmKpvs3Zmvh2VL1gt34Do2F03xRbCq18fy1uLlX9vTReF8q+v1nXhKt8rBcrSzy//mc3gyqJu6fcwywtsz0BPWvt29D3jnDtU/T0CeJM9OXlJn3n0RaVTVnHa/L733kgI34Zm/buu1zmmfMb9ap1jtmKznWN29GWUTbMIFdtXCvFhaA/fQJbKZ8rfFJaHs5VPrXRhK50QqmdApdqhsfr61W8yJOnvPvy0Lswvr5TrODkt5n3tGezR8Z+8rWLWU1qd+az+naWSoPLfWd19oaJjQ5e9JgJonqsFcEpQmuyRp6aUTtnKwrHSTM4jT00RwLehWf+u2+kcsya0r5ltX52NLy9l2GrnmOpFpnSOwWaValnb0fdmchruTavor56VynimczO5Te1ngOTgbDG6CQG8yV69ErZOK9ebSem1K/XVIaO2dvl3bUbnmMtlbR5XZt2XaneOef3K1jvHbNTucYjOMWiherveoDOUn9Uc7k3r4sKyPvPoi7pPnC1GZyKANxkvIs2R5H/XrXaOmVsqVi48XSxodqmo2Vx+zQ6pjegcYwo7x9QK7cN9Ge2o8b1md47phBmy3/6vL+uLz5zTYsFXX8bTj992QD/5V65v9WG1nUZ3vUF742wxug0BvMl4EWmObvt3TdlqnXi997DUOeZyVQnM2tn21dC+kF/tHOMkXVkq6spSUedm6u8cM9S7OpveyM4xnTBD9tv/9WU9/MR3lTLJS0nLRV8PP/FdSUpcCG/2m6FWd71BvNrlrCYQFwJ4k/Ei0hz8u27MS5l29me1sz9b920KfqArZcG81sz65apdUss7xwROK+ObOc5anWOqP37zz89Kzqkn7UkumTNkX3zmXBS+o3p8kxQE+uIz5xIVwON+M9SeVepopCSf1QS2ggAeI15EGuv28V2JCV5JkfFS2j3Yo92D9S1ClaTlgr8S1C+vUw5TPdte3jnGD5wuLeR1aaHeRajLMmllE5zXryzpX/zhtxLROWax4Kt6LaxZOJ4kcZQLdMIZD9Sv285qAgTwJuNFBJ2uJ+Npb8bbXOeYQlAZ0pcqO8hUzrYX13SOcZKKQbTrhqQ//faFDX9vdeeYjdo9DvemG7YFfUlfxtNy0a/o1+ei2fwkiaNcgJrg7sJZTXQbAniT8SICVDIz9WU99WU97dtRf+eYP/vOG/o3p16SmSmdCk9PFwKn264b0UBPujK4LxY014adY378tgNhzXcQyExR/+lwPEniKBegJrj7cFYT3YQA3mS8iADbZ2Y6/P179d2LC3V3EAmc03xZOUw4y167a0zpY67JnWP2DPfqr71lr/78Ly5quRioL5NKZBeUe941pgf+eEKvX1mSHzh5qbCzz8eOvLlhv4Oa4Pp1QncgoNsQwJuMFxGgMZ6cvKQvf+t17RrIrtSIfvlbr+v79w3XDBspMw1HwXeznWNWQ3kpqOdXerNXl8lsp3NMrhDot772Pf3+c6/WKIlJr1sq019n55imi3bQVBMOhZrg+lDmCCQTAbzJeBEBGuORp6ZUKPq6nPdV8ANlvJQGsl5Dy7m20zlmtkbXmNlc7fr26s4xl6OymXqlyzrHbBTaS5e96VTDQvsjT01psCetvWWLdRtdWkdNcH0ocwSSiQDeZLyIAI3x8sV5zS8XZTKlzFT0nS4vFuQH8y09ru12jlnzsU5oL+8cUwycLi7kdbHuzjFSNp3Sjk32aF+vc0xcpXXUBG+MMkcgmQjgMeBFBNi+gu8UBJKTk1NY9WCS8n7yGnxup3NMrXBeGdxXg31555h8MdCF+WVdmK9/EWpfxqvZo91kemM+r960Jy8Vnjko+E7XDNW3qBaNQ5kjkEwEcACJEZR97tQ9vfW32jlmIe+vO6NeK7RXd45ZLPhaLPh67cp6i1Ary2ZemV3S3/jXj1W1c9xe5xhcHWWOQDIRwAEkhqkydBPb1mdmGuxJa7Anrf2qbzbUD5zml4srNe3lGylVL0qdvrKsmVxBvqt8G7Sw7Gth2dcrlxvTOabUk718fLA3rVQ7LEJtA5Q5AslEAAeQCM4Fa2a8nSS5oMa1sRVe2eLOzXSOWZlhzxU0u7ROaC+bic9to3OMJKVMKzPriesc0wSUOQLJQwAHkAhmKZnC4FaqAQ+/0fot5ruZlzKN9Gc10p+Vdtd3m3wxqGr3GAb1K1UlMq/OLmp6brliAarU+M4x1WG9GZ1jAKAcARxAImTTKS0XfFnKVnaRdIFbt1NHJ+m0jVay6Y07x5T6W+8b7lVvJqVc3lfBd/qJQ2Ma29VXO7QvVZbOtFPnGAAoRwBHQ5hZ2JXCJFMYkMIPU6psTCqfuQzHFd2u4nvRzyyNWdl1Vzb/KLt+6feX/6xSaWr53JlzbuXrUuWCkwvDnLR6rKnS7109/vKfvfb+l31e47r1zKFVHmf5uKsYW73vqz91vd9V+jd0zilwq/dVCneKLN3v0nVKx7H2d1X+vOrHZOV6ZcdWftvS7Uq/M4h+QVA6ruhxcdHKyvLHpHTs43sGNTWzoLml4kof8KH+jPbv7Fc6lYp+Vucty+zWjVaq+1sPZNNaLPj6sxff0K/8xC0b3r68c0z5bqiXqxalXqmobW9e55j1wvtwb1ppj9AOdBsC+FWUh43w63XCla29fkUQjQbLv77aac3qIFkePCvHa//e8tvUPM4NwuRGSse/cj85RZsA7fEYeds4jn/43jfr/pNnNNSbWdlspOA73fe+G3Xd7v6V6wVBGMSdyt5kOK0E9MCF1ylG1/OD1Y92DPDdutHKdvtbb6tzzJrFp5XBvTy0b75zzFoDPV6NYL7+bPtgb5rOMUDCdV0Az6RTGtsVvliXB+GKkE2gBNrOkYOjuvvcZT302Fkt5H0NZD195I4bdOTgaMX1UilTahtB37nK2ffyIF8K7EEQfe6cgiC8LA/yjdStG620or91ReeYnfX9nsA5zVdtqlQK75cXC7pSNrteCvBzS8WKn7HVzjG1ymBqtXrc0ZfRQA+dY4B20nUB3BTuXAcgWU5NTOvEs+e1d6hH10WzwCeePa+bD+xcE8K3w8zKzg5tLbCUh/FiEESXbvXSD0O7q2PG/drhPp2/vKD5ZX+l9Gawx9P+nQNbOrakSEp/65TZSvDdTOeY6k2VrqyZbS+ujF9ZLGhhnc4xU5voHLNeKcx6ob0vE2/nmE5b6wBcTdcFcADJdPz0pDKeqT8b/tnqz6aVyxd1/PRkQwN4I3gpKysR8Na9XvnsefnsevnYu67fqef//HK4FsGkgh/o4kKgH/1LO+K5My3Syf2tvZRp10BWuwaydd+m4AdVQb1YY7a9MtAvFVdbdAZOmskVNJOrv3NMxrPKwL7S+nH9do+9mfX/v19Nt651QPcigANd4NTEtI6fntTUTE5jI/06eni87ULrRqZmctrZl6kY68t4OjeTa9ERbV+pXOZqmeW/vTKn0aEezS0VlfcDZT3TUG9a33p1Tvt29CpwioL72lKYdq1rrxf9rVdlvJT2DPZoz1U6x1RbKvi6UhHOi2vr26v6tpd3jin4Thfn87o4X3/nmJ50ap2Z9rLQXtXDPZtOde1aB3QvAjjQ4U5NTOsTJ57T/HJRfuD0xvyyPnHiOf3y3bckKoSPjfRrem5pZQZcChe8HRjpv8qtkm9qJqc9gz3aO7S6kNA5p1dmFyv+Ldbj3Gr5S8EPosvV8pii374hnZKE7enNeOrNeBodrn8RaqlzzOXFfEX9+tVm28uXPSwXA03PLWt6bnOdY5aLvjJeKjx7ZBadRZJmFwv6L9+5QOcYdBwCONDhPvWlF3Q5Vwhf1MzkAulyrqBPfemFRAXwo4fHdf/JM8rlixVdUI4eHm/1oTXVdt94mJkyXjjLvl55QHk4L/pOhSiYF/xABb81O41SkhC/LXeOWfZX69ergvuVsln2Um37lcVCRdvVxUJY375crP1/7Z//p2+tGaNzDJKOAA50uLMXc0pZWO4ghXXELnA6ezFZpRtHDo7qmMJa8HMzOR1IaCnNZsXxxiOcbawdzp0LZ8wLfhjK836wMnPezBIXShKSwcw02JvWYG9a+0fq6xzjB07zy6vlMJdzBT03dVn/+YXXV7a5Lb0hHO7NaLkYaH65cZ1j1tv5lM4xiBMBHEBiHDk42vGBu1qr33iYmbJpW3eHx6Csw4vvnIp+2K2k6G+vxKVb2y92Ay9lKyG35I4b9+hd1+8qW3Q7WFFyVPSDis4w1aUwV5YqZ90v5worM+tSZecYdVDnGCQXAbwNdcKCObSP8T0DmnhtTnl/9cXIJB3cN9i6g8KmtPMbj1TKlN3g1H4QhGUtBd+pUAzLWvJ++PV6rRhb0QccrXW1RbdpL7XpzjH5YlCz1WN1m8fyOvflBnaOqSyJaXznGCQbAbzNnJqY1v0nzyjjmXb2ZTQ9t6T7T57RMaltX4DR3nb2pVUdcVw0DsQhlTL1pDz1pCVVNfEo1ZkXii4K5eFHUvqAo31l01vvHLMayotratlnqz5i6RxTVeu+3hkpJAevwG0mSb2OkQxPfvfypsbbGWeHOk/GS4Wbo1VNbB4Y6deugax+/bFJnZ9Z1L4dvbr3XdfptutHWnOg6Apb6RyzWPDXdIyp1T2m/GO7nWP6s17ZLHu6ZplMdXBnEWp7IYC3mU7sdYzWKm2NXl6W6JwavmV6s3F2qLt4KdMPvn2ffvDt+yrGnXMr5SvFslKWQjFo23aKqE8S206ahRNm/dn0pjrHzC8X17Z5LJXL5Mpn21dn4Mv/d+fyvnJ5X6/O1rcIVZIGe9IrM+vrBfby0D7YQ+eYZiKAt5mxkX69fHFeVxZLm26kNNyX1vW7qdfF1ngpqxm2k/aHlbNDkMLA05OOylmqFKMwnveDlcWgpW4aSXvD2W26qe2kmWmoN6Oh3szmO8fkChV17bVn28PQXt05Zn65qPnlos5fru84U1Ye2mvPqld/DPSwCLVeBPA2857xXXry5Uth2ziT8n6g6bm87n1XZ/0B6mTtViZx18379HvfeFXVk4N33byv9g3aFGeHsJG0l1Lak/q0dlFbaSFo2J2lciMiP+rkst6CUDQfbSevrlbnmI2s6Ryzpoa9qNlcXrNRb/bZxYJy+dXF+oFb7RwzVWfnGC96A7WZ0N6bSXVlaCeAt5nHJy9p72C2bNvplIZ603p88pI+3uqDazPtFnRLx9RuZRKfvudWSc/q5POvyQ+cvJTprpv3RePJ0a07YaIxKhaCrqO0IVGhrMSlEFDeEgfaTjbetjvHrJltLyuZib53ebGgfFnnGD9w2+ocs6Mvox29pdDe2Z1jCOBtZr1tp5nlq9SOQVdq3zKJD7zjgF67kl95s/KBdxxo2bFsVbfuhIn4lDYkqvXiXgrneT+IWilGmxMxc94QtJ1sD1vtHFNZBlOjxePSam37bK6gYkDnGAJ4m2GWrz7tGnTbsUyiXd+sbFarN6RBd1svnJfvFFre37wY1Z6jPrSdTK5S55hrNtk5pqJ+PVeoKIWp/t6Vpe13junLeBVBfaPOMcO9aaW95oV2AnibYZavPu0YdKX2fAPVrm9WtqKdN6RBd7raTqF+4JQvBuFHFM7zxYAZ8xpuH9+l+3Rj2U6YyeiCgs0r7xxz7Y76znAEzmlhubhmlr20G2qt4D63VKzoHLNY8LVY8PXalfboHEMAbzPM8tWnHYOu1J5voNr1zQqwkXZc57EZXsrUl/XUl62cNS9EQTwf7Qq6HF12u6vthInulirrHHOgzq0A/MBpfukq/dlrdJNZWPYrfsZWOscM9a7Osu8aWL+UhwDehpjl21g7Bl2pPd9AjY306+wb82sW9t6wh9aWaF+dUjpVS2nzofLX5lJ/84oZ82J9ZSxJ7J8NNJuXMu3oz2hH/zY6x6wJ7eWz8LU7x5S+vxECOBKpHYNu+bG1w3GU1GpteWE+r791Oy/QrZD0Wd24dFLpVD1W+5uvP1teCuXls+Xd1D8baLZtd46pCu4Ly75+eb3f1ZhDXsvMflPSj0qads69PRrbJekLkq6X9LKkH3fOzUTf+3lJH5bkS/q4c+6Po/HbJH1eUp+kP5J0n3POmVmPpN+SdJuki5J+wjn3crPuD9pPuwXddvX45CWNDmXXbO5Ea8v4dfKsbqNROhWqNVseBOFs+XIx0O8+c04Zz8LFoY7+2UDcrtY5ZqAnvW4Ab2ZPls9LurNq7JOSvuqcu1HSV6OvZWZvk3SPpJui2/yamZWmAT4n6aOSbow+Sj/zw5JmnHNvlvRpSQ807Z7E7NTEtO598And8cCjuvfBJ3RqYrrVh4QEm5rJKVu1kjvrpbouyLSD8lnd0kKkjGc6fnqy1YfWdsZG+nVuJqczr8zqm+dndeaV2ZWzXd0ulQoD946+jF6fW9Jwb0Y9aU/ZdEqZdEqDPWlNzy1pqDcT/R/rzo1OgHbWtBlw59xpM7u+avgDko5Enz8s6ZSkn4vGH3HOLUs6a2YvSbrdzF6WNOyce1ySzOy3JH1Q0pei2/yz6GedkPSvzcxcwpeXM0OGRhvMenrpwoI8M3lmKvpO5y8v6c17B1p9aInSiNKRqZmcPJMmL8yvnI3YM5jlzVAN+4azenxydSvtwEmXF4vaN1z/qeFuUL4g3cxkkpZ8X2/aPaC9Q5UzcsWob3kxiDYZiton5tloCIhd3F3Jr3HOvSpJ0WXp1Wu/pKmy652LxvZHn1ePV9zGOVeUNCtpd9OOPCbMkKHRVma+rOyjfBwbKr0xnp5bqnhjvNmzU0M9aZ2/vKRitCNpMQjfDA1ebXvGLvXH36r9b7veeLc6enhcBd8ply/KufByvQXpaS+l3oynwZ60dvZntXeoR9+3s0/X7xnQ2K5+XTPcq5H+rAZ6wllzAM3TLn/1ayUBd5Xxq91m7Q83+6jCMhZdd911Wzm+2FD3iEabWy5q/85evTGfX5l13Tfco/nl4sY3hqTGLQhcOUFX+kvlqsaxotRZoPx9onOq6DiAxi1Ir1VrXupjvlz0o0vaJQKNEncAf93MrnXOvWpm10oqTWWck1S+3dUBSa9E4wdqjJff5pyZpSXtkHSp1i91zj0o6UFJOnToUFu/0rVrf2sk19hIv16+OF8xlvcDXb+bNoT1atQb4/m8v/bN0GCPFgiVa5iFgbvWOCo1a0F6rT7mhHKgMeI+x3RS0oeizz8k6Q/Kxu8xsx4zu0HhYssnozKVOTN7t4Xny3+q6jaln3W3pEeTXv8tbe50IlCP94zv0vRcGPhKbQin5/J6Dx0S6jY20q/FQmVI3sob47GRfuWrwkreD3iDXcP+4XAq1rnVj/JxtEYplO/sz2p0uFdju/p1/e4Bfd/OPu0e7NFQb0bZNIs+0R6enLykn/nCc7r315/Qz3zhOT05WXOetiWaFsDN7HckPS7p+83snJl9WNKnJP11M3tR0l+PvpZz7oykL0r6lqQvS/qYc670avfTkh6S9JKkv1C4AFOSfkPS7mjB5s8o6qiSdEcOjurYXTdpdKhXs4sFjQ716thdN7EAswa6xdTn8clL2juYVdZLKXBhB5S9g1k93kZ/iNpdo94Y82aofr/4N2/WUI+n0q7OKZOGejz94t+8ubUHhjXKu7LsHerRgZF+Xb+7X/tH+rRnKAzlPRmPUI5YlXrkX1xYruiR3y4h3Dpg0nhTDh065J5++ulWHwa2qbxbTPlOmLxZWeuOBx7Vzr5MxYufc06ziwX92c+9t4VHliylLijbqbO998En1t2V9Hc++u4mHXlyNeLfHO2lfEOh0kcxoIQFjfczX3hOFxeW1ZdZLaFaLPjaPdCjX/mJW2I5hoGetPbt6HvGOXeo+nvtsggT2JRu2yVvO1hX0FjbmbKYmslpz2CP9g71rv4851hkvY7nz13WmVdmtZD3NbtY0PPnLvP8TrhsOqVsOiXVWOyZLwZa9v1ot0/H4mRsy6tXFuWZNDWzrIIfKOOlNNKf0WtXFlt9aJII4EgousXU7+jhcd33ha/ryuLCSmuh4b60fuFH3tbqQ0uMRvXn581Q/T77J9/RZx59SSmT0qnw3+kzj74kSfr4+9/S4qNDI1Uu9gz/rjvnKmfKo8/9gFCO+gxk0/ruxQWlUqZU1Pb19SvLetPu9tgDg0afSKRGLYrrBs+fu6wri5UtB68sFvX8ucutOaAEalR/fhZZ1++hx85G4TullKWiy3Acnc/M1JP2NNSb0e7BHl27o09v2j2gN+0e0LU7+rR7oEeDvWkWfGJ95W1fSx/l4y1GAEciEWTq99BjZ5X2wkVSfRlPvRlPac8IMpswNZOrqCOUtnbGhUXW9VvI+ysLMEtSJlo21tBNC9JLs+U7+jMaHeqtWPC5d6hHO/oy6st68qr/86DrLBR8XTPco7RnCpxT2jNdM9yjXKE9/oZQgtKGGrHldadr1OYT3WAh7ytd9VabILM5zSgdaY85mPY1kA0XV5fnqMCF41jVqPKoJCvNlvekK/9vFP1gTRkLteXd49rhPl1cWNZY2d/pxYKv0YH2aGVKAG8z/DGtX7M2n+g0A1lPC/minPPlXLiRiVlYH5c0n/2T7+ihx85qIe9rIOvpI3fcEEs98NHD47r/5Bnl8sWKrjubPePC87t+H7njBn3m0ZdUDMKWjYELPz5yxw2tPrS2cvz0pPJFXxfnKzvrsCBdSnsppb2U+rOrY9W15QXf0YmlQ93zrjF95tEXtVjw1ZtJaakQqBg43fOusY1vHANKUNpMo2pNgZL3HdwrPwjDi1N46QfheJKUFuUtFvyKRXmf/ZPvNP13N6p0hOd3/T7+/rfovve+WX0ZT8UgLPm5771vZgFmle+8fkUXF/Iq+k6emYq+08WFvF58/UqrD60tVdeW79vRq+t291Nb3oFuH9+l+957o3YP9GhuqajdAz2677036vY22XcheVNgHY7uHmi0F16dk6my5MGi8SQpX5QnhWU0xSDQQ4+djSWUNeKMC8/vzfn4+99C4N5AwQ+f2amoVsdMCgKnvE+ZxWbQiaUz3T6+q20CdzUCeJuhTRka7ezFnDKeyUutnvDyg0BnLyYr9HVCLTvPbzRaNp3SYt5X4JzMogYPLhzH9qxXW77St9wvqy0vBgqoLccmEMDbTKNqTYFyfuBUDMpqwCWlvWSdXh3IelpYLsqp8n4M9CTnz9hWn9/dujC7W+/3Ztw4OqSXL87ryuJqDfjwQEbX7x5s9aF1rJXZclUG84JfqiuPNhUqhjXHLPpELbxFbjO0KUOjjQ71yHdVNeAuHE+S9x3cW/N+JKmWfSvP79LCzem5pYqFm53cak7q3vu9WUcPjyvjedq3o1fff82Q9u3oVcbzmLRpgYyX0kBPWjv7sxod7tXYrtUWiaPDvRrpz2qgJ62MR/QCM+Btie4eaCS3zur+9cbb1WtX8hrpT2t2sajAheUnO/rSeu1KvtWHtimbfX6XL9yUpP5sWrl8seO7XHTr/d4sWrK2t9UyFkllcx6l+vJSF5by2XN0BwI40OFem6sdUF9fZ7xdTc3ktH9nvw6MrJbOOOcSt4Bxs2UV3bpws1vv91YwaZM8GwXz8haJBZ9g3okI4ECHW2/FfjFhK/nHRvp19o15zS1V9ju+YU9yal230gd8bKR/bY1vX7rja3xZsIputN7Cz7CzTflMOf3Lk45CJACJ8J7xXbown1feDzdmyfuBLszn9Z42bTFVy1b6gL9nfJem5yrv9/Rcsu73Vhw9PK6C75TLF+VceMmCdHSrVMrUm1nbv/z63QP6vp192jPUo+G+jHoyHv3LE4IZcKDDVfcALx9PkscnL2l0KLtmJvjxyUv6eKsPrk5TMzl5Jk1emF+5D3sGs1ctq3h88pKGez3NLhZVKKt9T9L93gpqm4GNpVKm3pSn3szqjLlzTstRF5bloq/lAiUs7YgAjsSiRVl9Uimp1lnKVMLOf03N5LR7oEd7BntXxpJWAz7Uk9aL0/PyUiYvZSoGTucvL+nG0fXLSV6cntP8kq+Ml1rp8zy/5OvF6WRtpLQVz5+7rDOvzGoh72t2saDnz13mOV4DfwtRziycLQ9DebiOIgjcaiAvBlouUL7SagRwJNJWamm7VXGdv7HrjberTqgJdi7sCZwvOjmFZyFSpqv2Cc4XA8mklJXtdGhh/Wcn++yffEefefSlaPfT8LH+zKMvSRK7Y5bhbyHqkarY6TNU9IOVmfJ8FM7Z5TM+CZsDQ5KcmpjWvQ8+oTseeFT3PvhEQ/v3Hj89qXzR12uzS/r263N6bXZJ+aJ/1VpaJFsn1AS/sZAPdyos1f9EM9pvLKzfkSYTbZgURBt6BNELZDZhGylt1kOPnY3Cd0opS0WX4ThWbWVdASBJ6ahv+a6BrPbt6NWbdg/oul39uibqWd6fTSudtFOlCcIMOJqi2bMy33n9iq4sFZWSyTNT0Xe6uJBX0b+y/YNHW+qEmuB8MZDnWcWLWjEIrjqb/ZZrhmt0f8kkqvvLVizkfaXktFxc3fnUs3Acq2jXiEZKe6komK+OlTqw5P1AhWLp0lHCsk0EcDTF8dOTKvi+Ls5XLphr1CYaBT+cBUylyk7LB055n9NnnSzp/Y4znmmxEP5fLdVzS1efzS5tX79vR3pT29cnXY+XUq6wGrZdtAtqf4YZuXKdUJqF9lZroacUtrgtRMF8pV85wbxu/CVDU7w4Pac35vIqBm5lsdkbc/mGLRzLplOSkwLn5OQUuHB/8mya/9LVUutku/XG0TxvuWZYA1lPhSDQUjFQIQg0kPV04zXD695mK9vXdwIvVfvN9Hrj3aoTSrOQTF7UGnG4N6M9gz26dkefrtvdrzftHtC1O/q0e6BHg73paAE5LzjVmAFHUzR74diNo0NrNycZyHT85iRb0ZvxlKtx2r56NiMJkt7t4T3ju/Tky5fkpUwZC2d055b9DXt6J33mfyvm87X/Vqw33q06oTQLncWrWPAZlkeVWiOWNhKijIUAjibZyqn2zejW0/JbsasvXTOA7+pL1tO/E7o9PD55SX2ZlOaXVx+PwR6v43t6b0Xpb0b5xJlzq+NY1Slv0D77J9/RQ4+d1ULe10DW00fuuIGONx2isjXiqlIZSymcd1MZS7JegZEYzV44xqzPJqRSGu5J6cry6h+04Z6ULGGr28u7PUhSfzatXL7YsHUFcTjzyqzml/2KTZDml32deWW2ZcfUrvozXlgD7taOo/PQdrI7hXsirA3mpYWfYSh3KzPnxagbVCcggKMp4pih7pRZn2YbzHp65XLlbMJ8PtD37UxWkOmEbg8rHTzKE7ijs0ctf++vjutXv/qiytsSpywcR+cJ20s6+YFUjLreWNR2kgDefdZb+OmcWwnkpVBemj1PGgI4muLIwVHdfe7ymtOJBOb4vbGQV/XeCsEGvafbUSd0eyj18K6ewAnY/GKNUuiiJKE7zC8XFbjovamtdr2ZXy62+tDQRsxM2bStabhQqjEvdWQpfQRtPFtOAEdTnJqY1olnz2vvUI+ui2bATzx7Xjcf2EkIj9nF+dpBe73xdnX08Lg+ceI5nb+8KD/qrjPYk9Yv/MjbWn1odRvqTa8EilJva0ka7OFPcS0ff/9bCNxdwkqLhco2qZIT3TNQl/VqzAvlgbysXWI7SFYRKBKD3dnax3rv/9t3XmB9Jkku2rrdVVZyJMFH7rhBUjiz56LL8nGgW/VlwmdzaaFtaeKyP5O0ZznaSSba7XNkIKtrhns1tqtf1+8e0Pft7NPuwR4N9WaUTbemTSLTLmiKTqjXRXs5fnpSac/kpUy+Cy/T0Zu6pJxVufnATg1kPS3kfQUurGkeyHq6+cDOVh8a0FJjIwN64bW1+0QcGBlowdGgk9WqL3fOVZavRJ/7TSwPJICjKTqhXrdTRGdya44nyYvTc5pZyCuQJCcVA19L0eLepDh+elKjw70Vz4ukdXKJ0z9+5FmdfP61lZKju27ep0/fc2urDwtN4JxTOmXyzFZa1/quczpeoL2ZmXrSnnrSlSUsRb+yrryRCz4J4GiKUheUXL5In+4WS6Ws5rv4VMK2wswt+/LLy06c5EfjSTE1k5Nn0uSF+ZX2nHsGs4k8M9TsTZH+8SPP6ve+8erK137goq+fJYR3oPm8r/07e/XGfH7lubFvsIcOQWiptJdS2kupP7s6VmqRmPcDLRdWA/pm3yxSA46m6Nbts9tR3zo1lEmrrcz74QuxK/soH0+CoZ60zl9eUjGa0S0GTucvLyVuEWZpU6TpuaWKTZFOTUw37HecfP41Savt6EolmqVxdJaxkX4tV+2UvFwMOGuKtpNKhQs+h3sz2jvUo/07+3TDngEdGOnX6HCvdvZn1Z9NK73BXhvJ+quPRKFPd3s4sLNfE6/PrxnfvzNZL2xeKiXngjB8l/oER+NJsTJDUnr34KrGEyKOTZHWq71sZk0mWuc947v05MuXlLJwbUTeD3RhPq+/dfuuVh8aUJdsOhW2R+xZHbva3/bkvHIB2JL1TuEm7dTu+J4BmZkyXko9mZQyXrhyfXxPchZplU6zpz2T75zSnmn/zt7EPRZTMzn1VbX7avQiay9VuyuGl7DSKdTn8clLGh3KKuulFDgp66U0OpTV45OXWn1owJZdrbsKM+BAh3ttdmlT4+3q5+48qJ898Zzmlooq+oHSqZRG+jP6uTsPtvrQ6lZanDy+d3BlLJcvanSot4VHtXljI/16+eK8riwWV+p1h/vSun734MY3rtPtb9qpx8/O1BxH55mayWn3QI/2DK4+F5xziVwfAdSDGXCgwxWjqcPqWtpiwsoejhwc1S/dfYveed2Irt3Rp3deN6JfuvuWRJU5HT08roLvlMsX5Vx4mcTFye8Z36XpuXCxXKlcYHour/eMN65cYOpS7eC13jiSbWykX4uFyjNBdM5CJyOAAx3OiwL3mlP5CT6Tn6y3Dqs6ZXHy45OXtHewslxg72BjywXOzy5vahzJ1ilvToF6UYICdLgbR4f07dfm5Kxs8aILx5Ok1Hkj41lF541jUqICbCcsTp6ayWnPYI/2DjWvXKCTdnDFxo4cHNUxhQt8z83kdKAJrS2BdkIABzpcRe10ENZOD/WmE1U7LcXTeQP1iWOjrU7ZQAr164Q3p0C9KEEBOlwn1E5L8XTeQH3iKBfYv7P2wtT1xgEgSZgBB7pAJ8wsxTHrivrEUS7wix/8S/r47zyr+byvwIW9oQeznn7xg3+pYb8DAFqFAA4gEY4eHtf9J88oly+qL+NpseCzSKuFmv2m7sjBUX323lupCQbQkShBAZAIndJBBPV7/txlnXllVq/MLunMK7N6/tzlVh8SADQEM+AAEqMTSmlOTUzr+OlJTc3kNMas7ro++yff0WcefUkpk9KpsNzoM4++JEn6+Pvf0uKjA4DtYQYc6AKnJqZ174NP6I4HHtW9Dz6hUxPTrT6krlRqpTg9t1TRSpHHY62HHjsrFzgVfKflYnjpAqeHHjvb6kMDgG0jgAMdjtDXPspbKZqFlxnPdPz0ZKsPre3MLRUVVI0F0TgAJB0lKECH66T+2Ukv35iayWlnX6ZijFaKtbERD4BORgAHOlxcoa/Z4TiunTCbeT9opQgAkChBATre2Ei/Fgt+xVijQ18cZS5xlG80+37EsYFNpxjuTa/Z9dKicQBIOgI40OHiCH1xhOM4dsJs9v2glWL9PnLHDUqlTBnP1JMOL1Mp00fuuKHVhwYA28ZUAtDh4ti1MI4ylzjKN+K4H53QSjEOpVaDDz12Vgt5XwNZTx+54wZaEALoCARwoAs0O/TFEY7j2AmTGu328vH3v4XADaAjUYICYNviKHOJo3yDGm0AQBzMue5q6nTo0CH39NNPt/owgI5T6h7SrDKXuHTK/QAAtJ6ZPeOcO7RmnAAOAAAANN56AZwSFAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRgRwAAAAIEYEcAAAACBGBHAAAAAgRokP4GZ2p5l928xeMrNPtvp4AAAAgKtJdAA3M0/Sv5H0w5LeJuleM3tba48KAAAAWF+iA7ik2yW95JybdM7lJT0i6QMtPiYAAABgXUkP4PslTZV9fS4aAwAAANpSutUHsE1WY8ytuZLZRyV9NPpy3sy+3dSjQtz2SHqj1QeBWPGYdxce7+7C491dOv3xflOtwaQH8HOSxsq+PiDpleorOecelPRgXAeFeJnZ0865Q60+DsSHx7y78Hh3Fx7v7tKtj3fSS1CeknSjmd1gZllJ90g62eJjAgAAANaV6Blw51zRzP6BpD+W5En6TefcmRYfFgAAALCuRAdwSXLO/ZGkP2r1caClKC/qPjzm3YXHu7vweHeXrny8zbk1axYBAAAANEnSa8ABAACARCGAo22ZmWdmXzezP4y+/mdmdt7MvhF9/Pdl1/15M3vJzL5tZj9UNn6bmX0z+t5nzaxW60q0ATN7OXqsvmFmT0dju8zsK2b2YnQ5UnZ9HvMEW+fx5jneocxsp5mdMLMJM3vBzN7D87tzrfN48/wuQwBHO7tP0gtVY592zr0j+vgjSTKztynsgHOTpDsl/ZqZedH1P6ewB/yN0cedsRw5tuqvRY9tqSXVJyV91Tl3o6SvRl/zmHeO6sdb4jneqT4j6cvOuYOSblH4t53nd+eq9XhLPL9XEMDRlszsgKQfkfRQHVf/gKRHnHPLzrmzkl6SdLuZXStp2Dn3uAsXO/yWpA8265jRFB+Q9HD0+cNaffx4zLsLj3eCmdmwpMOSfkOSnHN559xl8fzuSFd5vNfTlY83ARzt6lcl/RNJQdX4PzCz583sN8tOV+6XNFV2nXPR2P7o8+pxtCcn6T+b2TMW7l4rSdc4516VpOhyNBrnMU++Wo+3xHO8E41LuiDp/43KCh8yswHx/O5U6z3eEs/vFQRwtB0z+1FJ0865Z6q+9TlJ/52kd0h6VdL/VbpJjR/jrjKO9vQDzrlbJf2wpI+Z2eGrXJfHPPlqPd48xztTWtKtkj7nnHunpAVF5Sbr4PFOtvUeb57fZQjgaEc/IOkuM3tZ0iOS3mtm/9Y597pzznfOBZJ+XdLt0fXPSRoru/0BSa9E4wdqjKMNOedeiS6nJf2ewsf39eg0pKLL6ejqPOYJV+vx5jnesc5JOuec+1r09QmFAY3nd2eq+Xjz/K5EAEfbcc79vHPugHPueoULMx51zv3t0h/qyN+U9N+iz09KusfMeszsBoULNZ6MTmnOmdm7o5XTPyXpD+K7J6iXmQ2Y2VDpc0k/qPDxPSnpQ9HVPqTVx4/HPMHWe7x5jncm59xrkqbM7PujofdJ+pZ4fnek9R5vnt+VEr8TJrrKvzKzdyg8BfWypKOS5Jw7Y2ZfVPgHvSjpY845P7rNT0v6vKQ+SV+KPtB+rpH0e1GHqbSkf++c+7KZPSXpi2b2YUnfk/RjEo95B1jv8f5tnuMd6x9K+ndmlpU0KenvKJwE5PndmWo93p/l+b2KnTABAACAGFGCAgAAAMSIAA4AAADEiAAOAAAAxIgADgAAAMSIAA4AAADEiAAOAKhgZp83s7tbfRwA0KkI4ACAbTEzr9XHAABJQgAHgA5hZteb2YSZPWxmz5vZCTPrN7PbzOy/mNkzZvbHZdt//10ze8rMnjOz/2Bm/TV+5r+IZsRTVeNHzOxPzezfS/rmer87uu7LZvZ/mtnjZva0md0aHcdfmNnfi+UfBwDaCAEcADrL90t60Dl3s6Qrkj4m6f+WdLdz7jZJvynpX0bX/Y/OuXc5526R9IKkD5f/IDP7V5JGJf0d51xQ43fdLul/c869bZ3f/ffLrjvlnHuPpD9TuLPd3ZLeLenYNu8vACQOARwAOsuUc+7Po8//raQfkvR2SV8xs29I+t8lHYi+/3Yz+zMz+6ak/0nSTWU/5xck7XTOHXXrb5n8pHPu7FV+9x1l3zsZXX5T0tecc3POuQuSlsxs56bvJQAkWLrVBwAAaKjqsDwn6Uw0+1zt85I+6Jx7zsz+Z0lHyr73lKTbzGyXc+6Smf1lScej792vcIZ7YYPfXf71cnQZlH1e+prXIgBdhRlwAOgs15lZKWzfK+kJSXtLY2aWMbPSTPeQpFfNLKNwBrzclyV9StL/Z2ZDzrmvOefeEX2cVG3Vv/uxRt0pAOgkBHAA6CwvSPqQmT0vaZei+m9JD5jZc5K+IemvRNf9BUlfk/QVSRPVP8g597uSfl3SSTPr28Lv/tz27goAdCZbv7QPAJAkZna9pD90zr29m343ACQNM+AAAABAjJgBBwAAAGLEDDgAAAAQIwI4AAAAECMCOAAAABAjAjgAAAAQIwI4AAAAECMCOAAAABCj/x+Wd1sUSrbSlwAAAABJRU5ErkJggg==\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>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 51, | |
"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>peak-rpm</th>\n", | |
" <th>highway-mpg</th>\n", | |
" <th>price</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>peak-rpm</th>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.058598</td>\n", | |
" <td>-0.101616</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>highway-mpg</th>\n", | |
" <td>-0.058598</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.704692</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>price</th>\n", | |
" <td>-0.101616</td>\n", | |
" <td>-0.704692</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" peak-rpm highway-mpg price\n", | |
"peak-rpm 1.000000 -0.058598 -0.101616\n", | |
"highway-mpg -0.058598 1.000000 -0.704692\n", | |
"price -0.101616 -0.704692 1.000000" | |
] | |
}, | |
"execution_count": 51, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"The variable \"highway-mpg\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"peak-rpm\" which is approximate -0.101616. You can verify it using the following command:\n", | |
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n", | |
"\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>\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 52, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"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.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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Multiple Linear Regression</h3>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"First lets make a prediction \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 60, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"Y_hat = lm.predict(Z)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 61, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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9bw2bdowceJE8vLyWLhw4a4JF7169eL7778nOzsbgM2bN5dq5bkkCsciIiIiFcjQoUM566yz9rjtnHPO4Y033uDyyy+ndevWZGVl0bVrV9544w0ABg8ezGmnnbbrhLwHHniAPn36cPzxx9OsWbNdr3PvvffSv39/jj766BL7k6Pq1atHr169aNq06a42jN///vcMGTKEXr16MWvWLGrWrLnX84488kjatm3LQQcdxC233EL37t0BaNy4MS+//DIDBw4kKyuLXr16xTSuLlbmnIvbi5VXjx49XKzN2CIiIiLJaPr06XTu3DnsMiSisPfDzMY553oU9nitHIuIiIiIRCgci4iIiIhEKByLiIiIiEQoHIuIiIiIRCgci4iIiIhEKByLiIiIiEQEGo7N7EYzm2pmU8xsqJntvf2JSGX0+edw112wZUvYlYiISAWUnp5Ot27ddl3mzZvHEUccAcC8efN2zTcGmDhxIp988kmpj3HsscdScATvvffeyx133LHHbRMnTix2tN29997Lww8/XOrjByWwcGxmLYDrgB7OuS5AOjAgqOOJpIwxY+DMM+H//g969YI47uojIiICUL16dSZOnLjr0qZNG/73v/8B8QvHhRk4cCBvvfXWHre9+eabXHDBBXF5/UQIuq0iA6huZhlADWBJwMcTSW6//gr9+kHz5vDGG7B4MfToAW+/HXZlIiJSwdWqVQuA22+/ndGjR9OtWzcefPBB7rnnHt566y26devGW2+9xaZNm/jd735Hz549Ofjgg/nwww8B2LJlCwMGDCArK4vzzz+fLYV8+tmxY0fq1avHjz/+uOu2//73vwwYMIB///vf9OzZk65du3LOOeewefPmvZ6ffzV65cqVtGnTBoDc3FxuvfVWevbsSVZWFs899xwAOTk5HHPMMXTr1o0uXbowevTocn+fMsr9CkVwzi02s4eBBcAWYIRzbkTBx5nZYGAwQOvWrYMqRyR8a9dC796wcyd88gl07AhHHQXnnw/nnQfXXAOPPQYZgf21FBGRBLvhBpg4Mb6v2a0bPP548Y/ZsmUL3bp1A6Bt27a8//77u+574IEHePjhh/noo48AaNq0KWPHjuXpp58G4E9/+hPHH388L774ImvXruXQQw/lxBNP5LnnnqNGjRpMmjSJSZMm7drOuaCBAwfy5ptvcthhhzFmzBgaNmzI/vvv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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(Y_hat, 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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Part 3: Polynomial Regression and Pipelines</h2>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<center><b>Quadratic - 2nd order</b></center>\n", | |
"$$\n", | |
"Yhat = a + b_1 X +b_2 X^2 \n", | |
"$$\n", | |
"\n", | |
"<center><b>Cubic - 3rd order</b></center>\n", | |
"$$\n", | |
"Yhat = a + b_1 X +b_2 X^2 +b_3 X^3\\\\\\\\\n", | |
"$$\n", | |
"\n", | |
"<center><b>Higher order</b>:</center>\n", | |
"$$\n", | |
"Y = a + b_1 X +b_2 X^2 +b_3 X^3 ....\\\\\\\\\n", | |
"$$\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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>We will use the following function to plot the data:</p>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 63, | |
"metadata": {}, | |
"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\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 64, | |
"metadata": {}, | |
"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.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 65, | |
"metadata": {}, | |
"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 \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 66, | |
"metadata": {}, | |
"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": 67, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])" | |
] | |
}, | |
"execution_count": 67, | |
"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>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 70, | |
"metadata": {}, | |
"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" | |
] | |
}, | |
{ | |
"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": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"f = np.polyfit(x, y, 11)\n", | |
"p = np.poly1d(f)\n", | |
"print(p)\n", | |
"PlotPolly(p,x,y, 'Highway MPG')" | |
] | |
}, | |
{ | |
"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 11rd order (cubic) \n", | |
"f1 = np.polyfit(x, y, 11)\n", | |
"p1 = np.poly1d(f1)\n", | |
"print(p1)\n", | |
"PlotPolly(p1,x,y, 'Highway MPG')\n", | |
"\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>\n" | |
] | |
}, | |
{ | |
"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", | |
"$$\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can perform a polynomial transform on multiple features. First, we import the module:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 71, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.preprocessing import PolynomialFeatures" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We create a <b>PolynomialFeatures</b> object of degree 2: \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 72, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)" | |
] | |
}, | |
"execution_count": 72, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pr=PolynomialFeatures(degree=2)\n", | |
"pr" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 73, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"Z_pr=pr.fit_transform(Z)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The original data is of 201 samples and 4 features \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 74, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(201, 4)" | |
] | |
}, | |
"execution_count": 74, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Z.shape" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"after the transformation, there 201 samples and 15 features\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 75, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(201, 15)" | |
] | |
}, | |
"execution_count": 75, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Z_pr.shape" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Pipeline</h2>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 76, | |
"metadata": {}, | |
"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.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 77, | |
"metadata": {}, | |
"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 \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 81, | |
"metadata": {}, | |
"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": 81, | |
"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. \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 82, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/jupyterlab/conda/envs/python/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/envs/python/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": 82, | |
"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\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 83, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/jupyterlab/conda/envs/python/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": 83, | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n" | |
] | |
}, | |
{ | |
"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", | |
"-->\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Part 4: Measures for In-Sample Evaluation</h2>\n" | |
] | |
}, | |
{ | |
"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", | |
"<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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Model 1: Simple Linear Regression</h3>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the R^2\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 84, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The R-square is: 0.7609686443622008\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\".\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the MSE\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 85, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The output of the first four predicted value is: [13728.4631336 13728.4631336 17399.38347881 10224.40280408]\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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 86, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.metrics import mean_squared_error" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"we compare the predicted results with the actual results \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 87, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The mean square error of price and predicted value is: 15021126.025174143\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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the R^2\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 88, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The R-square is: 0.8093562806577457\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\".\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the MSE\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" we produce a prediction \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 90, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"Y_predict_multifit = lm.predict(Z)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" we compare the predicted results with the actual results \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 91, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The mean square error of price and predicted value using multifit is: 11980366.87072649\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</h3>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the R^2\n" | |
] | |
}, | |
{ | |
"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\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 92, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.metrics import r2_score" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We apply the function to get the value of r^2\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 93, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The R-square value is: 0.7023769093756598\n" | |
] | |
} | |
], | |
"source": [ | |
"r_squared = r2_score(y, p(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\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>MSE</h3>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can also calculate the MSE: \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 94, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"18703127.63085496" | |
] | |
}, | |
"execution_count": 94, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"mean_squared_error(df['price'], p(x))" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 95, | |
"metadata": {}, | |
"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 \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 96, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"new_input=np.arange(1, 100, 1).reshape(-1, 1)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Fit the model \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 97, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 97, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.fit(X, Y)\n", | |
"lm" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Produce a prediction\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 98, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([-7796.47889059, -7629.6188749 , -7462.75885921, -7295.89884352,\n", | |
" -7129.03882782])" | |
] | |
}, | |
"execution_count": 98, | |
"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 \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 99, | |
"metadata": {}, | |
"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>\n" | |
] | |
}, | |
{ | |
"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", | |
"<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: 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" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>\n" | |
] | |
}, | |
{ | |
"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.\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>\n" | |
] | |
}, | |
{ | |
"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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Conclusion:</h2>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Comparing these three models, we conclude that <b>the MLR model is the 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>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Thank you for completing this lab!\n", | |
"\n", | |
"## Author\n", | |
"\n", | |
"<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>\n", | |
"\n", | |
"### Other Contributors\n", | |
"\n", | |
"<a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>\n", | |
"\n", | |
"Bahare Talayian\n", | |
"\n", | |
"Eric Xiao\n", | |
"\n", | |
"Steven Dong\n", | |
"\n", | |
"Parizad\n", | |
"\n", | |
"Hima Vasudevan\n", | |
"\n", | |
"<a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a>\n", | |
"\n", | |
"<a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n", | |
"\n", | |
"## Change Log\n", | |
"\n", | |
"| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n", | |
"| ----------------- | ------- | ---------- | --------------------------------------------- |\n", | |
"| 2020-10-30 | 2.2 | Lakshmi | Changed url of csv |\n", | |
"| 2020-09-09 | 2.1 | Lakshmi | Fixes made in Polynomial Regression Equations |\n", | |
"| 2020-08-27 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n", | |
"\n", | |
"<hr>\n", | |
"\n", | |
"## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\n" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python", | |
"language": "python", | |
"name": "conda-env-python-py" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.11" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment