Created
January 23, 2020 23:34
-
-
Save Patrick-Wallin/6dd797a9821ca8c34058440416391440 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
This file contains 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": [ | |
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n", | |
" <a href=\"https://cocl.us/skills_network_DA0101EN_top\">\n", | |
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n", | |
" </a>\n", | |
"</div>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n", | |
"\n", | |
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h1>Module 4: Model Development</h1>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Some questions we want to ask in this module\n", | |
"<ul>\n", | |
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n", | |
" <li>do I know if I put a fair value on my car?</li>\n", | |
"</ul>\n", | |
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n", | |
"\n", | |
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Setup</h4>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Import libraries" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"load data and store in dataframe df:" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/da0101en_object_storage_skills_network\">HERE</a> for free storage." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>symboling</th>\n", | |
" <th>normalized-losses</th>\n", | |
" <th>make</th>\n", | |
" <th>aspiration</th>\n", | |
" <th>num-of-doors</th>\n", | |
" <th>body-style</th>\n", | |
" <th>drive-wheels</th>\n", | |
" <th>engine-location</th>\n", | |
" <th>wheel-base</th>\n", | |
" <th>length</th>\n", | |
" <th>...</th>\n", | |
" <th>compression-ratio</th>\n", | |
" <th>horsepower</th>\n", | |
" <th>peak-rpm</th>\n", | |
" <th>city-mpg</th>\n", | |
" <th>highway-mpg</th>\n", | |
" <th>price</th>\n", | |
" <th>city-L/100km</th>\n", | |
" <th>horsepower-binned</th>\n", | |
" <th>diesel</th>\n", | |
" <th>gas</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>3</td>\n", | |
" <td>122</td>\n", | |
" <td>alfa-romero</td>\n", | |
" <td>std</td>\n", | |
" <td>two</td>\n", | |
" <td>convertible</td>\n", | |
" <td>rwd</td>\n", | |
" <td>front</td>\n", | |
" <td>88.6</td>\n", | |
" <td>0.811148</td>\n", | |
" <td>...</td>\n", | |
" <td>9.0</td>\n", | |
" <td>111.0</td>\n", | |
" <td>5000.0</td>\n", | |
" <td>21</td>\n", | |
" <td>27</td>\n", | |
" <td>13495.0</td>\n", | |
" <td>11.190476</td>\n", | |
" <td>Medium</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>3</td>\n", | |
" <td>122</td>\n", | |
" <td>alfa-romero</td>\n", | |
" <td>std</td>\n", | |
" <td>two</td>\n", | |
" <td>convertible</td>\n", | |
" <td>rwd</td>\n", | |
" <td>front</td>\n", | |
" <td>88.6</td>\n", | |
" <td>0.811148</td>\n", | |
" <td>...</td>\n", | |
" <td>9.0</td>\n", | |
" <td>111.0</td>\n", | |
" <td>5000.0</td>\n", | |
" <td>21</td>\n", | |
" <td>27</td>\n", | |
" <td>16500.0</td>\n", | |
" <td>11.190476</td>\n", | |
" <td>Medium</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>1</td>\n", | |
" <td>122</td>\n", | |
" <td>alfa-romero</td>\n", | |
" <td>std</td>\n", | |
" <td>two</td>\n", | |
" <td>hatchback</td>\n", | |
" <td>rwd</td>\n", | |
" <td>front</td>\n", | |
" <td>94.5</td>\n", | |
" <td>0.822681</td>\n", | |
" <td>...</td>\n", | |
" <td>9.0</td>\n", | |
" <td>154.0</td>\n", | |
" <td>5000.0</td>\n", | |
" <td>19</td>\n", | |
" <td>26</td>\n", | |
" <td>16500.0</td>\n", | |
" <td>12.368421</td>\n", | |
" <td>Medium</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2</td>\n", | |
" <td>164</td>\n", | |
" <td>audi</td>\n", | |
" <td>std</td>\n", | |
" <td>four</td>\n", | |
" <td>sedan</td>\n", | |
" <td>fwd</td>\n", | |
" <td>front</td>\n", | |
" <td>99.8</td>\n", | |
" <td>0.848630</td>\n", | |
" <td>...</td>\n", | |
" <td>10.0</td>\n", | |
" <td>102.0</td>\n", | |
" <td>5500.0</td>\n", | |
" <td>24</td>\n", | |
" <td>30</td>\n", | |
" <td>13950.0</td>\n", | |
" <td>9.791667</td>\n", | |
" <td>Medium</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2</td>\n", | |
" <td>164</td>\n", | |
" <td>audi</td>\n", | |
" <td>std</td>\n", | |
" <td>four</td>\n", | |
" <td>sedan</td>\n", | |
" <td>4wd</td>\n", | |
" <td>front</td>\n", | |
" <td>99.4</td>\n", | |
" <td>0.848630</td>\n", | |
" <td>...</td>\n", | |
" <td>8.0</td>\n", | |
" <td>115.0</td>\n", | |
" <td>5500.0</td>\n", | |
" <td>18</td>\n", | |
" <td>22</td>\n", | |
" <td>17450.0</td>\n", | |
" <td>13.055556</td>\n", | |
" <td>Medium</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>5 rows × 29 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" symboling normalized-losses make aspiration num-of-doors \\\n", | |
"0 3 122 alfa-romero std two \n", | |
"1 3 122 alfa-romero std two \n", | |
"2 1 122 alfa-romero std two \n", | |
"3 2 164 audi std four \n", | |
"4 2 164 audi std four \n", | |
"\n", | |
" body-style drive-wheels engine-location wheel-base length ... \\\n", | |
"0 convertible rwd front 88.6 0.811148 ... \n", | |
"1 convertible rwd front 88.6 0.811148 ... \n", | |
"2 hatchback rwd front 94.5 0.822681 ... \n", | |
"3 sedan fwd front 99.8 0.848630 ... \n", | |
"4 sedan 4wd front 99.4 0.848630 ... \n", | |
"\n", | |
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n", | |
"0 9.0 111.0 5000.0 21 27 13495.0 \n", | |
"1 9.0 111.0 5000.0 21 27 16500.0 \n", | |
"2 9.0 154.0 5000.0 19 26 16500.0 \n", | |
"3 10.0 102.0 5500.0 24 30 13950.0 \n", | |
"4 8.0 115.0 5500.0 18 22 17450.0 \n", | |
"\n", | |
" city-L/100km horsepower-binned diesel gas \n", | |
"0 11.190476 Medium 0 1 \n", | |
"1 11.190476 Medium 0 1 \n", | |
"2 12.368421 Medium 0 1 \n", | |
"3 9.791667 Medium 0 1 \n", | |
"4 13.055556 Medium 0 1 \n", | |
"\n", | |
"[5 rows x 29 columns]" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# path of data \n", | |
"path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n", | |
"df = pd.read_csv(path)\n", | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>1. Linear Regression and Multiple Linear Regression</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Linear Regression</h4>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"\n", | |
"<p>One example of a Data Model that we will be using is</p>\n", | |
"<b>Simple Linear Regression</b>.\n", | |
"\n", | |
"<br>\n", | |
"<p>Simple Linear Regression is a method to help us understand the relationship between two variables:</p>\n", | |
"<ul>\n", | |
" <li>The predictor/independent variable (X)</li>\n", | |
" <li>The response/dependent variable (that we want to predict)(Y)</li>\n", | |
"</ul>\n", | |
"\n", | |
"<p>The result of Linear Regression is a <b>linear function</b> that predicts the response (dependent) variable as a function of the predictor (independent) variable.</p>\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"$$\n", | |
" Y: Response \\ Variable\\\\\n", | |
" X: Predictor \\ Variables\n", | |
"$$\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" <b>Linear function:</b>\n", | |
"$$\n", | |
"Yhat = a + b X\n", | |
"$$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<ul>\n", | |
" <li>a refers to the <b>intercept</b> of the regression line0, in other words: the value of Y when X is 0</li>\n", | |
" <li>b refers to the <b>slope</b> of the regression line, in other words: the value with which Y changes when X increases by 1 unit</li>\n", | |
"</ul>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Lets load the modules for linear regression</h4>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.linear_model import LinearRegression" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Create the linear regression object</h4>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm = LinearRegression()\n", | |
"lm" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>How could Highway-mpg help us predict car price?</h4>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"For this example, we want to look at how highway-mpg can help us predict car price.\n", | |
"Using simple linear regression, we will create a linear function with \"highway-mpg\" as the predictor variable and the \"price\" as the response variable." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"X = df[['highway-mpg']]\n", | |
"Y = df['price']" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Fit the linear model using highway-mpg." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.fit(X,Y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" We can output a prediction " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n", | |
" 20345.17153508])" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Yhat=lm.predict(X)\n", | |
"Yhat[0:5] " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>What is the value of the intercept (a)?</h4>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"38423.3058581574" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.intercept_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>What is the value of the Slope (b)?</h4>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
}, | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([-821.73337832])" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.coef_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>What is the final estimated linear model we get?</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As we saw above, we should get a final linear model with the structure:" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"$$\n", | |
"Yhat = a + b X\n", | |
"$$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Plugging in the actual values we get:" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1>Question #1 a): </h1>\n", | |
"\n", | |
"<b>Create a linear regression object?</b>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 10, | |
"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", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1> Question #1 b): </h1>\n", | |
"\n", | |
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 12, | |
"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)\n", | |
"lm1" | |
] | |
}, | |
{ | |
"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", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Slope</h4>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([166.86001569])" | |
] | |
}, | |
"execution_count": 14, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"lm1.coef_\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Intercept</h4>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"-7963.338906281042" | |
] | |
}, | |
"execution_count": 15, | |
"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", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1>Question #1 d): </h1>\n", | |
"\n", | |
"<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# You can type you answer here\n", | |
"price = -7963.3389 + 166.860*engine_size" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"# using X and Y \n", | |
"Yhat=38423.31-821.733*X\n", | |
"\n", | |
"Price=38423.31-821.733*engine-size\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Multiple Linear Regression</h4>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>What if we want to predict car price using more than one variable?</p>\n", | |
"\n", | |
"<p>If we want to use more variables in our model to predict car price, we can use <b>Multiple Linear Regression</b>.\n", | |
"Multiple Linear Regression is very similar to Simple Linear Regression, but this method is used to explain the relationship between one continuous response (dependent) variable and <b>two or more</b> predictor (independent) variables.\n", | |
"Most of the real-world regression models involve multiple predictors. We will illustrate the structure by using four predictor variables, but these results can generalize to any integer:</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"$$\n", | |
"Y: Response \\ Variable\\\\\n", | |
"X_1 :Predictor\\ Variable \\ 1\\\\\n", | |
"X_2: Predictor\\ Variable \\ 2\\\\\n", | |
"X_3: Predictor\\ Variable \\ 3\\\\\n", | |
"X_4: Predictor\\ Variable \\ 4\\\\\n", | |
"$$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"$$\n", | |
"a: intercept\\\\\n", | |
"b_1 :coefficients \\ of\\ Variable \\ 1\\\\\n", | |
"b_2: coefficients \\ of\\ Variable \\ 2\\\\\n", | |
"b_3: coefficients \\ of\\ Variable \\ 3\\\\\n", | |
"b_4: coefficients \\ of\\ Variable \\ 4\\\\\n", | |
"$$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The equation is given by" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"$$\n", | |
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n", | |
"$$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>From the previous section we know that other good predictors of price could be:</p>\n", | |
"<ul>\n", | |
" <li>Horsepower</li>\n", | |
" <li>Curb-weight</li>\n", | |
" <li>Engine-size</li>\n", | |
" <li>Highway-mpg</li>\n", | |
"</ul>\n", | |
"Let's develop a model using these variables as the predictor variables." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"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." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.fit(Z, df['price'])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"What is the value of the intercept(a)?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"-15806.62462632922" | |
] | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.intercept_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"What are the values of the coefficients (b1, b2, b3, b4)?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])" | |
] | |
}, | |
"execution_count": 19, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.coef_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" What is the final estimated linear model that we get?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As we saw above, we should get a final linear function with the structure:\n", | |
"\n", | |
"$$\n", | |
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n", | |
"$$\n", | |
"\n", | |
"What is the linear function we get in this example?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>Price</b> = -15678.742628061467 + 52.65851272 x <b>horsepower</b> + 4.69878948 x <b>curb-weight</b> + 81.95906216 x <b>engine-size</b> + 33.58258185 x <b>highway-mpg</b>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1> Question #2 a): </h1>\n", | |
"Create and train a Multiple Linear Regression model \"lm2\" where the response variable is price, and the predictor variable is 'normalized-losses' and 'highway-mpg'.\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 20, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"Z = df[['normalized-losses', 'highway-mpg']]\n", | |
"lm2 = LinearRegression()\n", | |
"lm2.fit(Z,df['price'])\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"lm2 = LinearRegression()\n", | |
"lm2.fit(df[['normalized-losses' , 'highway-mpg']],df['price'])\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1>Question #2 b): </h1>\n", | |
"<b>Find the coefficient of the model?</b>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 1.49789586, -820.45434016])" | |
] | |
}, | |
"execution_count": 21, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"lm2.coef_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"lm2.coef_\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>2) Model Evaluation using Visualization</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now that we've developed some models, how do we evaluate our models and how do we choose the best one? One way to do this is by using visualization." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"import the visualization package: seaborn" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>When it comes to simple linear regression, an excellent way to visualize the fit of our model is by using <b>regression plots</b>.</p>\n", | |
"\n", | |
"<p>This plot will show a combination of a scattered data points (a <b>scatter plot</b>), as well as the fitted <b>linear regression</b> line going through the data. This will give us a reasonable estimate of the relationship between the two variables, the strength of the correlation, as well as the direction (positive or negative correlation).</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's visualize Horsepower as potential predictor variable of price:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0, 48292.75196488461)" | |
] | |
}, | |
"execution_count": 23, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 864x720 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"width = 12\n", | |
"height = 10\n", | |
"plt.figure(figsize=(width, height))\n", | |
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)\n", | |
"plt.ylim(0,)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>We can see from this plot that price is negatively correlated to highway-mpg, since the regression slope is negative.\n", | |
"One thing to keep in mind when looking at a regression plot is to pay attention to how scattered the data points are around the regression line. This will give you a good indication of the variance of the data, and whether a linear model would be the best fit or not. If the data is too far off from the line, this linear model might not be the best model for this data. Let's compare this plot to the regression plot of \"peak-rpm\".</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 24, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0, 47422.919330307624)" | |
] | |
}, | |
"execution_count": 24, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAJNCAYAAABwXMA5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdfXBc133m+ef07Rd0EyABUoTJkFAkjFWBzaxky7SibFxcrj2ZKJUs7dlREmlrE9euZ8RKPBWnss7Emapwd1kzW1bFFa9TW/FQSWajZGcjazjZhDM1SsojDcJkIkVvjuLQQiIFkg1SopoveO/3e8/+cW8D3Y0G0AC6b/ft/n6quho4QAMH4Es/fe7v/I6x1goAAABAOGLdngAAAAAwSAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECI4t2eQNjuuOMOe9ddd3V7GgAAAOhzr7zyyk1r7eHG8YEL4HfddZdefvnlbk8DAAAAfc4Y8+1m45SgAAAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAIYp3ewLAXkzPZHXh8qzm5nOaGMvo7KlJnZ4a7/a0AAAANsUKOCJreiarc5euKLtc0Gg6oexyQecuXdH0TLbbUwMAANgUARyRdeHyrBKOUSYZlzH+fcIxunB5tttTAwAA2BQBHJE1N59TOuHUjaUTjq7O57o0IwAAgO0RwBFZE2MZ5ctu3Vi+7Or4WKZLMwIAANgeARyRdfbUpMquVa5UkbX+fdm1OntqsttTAwAA2BQBHJF1empc58+c0PjIkBbzZY2PDOn8mRN0QQEAAD2NNoSItNNT4wRuAAAQKayAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAIYp3ewIAgOiZnsnqwuVZzc3nNDGW0dlTkzo9Nd7taQFAJLACDgDYkemZrM5duqLsckGj6YSyywWdu3RF0zPZbk8NACKBAA4A2JELl2eVcIwyybiM8e8TjtGFy7PdnhoARAIBHACwI3PzOaUTTt1YOuHo6nyuSzMCgGihBhyRRh0qEL6JsYyyywVlkutPIfmyq+NjmS7OCgCigxVwRBZ1qEB3nD01qbJrlStVZK1/X3atzp6a7PbUACASCOCILOpQge44PTWu82dOaHxkSIv5ssZHhnT+zAmuPgFAiyhBQWTNzec0mk7UjVGHCoTj9NQ4gRsAdokVcETWxFhG+bJbN0YdKgAA6HUEcEQWdagAACCKCOCILOpQAQBAFFEDjkijDhUAAEQNK+AAAABAiAjgAAAAQIg6HsCNMY4x5hvGmP8QvH/QGPN1Y8wbwf1Yzef+kjHmTWPM3xhjfqhm/CPGmG8GH/s1Y4wJxlPGmK8F439hjLmr0z8PAAAAsBdhrIB/TtLrNe9/QdKz1tp7JD0bvC9jzAclPSLphKSHJP26McYJHvNVSY9Juie4PRSMf0bSvLX2/ZK+LOnxzv4oAAAAwN50NIAbY45L+hFJv1kz/ElJTwZvPynpUzXjT1lri9batyS9KekBY8xRSfuttc9ba62k32l4TPVrXZT0ierqOAAAANCLOr0C/n9K+meSvJqx91lr35Wk4L7awuKYpLmaz7sajB0L3m4cr3uMtbYiaVHSofb+CAAAAED7dCyAG2N+VFLWWvtKqw9pMma3GN/qMY1zecwY87Ix5uUbN260OB0AAACg/Tq5Av4Dks4YY96W9JSkjxtj/h9J7wVlJQrus8HnX5U0UfP445LeCcaPNxmve4wxJi7pgKTbjROx1j5hrT1prT15+PDh9vx0AAAAwC50LIBba3/JWnvcWnuX/M2Vz1lr/0dJlyR9Ovi0T0v6w+DtS5IeCTqb3C1/s+WLQZnKsjHmwaC++6caHlP9Wg8H32PDCjgAAADQK7pxEuYXJT1tjPmMpO9I+jFJstZeMcY8LelbkiqSPmutdYPH/LSk35aUlvRMcJOk35L0u8aYN+WvfD8S1g8BAAAA7IYZtAXjkydP2pdffrnb0wAAAECfM8a8Yq092TjOSZgAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIji3Z4AAADobdMzWV24PKu5+ZwmxjI6e2pSp6fGuz0tILJYAQcAAJuansnq3KUryi4XNJpOKLtc0LlLVzQ9k+321IDIYgUcALBjrIgOjguXZ5VwjDJJPzJkknHlShVduDzLnzmwS6yAAwB2hBXRwTI3n1M64dSNpROOrs7nujQjIPoI4ACAHaldETXGv084Rhcuz3Z7auiAibGM8mW3bixfdnV8LNOlGQHRRwAHAOwIK6KD5eypSZVdq1ypImv9+7JrdfbUZLenBkQWARwAsCOsiA6W01PjOn/mhMZHhrSYL2t8ZEjnz5yg/hvYAzZhAgB25OypSZ27dEW5UkXphKN82WVFtM+dnhoncANtxAo4AGBHWBEFgL1hBRwAsGOsiALA7rECDgAAAISIAA4AAACEiBIUAJHB6YsAgH7ACjiASOD0RQBAvyCAA4gETl8EAPQLAjiASOD0RQBAvyCAA4gETl8EAPQLAjgQQdMzWT36xAv62OPP6dEnXhiIOuizpyZVdq1ypYqs9e85fREAEEUEcCBiBnUzIqcvAgD6BW0IgYip3YwoSZlkXLlSRRcuz/Z9GOX0RQBAP2AFHIgYNiMCABBtBHAgYtiMCABAtBHAgYhhMyIAANFGAAci5vTUuB6+/5huLBf1+vVl3Vgu6uH7j1EbDQBARBDAgYiZnsnq4qvXdHgkpQ8cGdHhkZQuvnqt77ugAADQLwjgQMRwJDsAANFGAAcihi4oAABEGwEciBi6oAAAEG0EcCBi6IICAEC0EcCBiOFIdgAAoo2j6IEI4kh2AACiixVwAAAAIEQEcAAAACBElKAAETQ9k9WFy7Oam89pYiyjs6cmKUkBACAiWAEHImZ6Jqtzl64ou1zQaDqh7HJB5y5d4SRMAAAighVwIGJqT8KUpEwyrlypoguXZ1kFB9ARXHUD2osVcCBiOAkTQJi46ga0HwEciBhOwgQQptqrbsb49wnH6MLl2W5PDYgsAjgQMZyECSBMXHUD2o8ADkQMJ2ECCBNX3YD2YxMmEEGchAkgLGdPTercpSvKlSpKJxzlyy5X3YA9YgUcAABsiqtuQPuxAg4AALbEVTegvVgBBwAAAEJEAAcAAABCRAAHAAAAQkQABwAAAEJEAAcAAABCRAAHAAAAQkQABwAAAEJEAAcAAABCRAAHAAAAQsRJmAAAYEvTM1lduDyrufmcJsYyOntqkpMxgT1gBRwAAGxqeiarc5euKLtc0Gg6oexyQecuXdH0TLbbUwMiiwAOAAA2deHyrBKOUSYZlzH+fcIxunB5tttTAyKLEhQggrgcDCAsc/M5jaYTdWPphKOr87kuzQiIPlbAgYjhcjCAME2MZZQvu3Vj+bKr42OZLs0IiD4COBAxXA4GEKazpyZVdq1ypYqs9e/LrtXZU5PdnhoQWQRwIGLm5nNKJ5y6MS4HA+iU01PjOn/mhMZHhrSYL2t8ZEjnz5yg7A3YA2rAgYiZGMsou1xQJrn+z5fLwQA66fTUOIEbaCNWwIGI4XIwAADRRgAHIobLwQAARBslKEAEcTkYAIDoIoCjZfSeBgAA2DtKUNASek8DAAC0BwEcLaH3NAAAQHsQwNESek8DAAC0BwEcLeEoYgAAgPYggKMl9J4GAABoDwI4WkLvaQAAgPagDSFaRu9pAACAvWMFHAAAAAgRK+AAgB3jYC4A2D1WwAEAO8LBXACwNwRwAMCOcDAXAOwNARwAsCMczAUAe0MABwDsCAdzAcDeEMABADvCwVwAsDcEcADAjnAwFwDsDW0IAQA7xsFcALB7HVsBN8YMGWNeNMa8Zoy5Yoz534Pxg8aYrxtj3gjux2oe80vGmDeNMX9jjPmhmvGPGGO+GXzs14wxJhhPGWO+Foz/hTHmrk79PAAAAEA7dLIEpSjp49ba+yR9SNJDxpgHJX1B0rPW2nskPRu8L2PMByU9IumEpIck/boxprrN/quSHpN0T3B7KBj/jKR5a+37JX1Z0uMd/HkAAACAPetYALe+leDdRHCzkj4p6clg/ElJnwre/qSkp6y1RWvtW5LelPSAMeaopP3W2uettVbS7zQ8pvq1Lkr6RHV1HAAAAOhFHd2EaYxxjDF/KSkr6evW2r+Q9D5r7buSFNxXiwiPSZqrefjVYOxY8HbjeN1jrLUVSYuSDnXmpwEAAAD2rqMB3FrrWms/JOm4/NXs793i05utXNstxrd6TP0XNuYxY8zLxpiXb9y4sd20AQAAgI4JpQ2htXZB0rT82u33grISBffZ4NOuSpqoedhxSe8E48ebjNc9xhgTl3RA0u0m3/8Ja+1Ja+3Jw4cPt+mnAgAAAHauk11QDhtjRoO305L+vqQZSZckfTr4tE9L+sPg7UuSHgk6m9wtf7Pli0GZyrIx5sGgvvunGh5T/VoPS3ouqBMHAAAAelIn+4AflfRk0MkkJulpa+1/MMY8L+lpY8xnJH1H0o9JkrX2ijHmaUnfklSR9FlrbfWs45+W9NuS0pKeCW6S9FuSftcY86b8le9HOvjzAAAAAHtmBm3B+OTJk/bll1/u9jQAAADQ54wxr1hrTzaOcxQ9AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQoni3J4DomJ7J6sLlWc3N5zQxltHZU5M6PTXe7WkBAABECivgaMn0TFafv/iavjE3r/eWCvrG3Lw+f/E1Tc9kuz01AACASCGAoyVffOZ1LeTKsp7kGCPrSQu5sr74zOvdnhoAAECkUIKClrx1K6eYkWIxI0kyRrKe1Vu3cl2eGQAAQLSwAg4AAACEiACOlkzesU+elTxrZWXlWSvP+uMAAABoHQEcLfnFh6Y0lknISKq4noyksUxCv/jQVLenBgAAECkEcLTk9NS4fuXh+/ThO8d09EBaH75zTL/y8H20IQQAANghNmGiZaenxgncAAAAe8QKOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABCieLcngOiYnsnqwuVZzc3nNDGW0dlTkzo9Nd7taQEAAEQKK+BoyfRMVucuXVF2uaDRdELZ5YLOXbqi6Zlst6cGAAAQKQRwtOTC5VklHKNMMi5j/PuEY3Th8my3pwYAABApBHC0ZG4+p3TCqRtLJxxdnc91aUYAAADRRABHSybGMsqX3bqxfNnV8bFMl2YEAAAQTQRwtOTsqUmVXatcqSJr/fuya3X21GS3pwYAABApBHC05PTUuM6fOaHxkSEt5ssaHxnS+TMn6IICAACwQ7QhRMtOT40TuAEAAPaIFXAAAAAgRARwAAAAIEQEcAAAACBE1ID3CY6JBwAAiAZWwPsAx8QDAABER8sB3Bjz3caYvx+8nTbGjHRuWtgJjokHAACIjpYCuDHmn0i6KOlCMHRc0h90alLYGY6JBwAAiI5WV8A/K+kHJC1JkrX2DUkUGPcIjokHAACIjlYDeNFaW6q+Y4yJS7KdmRJ2imPiAQAAoqPVAP4nxph/LiltjPlBSf9W0r/v3LSwExwTDwAAEB3G2u0Xso0xMUmfkfQPJBlJfyzpN20rD+4xJ0+etC+//HK3pwEAAIA+Z4x5xVp7snG81T7gaUn/2lr7G8EXc4IxdvkBADqC8w0A9KtWS1CelR+4q9KS/lP7pwMAAOcbAOhvrQbwIWvtSvWd4G1abAAAOoLzDQD0s1YD+Kox5v7qO8aYj0jKd2ZKAIBBx/kGAPpZqzXgPyfp3xpj3gnePyrpJzozJQDAoJsYyyi7XFAmuf40xfkGAPpFSyvg1tqXJE1J+mlJPyPpA9baVzo5MQDA4OJ8AwD9bMsVcGPMx621zxlj/vuGD91jjJG19vc7ODcAwIA6PTWu8/Jrwa/O53ScLigA+sh2JSj/jaTnJP13TT5mJRHAAQAdcXpqnMANoC9tGcCttf9rcAjPM9bap0OaEwAAANC3tq0Bt9Z6kv5pCHMBAAAA+l6rbQi/boz5vDFmwhhzsHrr6MwAAACAPtRqG8L/WX7N9880jLMdHQAAANiBVgP4B+WH74/JD+J/KulfdWpSAAAAQL9qNYA/KWlJ0q8F7z8ajP14JyYFAAAA9KtWA/j3WGvvq3n/PxtjXuvEhAAAvW96JqsLl2c1N5/TBD26AWBHWt2E+Q1jzIPVd4wx3yfpv3RmSgCAXjY9k9W5S1eUXS5oNJ1Qdrmgc5euaHom2+2pAUAktLoC/n2SfsoY853g/TslvW6M+aYka629tyOzA9AWrFainS5cnlXCMcok/aeQTDKuXKmiC5dn+XsFAC1oNYA/1NFZAOiY6mplwjF1q5XnJcISdmVuPqfRdKJuLJ1wdHU+16UZAUC0tBTArbXf7vREAHQGq5Vot4mxjLLLhbW/U5KUL7s6Ppbp4qwAIDparQEHEFFz8zmlE07dGKuV2IuzpyZVdq1ypYqs9e/LrtXZUxwNAQCtIIADfW5iLKN82a0bY7USe3F6alznz5zQ+MiQFvNljY8M6fyZE1xRAYAWtVoDDiCizp6a1LlLV5QrVZROOMqXXVYrsWenp8Y7HrjZPAygX7ECDvQ5VisRRbQ6BNDPWAEHBkAYq5VAO7F5GEA/YwUcANBz2DwMoJ8RwAEAPYfNwwD6GQEcANBzaHUIoJ8RwAEAPYfNwwD6GQEcANDTbLcnAABtRgAHAPQc2hAC6GcEcABAz6ltQ2iMf59wjC5cnu321ABgzwjgAICeQxtCAP2Mg3j6BEc2A+gnE2MZZZcLawfxSLQhBNA/WAHvA9MzWf3Cxdf0je/M6/piXt/4zrx+4eJr1EoCiCzaEALoZwTwPvD4H81oPleWlRR3YrKS5nNlPf5HM92eGgDsCm0IAfQzSlD6wOzNVcWMFDNGkmSMZI3V7M3VLs8MAHbv9NQ4gRtAX2IFHAAAAAgRAbwP3H0oI89KnmdlrZXnWXnWHwcAAEBvIYD3gS/88Ac0mknIxCTXWpmYNJpJ6As//IFuTw0AAAANCOB94PTUuL708H368MSYjuwf0ocnxvSlh++jdhIAAKAHsQmzT7BZCQAAIBpYAQcAAABCRAAHAAAAQkQABwAAAELUsQBujJkwxvxnY8zrxpgrxpjPBeMHjTFfN8a8EdyP1Tzml4wxbxpj/sYY80M14x8xxnwz+NivGeOfOGOMSRljvhaM/4Ux5q5O/TwAAABAO3RyBbwi6X+x1n5A0oOSPmuM+aCkL0h61lp7j6Rng/cVfOwRSSckPSTp140xTvC1virpMUn3BLeHgvHPSJq31r5f0pclPd7BnwcAAADYs44FcGvtu9baV4O3lyW9LumYpE9KejL4tCclfSp4+5OSnrLWFq21b0l6U9IDxpijkvZba5+31lpJv9PwmOrXuijpE9XVcQAAAKAXhVIDHpSGfFjSX0h6n7X2XckP6ZKqvfOOSZqredjVYOxY8HbjeN1jrLUVSYuSDnXiZwAAAADaoeN9wI0xw5L+naSfs9YubbFA3ewDdovxrR7TOIfH5Jew6M4779xuygDQMdMzWV24PKu5+ZwmxjI6e2qSHv4AMGA6ugJujEnID9//xlr7+8Hwe0FZiYL7bDB+VdJEzcOPS3onGD/eZLzuMcaYuKQDkm43zsNa+4S19qS19uThw4fb8aMBwI5Nz2R17tIVZZcLGk0nlF0u6NylK5qeyW7/YABA3+hkFxQj6bckvW6t/dWaD12S9Ong7U9L+sOa8UeCziZ3y99s+WJQprJsjHkw+Jo/1fCY6td6WNJzQZ04APScC5dnlXCMMsm4jPHvE47Rhcuz3Z4aACBEnSxB+QFJPynpm8aYvwzG/rmkL0p62hjzGUnfkfRjkmStvWKMeVrSt+R3UPmstdYNHvfTkn5bUlrSM8FN8gP+7xpj3pS/8v1IB38eANiTufmcRtOJurF0wtHV+VyXZgQA6IaOBXBr7Z+peY22JH1ik8f8S0n/ssn4y5K+t8l4QUGAB4BeNzGWUXa5oExy/b/efNnV8bFMF2cFAAgbJ2ECQEjOnppU2bXKlSqy1r8vu1ZnT012e2oAgBARwAEgJKenxnX+zAmNjwxpMV/W+MiQzp85QRcUABgwHW9DCABYd3pqvOOBm1aHANDbWAEHgD5Cq0MA6H2sgANAjaivHte2OpSkTDKuXKmiC5dnI/VzSNH/swCAzbACDgCBflg9npvPKZ1w6sai2OqwH/4sAGAzBHAACPTDQTkTYxnly27dWBRbHfbDnwUAbIYADgCBflg97pdWh3PzOVVcT7M3VjRzfUmzN1ZUcb1I/VkAwGYI4AAQ6IfV435pdTicdHRtoaCKa+UYo4prdW2hoH1JZ/sHA0CPYxMmAATOnprUuUtXlCtVlE44ypfdSK4eh9HqsNOMCQ5SNlo/U9nWjANAhBHAASBwempcD19d0G/+2VtaLbnal3T0jz92d1vDLJ09WrNcrOjY6JBurpRUcj0lnZiO7E9ppVjp9tQAYM8I4D2KJ2lgo07/u5ieyeriq9d0eCSlO4MV8IuvXtO9x0fb8n2qnT0Sjqnr7HFe4t93g4mxjLLLBU0eHl4by5UqGh8Z6uKsAKA9qAHvQbTfAjYK499Fpztv0Nmjdf2ymRQAmiGA9yCepIGNwvh30ekuKP3QZSUsp6fG9fD9x3RjuajXry/rxnJRD99/rO1XCqZnsnr0iRf0scef06NPvMBCB4BQDFwAr3hWC7mS8iVXnme7PZ2meJIGNgrj30Wnu6D0Q5eVsNSWA33gyIgOj6R08dVrbQ3IXG0E0C0DF8A9z+r2aknvLub19q1Vzd3OKbtU0GKu3LFQvtMVFp6kgY3C+HfR6bIHyipaF8YVD642AuiWgQvgjcqup5ViRbdWi01DeaG8t1C+mxUWnqSBjcL4d9HpHtr90qM7DGFc8eBqI4BuoQtKE2XXWwvmVQknplQiplTcUSoeUyoea6kfbe0KiyRlknHlShVduDy76ZPu6alxnQ8ee3U+p+N0QQFC+3fR6R7a/dCjOwzVLijV/zul9l/xCON7AEAzBPAWrYVyrYfyZDymZHzrUD43n9NoOlE31soKC0/SaKd+aWvJv4vBcfbUpH7h4mu6Np9XxfMUj8U0MhTXL//IB9v6Pfrh4CUA0UMA34NSxVOpsh7KjTFKOMYP5ImYkk5Mx0fTurFSZIUFXUPvaUSVlSQTnH5pgvfbiKuNALqFAN5G1lqVKlaliqflgj/2qQ8f0689+4YqnlUm4ahYYYUF4dpNGRTQbRcuz+pAOqGjB9JrY534e8tVFQDdMPCbMDvtgbsP6mc/fo/G0knN50raP5TUZ//b9+ueIyO6uVLUcqGsYsXd/gsBu8RGM0TR3HxOFdfT7I0VzVxf0uyNFVVcj7+3APoCK+AheGDyoB6YPFg3Viy7Kta0VIsZs1ZTnnD88pW4Y5RweI2EvWGjGaJoJBXXG9kVOTEjJ2ZU8ayuLRR0z/jw9g8GgB5HAO8RnrUqlF0VGvocG2MUj/lBPOEYJeJ+OE84MTmx7buwAGw0QxRZG1R8Vwu/bcM4AEQYAbzHWWtVdq3KrrfhY85aMK92Y2m9PSIGBxvNeku/dKTptJWSq2OjQ7q5UlLJ9ZR0YjoynNJqiZI9ANFHAA/Bi7O39dRLc3p3Ka+j+9N65KMTG0pSdsP1rFyvftXcBKUsqbWbo2ScMpZBx0az3kBHmtZVS6cmD6+XnORKFY2PDHVxVgDQHiSzDntx9ra+8twburVa1P6huG6tFvWV597Qi7O3O/L9rLUqll0t5cu6sVzU1fmc3r65qncX87q1UtRKsdJ0NR1A53H0ees4ERhAP2MFvMOeemlOFdfVQs5V2fWUcGIaTjl66qW5tqyCt8KzVvmSq7xcKV+W5JevpOIOdeVAiHZ7MNcgonSqdZQ1AdFDAO+wb99e1XK+LBMzigU7+edXy6p4q12dl+v5K0qNauvKE07929SWA3vTTx1pwgh9lE5tj7ImIJoI4B1WqniS8dsMSpIxkmv8w3p6UbO6cmm9G0u1TWLcMayaI3RRX+nrl440hL7ewUFbQDQRwDss4RgVK5LnWRkjVTtoJZ1ohdaWu7HU9C9n1RztND2T1ecvvqaVYkWuZ3VzpajPX3xNX3r4vsgEjX4pqyD09Q7KmoBoIoB32F2HhnV1flWrpfUa8H3JuI6P7ev21Nqm1VXzancWDhfCbnzxmde1kCvLMUaOMbKetCxOklIAACAASURBVJAr64vPvB7J0BflbtZz8zk5Rpq9sbLWIvCO4SShrwv6qawJGCQkoQ575KMTSsQd3TGc0t137NMdwykl4o4e+ehEt6fWcf6quafVYkULuZKySwXN3c7p27dWdX2xoPnVknIlfzUT2M5bt3LyPKui66lQ8VR0PXme1Vu3ohP6qqUb2eVCXenG9Ey221PbkZFUXNcWCqp4tu6UyuEUazphO3tqUkv5st54b1mvv7uoN95b1lK+HLmyJmDQ8L9lhz0weVCf0z166qU5XV/K60gb+4BHVXUDaK60PuY0rJQng3KWGPXlCJRdT40FUF4wHhX9UrrBKZW9xUqS8a86ykT76gowKAjgIXhg8uBAB+5WuF5Nq8Qaidqa8lhMibhRPEZ9+SDa7EJJlC6g9Eu9LqdU9o4Ll2d1IJ3Q0QPptbEovqgDBg0BHD2t7Hoqu9oQzKv15WvtEulljgjol3pdTqnsHf3yog4YNNSAI5Kq9eW5UkWL+bJuLhf1zkJe3761qm/fWtW1hbxuLBe1mCsHJ+hFp0wBzW32wipKL7j65XTHfvk5+sHEWEb5hg3wUXxRBwwaAjj6jutZFcuulgtl3Vot6vqiv/nz7ZvrwXypUFax4lKzGiFn7j2yo/FedHpqXA/ff0w3lot6/fqybiwX9fD9xyJXKnB6alznz5zQ+MiQFvNljY8M6fyZE5H7OfoBL4aAaKIEBQPDs34w98O5P2aMWdv0mUoE9/EY9eU96MuP3C/pVV36q+tyg+4bZ+49EoxHw/RMVhdfvabDIyndGRzEc/HVa7r3+GhkwysvYburX3rLA4PGDNoK4L0fut/+wdcvd3sa6GHGGCUcP5inHGetfzkdWbBXjz7xwoYa8Grt9O899mAXZ7YztSdh1p7oySo4ANQzxrxirT3ZOM4KONDAWqtSxapU8bSiytp4PBa0SIzXtEqMU8WF1vXLATb90k4RALqFAA60qOJ5qpS8uv7ltSUs1ZVy+pdjM8NJR29kV+RZv3Sj4rq6Op/XPePD2z62l9B5A50wPZPVhcuzmpvPaYJSGvQ5AjiwB7amrrwWq+WdEfUn6NWSK9dKRv5NklyryPXP7pd2iugdtWVNtafEnpci9W8caBUBHOiAZqvlMbPer5wNnzvXD0/Q2eWi4jH/8CBrJWMkx/jjW+m1Fx5nT03q3KUrypUqdTXgdN7AblHWhEFDAAdC0qwLi+Sf9pmKV0tY/E2fUeptHZZ+eYKOGf8AqSrX27pHfS++8KDzBtqNsiYMGgI40GX+aZ+eVLMI6sTqa8urbw/yank/PEHffSijN2+synhWxvir4J6V3n/H5qUbvfrC4/TUOIEbbUNZEwYNRalAD3I9q3zJ1WK+rBvLRV2bz+vtWznN3c4pu1TQQq6kXKmiygCd8NkPJ/594Yc/oNFMQiYmudbKxKTRTEJf+OEPbPqYufmc0gmnbixqLzx2a3omq0efeEEfe/w5PfrEC5qeyXZ7SugQDhTCoCGAAxFhrVXZ9bRSrOj2aknXFwv6zu2cvn1rVe8u5nVzxT/hs1B25Xr919+/H56gT0+N60sP36cPT4zpyP4hfXhiTF96+L4tV5L74YXHblRLb7LLhbrSG0J4f+J0VQwaDuIB+lQ8FlMi7tcbJ2IxxR3j32LRrTGvbkYcpLrj6ZmsfuHia1ouVFTxPMVjMY0MxfUr2wT3qOuXQ4sADDYO4gEGjN+JRcprY4u7mPHDeMKJKR4zijt+jXl1rFcNat2xlSTj952XGYzj3/uh5h8ANjNwAXz25qr+6f/7DR1IJ4JbfO3t/cH9aMa/35eKKzbAm97Qv7ya0z4bGWMUjxmlgq4sqUTvtEvstXZ8YbhweVYH0gkdPZBeG+uFTZidxqY8AP1s4AJ42fX0rXeXWvrcmFFdMK+97W8S4A+kE0onnJ4IKsBu+bXm6/Xmkh/KU8FJn0MJxy9rcUyof9d7sR1fGAZ1JZhe4wD62cAF8PeNpPQ//cBdWsyXtZQvazG4LeTKwQa29RVBz0rzubLmc+WWv37CMWvhfP9QQqMthPZUQ4cDoNdYa1UouyqU/c4s0vpKeTIe80tZHOO3TXRiinWgxrxX2/F12qCuBNNrHEA/G7gAPppJ6icf/O5NP14su1oqVIJQXtJivqLFfElL+cpaWF8srAf3pXxZZXe9IrPsWt1aKenWSmnT79FoKB5rusq+WWjfn070dJ0uBkPtSnmjhBPb0Md8r39nWQkevJXgQa35B9D/Bi6AbyeVcHQ44ejwSKqlz7fWKh+sCtaG9IUgnNeustfearvEFSqeCsvFbY+jrrUv6Wj/hvKYjfXsB2pW46Pa+QLRUz1caLVmrLpiHneMnJhRIhaT4wT3Mf9jW62csxLMSjAA9AsC+B4Z418SzyTjOnqgtcd41ipXdJsG88bSmOptuVCp63ywWnK1WnL17mJh0+/TaGQovhbGWwntw0NsQkX7rK+Yb/451ZBeDeROzCgRrKT/k4/drX/2+3+lawt5uZ6VEzMaTsX1yz/ywfB+iC5hJRgA+gsBvAtixmh4KK7hobiOjaW3f4D8kxGXC/Wr7HWhvbBxbLVYn3SWCxUtFyqS8i3OU2thvdWV9kySTajYva1Cena5KM+zsp6V51n/FDHrd3KpBvIoGMROLgDQ66y18mzNvayslaz1F06tgvvgc5qP14x5Vunk5nv8COAR4cSMRjNJjWaSLT+m7Hp+GUyheWhfzG0M7o2bUBeCcppWxWOmaTjfH4T20SahfYhNqGjBUy/NaV8qrjuG18vD8mVXvz79d3r/+4Y3lLg4xj90KBbT2uFD1Vu3DGonFwDYi72GY1k/09SGY9U8xuvQoZRJb/O9TwTwPpZwYjo0nNKh4dbq2aX1TagLuVLT4L60dh9sVM2X6jahVjyrW6sl3VptfRNqKh7bpN1j85X2/UMJJeNsQh007y7ltX+o/r+soURM15f8KzqtlLhI62UusdjGcpdqUO9Ui8VB7eQCoH+1KxxbrX+dtc/xP6x+PLWdAI46u9mEWqh4G1bUF3L1gX0hX1/bXrsJtVjxlN3hJtRM0mm5NKZaRhOVEgU0d3R/WrdWi0rXXDEplD0d2d9aGVdVNajLlbb6G+cEJ4TGawJ69RarqVXfSVAf1E4uAMKzWSD2P9bwvnYXjms/rx/DcRgI4NgTY4zSCUfphKMj+4daeoy1Vqs1m1AXGto8LgWtHpfW+rNXtJQv121CzZVc5Xa4CXU4FV8L6rUBfbRJaGcTau955KMT+spzbyhfdjWUiKlQ9lTxrB756ERHvp/rWbmeu2VIl7QWyGs7uVTvHbMe2uMxM7CdXAD4Wl4t9upDb/Vzu1VKgfYjgCN0ZpebUFeKlbWAvtCkfn3tY0GJTPUUx6qVoj92baG1edZvQo1v2qu9NrzvYxNqxzwweVCf0z166qU5XV/K68j+tB756IQemDzY1Xm5npWr7UtfJOlTH/oufeXZN1RxPQ0lHBUqniqu1U8+eKdypcquV9b7FRtW0QmbbaCT6oOsldaCcP2K73oYrn2/tlyiNgd7NaEbqDKD9hfi3g/db//g65dD/Z4vzt7WUy/N6d2lvI72SGjoF1v9biuut6GOvTa4r/dpX69nr92EuhtOzSbUxpX2zUL7UDxG2Bog1b+z272IiJmNZS/VzaUmJjnGH4vF/M/1b+qbv0u1G1ZrDyA6f+YEIbxPeJ5dD6eblEmsBVqtf0xNPr7panLDCjElEwjTvlRcRw6kX7HWnmz8GAG8w16cva2vPPeG4jFTd9n8cx+/hxC+R5343ZaCevbGXuy1NeyNob12E+puJOMxHRjaWWhnEyq2YqphXEbGqG7DqWOMHCcok6kJ9VsdgtQNjz7xwoZynVypovGRIf3eYw92cWb9y1or17Oq1ATjrT63uvpbDcTNSitqV38b3wf63VYBnBKUDnvqpTnFY2Zt41h1Jeepl+YI4HvUid9tMh7T4ZHUrjahbnbqaWNoX8yX5dY8s5Uqnm6sFHVjpfVNqOmEs+1Ke/1G1LjiezwKHtFhrZX/ujD4e7bNhlPJD+1OsKJeG8pjZuOquzHyb0HAN1pfeTfr33VtLtWZmJrvtf5281X7nWxYtTWrm43f03+/5nOD0drV1trxTX8/Wp9j7XRrfw+x4Ofa7MWMbbIKuxZi1XwVuDbUVoNu/bzrv/76z1k7XvMz1jyu+j0qrh+43a0Sdwi4WoxBQgDvsO1ap2H3euF3u6dNqIVNQnuuXPOx9br32qfGfNlVvuzq+lLrm1D3pZyNIT1YeR/NbAzuI2xCHSjWWlWslfZWhdU2d+xLbeh6ky+7OrQvpdkbK12cWWuqLzIaXxSgudormvuH4rq1WtRXnntDnxNXi9GfCOAd1q7Wadgoqr/buk2oozvYhFqobB7aG1balwrl4NTTdatFV6tFV+8stBbaY0Ya2WFpTKc3ofbDCtnv/vnbevqVq8qXXaUTjn78I8f1k//1Xd2eVs8Ju+tNu9XWLWN7XC3GoCGAd1jUn0R62SD9bp2Y0YFMQgcyie0/OeB6VkuFmo2nuc1C+3ppTL6mlYdntTa+k3nuH4pvWQ7TeBtKtLYJtR9WyH73z9/Wky98WzEjOTGpWHH15AvflqTIhfBOvxjq1a436IxeuKIJhIkA3mE8iXQOv9utOTGjsUxSY5lky4+pbkJd6xJT1+oxCOq5khaD3uwL+bJKlfWaBdezms+VNZ9rPbQnHLNpYB+tGfu//8vbkvyTU41MJFfInn7lahC+g3p8I8nz9PQrVyMVwMN+McRKcv+L6hVNYLcI4CHiSaT9Hpg8GJnwFQU73YQqSYWy26QMpiG0N3ysUrPZq+xa3Vwp6eZKqeXvaYzWDrl5b6mg/+M/vr51iUyPbELNl101TsMY1V15iIIwygX64YoHWjdIVzQBiQDecTyJoN8NJRwNJRy9bwebUHMld5P69eahfalQrmuJZq1UsXYtyP+n17Pbft+tNqE2uw0PxeW0uTVfOuGoWHFV01BD1qpu1S8KwigXoCZ4sHBFE4OGAN5hPIkA9Ywx2peKa18qru9qcROqZ60u/80NffVP/s5f/Y6ZtRWyD0+MKpOMrwf2oO698STUnW5CNZJGdljPvi+19SbUH//Icb/m2/NkTPXAEH88SsIoF6AmePBwRRODhADeYTyJAHsXM0anp8Y1dzvXcgeR6ibUxtX09dNQKxvGa0tBrKSlQkVLhYrm5lv797rdJtQjo2l94nvG9adv3lSx4imdiEWyC8ojH53Q4388o/eWCnI9Kyfmv6j67On3t+17UBPcun7oDgQMGgJ4h/EkArTHi7O39Uffek8H9yXXakT/6Fvv6XuO7G8aNna7CbU2tFfLYvzQvrE0Zq+bUHNlT//mpTn9+7++vh7Yh+qDe22P9uqtZ05CDQ7kUQc6T1IT3BrKHIFoIoB3GE8iQHs89dKcyhVXCyVXZddTwolpX9JpazlXMh7THcMp3THc+ibUfNldC+qNhyctbLI5tXET6q2Vkm7tYBPqUCLWUmlM7Wp8OzehPvXSnIZTcR2u+T21u7SOmuDWUOYIRBMBvMN4EgHa4+1bK1opVmTkH4deca0W8mW5XndPRayehLqTTairJbcukNe+vVDTm30t2DdsQi2UPRXKRb23tN0B8+v2JZ1N69fXx9cD+8hQYtNNqGGV1lETvD3KHIFoIoCHgCcRYO/KrpXnSVb+CYPVyoeSG60Gn8YYDafiGt7hJtSVoARmvUSm0qRMprZzTMMm1JKr1ZKrdxd3tgm1WWh3jNGtlZKGEo6cmJFjjMqup/eNtPYiBO1DmSMQTQRwAJHh1bxtNTi99WPGaH+wUt0q17NaLlRX1BtLY0r++zWHKi3my8qVmm9CvbrpJtT6Wvd3lwr6R1/98+blME1W2Q+kE0ontu4cg61R5ghEEwEcQGQY1YduYtvmnJjRaCap0V1sQl3apBSmtkzm5nJxQ2mMZ7Wrk1DrAvvQ9qE9FbG+6Z1EmSMQTQRwAJFgrbdhxdtKkvWafDZ2YzebUAs1m1A3De2FshZz/v1Svqyyu8dNqPHYjurZ96cTSvTASaidQpkjED0EcACRYExMRn6JRLUG3P9A/warKKiehDq+g02o+XLDSai5cl0pTPV2fbGg26uluq4xklSoeCosF5Vdbtcm1PVa99EWNqECwF4RwDFQjDH+5j0jmSDCVctPtytDjRmz9rhYsAPQyDR9nG2xONn/eutzk2rfr/m8bYotbLA2bO16iYa1/qh/2qKV6/m36tvt0vg79az/PdotGY+pWHZlYmbtFEnr2d7pid1B/XTQijFGmWRcmWRcRw9svlGw2t/66IEhpeJG+ZKnkuvp4fuP69jB9Kahvbr6vlyo1F0xaecm1M1KY/al4opRzw6gBQRwdEU1tFVD7eaft/FzTfXxxh9zjJGJ+W/HzMagbMz6PXzWWnlWa4HcD+7+mGftWlVHbO33uv77rvsdb/E79aphP/j61eDvWf/7177tBd9/wwsIq7W5ffehfbo2v6qV4nof8OF0XMdG93X+F9ZFg3rQSmN/632pmGJlV8/P3tavfvS+bR/veuudY5rdlgp+55ja0L66402o9WJG2/Zkb/xYJskmVGAQEcB7QPU/3+rVzmarnXv9/3l9lXfjKmt1FdfUfKB2bMOqsdGGjzUG6cYV5rrP5bJu1xlj5Bh19BJ7LGYUk2nbfzI/94l79Mt/+NcaGUqsHTZSdq1+5vTf05EDQ2sh38ovC6+uxNeG++r71RcH1RcAvWxQD1rZa39rJ2Z0IJPQgUzrnWPKrtewol5/qFLjavtSvqxCzUmou9mEGo+ZTQ5Tqq9hH635GJtQgegjgG/C1Kz0SUGYqK78qX5Vtel9NcBuEUS3W0EEsO701Lh+7Opx/eafvaXVkqt9SUf/+GN36x9875E9f23Xs/6qfM2qu/92/Sp9NdQ3hnlb87F2G9SDVrrR3zrhxHRoOKVDO9iEWiy7WtpspT1X27d9/Va7CbXiWd1aLenW6t42oe5vEtrXV98TA1GqBUTJwAXwhBOrO/yidgU4xgot0LOmZ7K6+Oo1HR5J6c5gFfjiq9d07/FRnZ4a39PXdoKi/nb8h+iura77wdxtWG2vlv5UA7/r+QcMbRbgj+5P69pCQ+lNyun70puo9LdOJRwdTjg6PNJaaLfWqlD2tJAvrXWMabw1Hqq0mG84CXUXm1AzSWfbVfYDDaE97E2o/bTXAdjOwAVwY/xd+wCi5cLlWSUcfwOfJGWSceVKFV24PLvnAN5OTszI2WWH8mptfMVbv//+yYO68KcLwRU4v0zi1qqnH/2vDrR55r2lX/tbG2OUTjpKJ9M62uIfoWetckV309DerESmcRNqruQqt4NNqJK/CbUaxlsJ7cNDu9+EOqh7HTC4Bi6AA4NoeiarC5dnNTef08RYRmdPTfZUaG3F3HxOow0nQaYTjq7O57o0o/YzxijuGMVr1gj+8uqixkdSWi5UVHI9peL+Cvi3ri/rffuHVPGsKq4n17Mq17zdD+hv7YsZo+GhuIaH4tJYa4+p3YTaLLg3K41ZLbp1X2O5UNFyoSKp9U2o1bDe6kp7dRPqoO51wOAigAN9bnomq89ffE0rxYpcz+rmSlGfv/iavvTwfZEK4RNjGWWXC2sr4JKUL7s6Ppbp4qw6b24+pzuGUzo8st5n21qrdxby2pdq/l+451mVPU8V16ri+m+vray7VhUvGocXUZKwe7WbUO9Ua/9Gyq6n5Wpoz5U21LYvNSmRKZTrN6EuBKvxrapuQl3Ml5VwjJxYTE5McoxRLGb01q0VvfT27brQzlVs9AMCONDnvvjM61rIleUELRutJy3kyvriM69HKoCfPTWpc5euKFeq1HVBOXtqsttT66jdvPCIxYxSMUeb5PO6UpfaUN5Y/tLNDjGUJIQv4cR0cF9SB/clJbW2x6BxE+pCw8bTpbXgXtFCvrTpJtTq29LGF4e/+O++Wfd+Kh7bpN0jm1ARHQRwoM+9dSvn1w/H1rvxWM/qrVvRKt04PTWu8/Jrwa/O53Q8oqU0O9WJFx7NSl2acT2rclDSUqkJ6eUQVtIpSYiGXW1CrXgbVtS/eXVR03+blbX+/1Fl138hOJRwlCtV6jahFiuesnvZhLrJAUuNwZ2TUNFJBHAAkXF6arzvA3ejbr7wcGJGTmzzlG7t+or5WlBvCOu7rUcf1PaL/c4Y/0VVOuHoyP71sqof/OD79LH339F00621VqtFd2O3mNoV9sL6Sns13O91E+pwKr62sr5ZYG/XJlQMHgJ4j+qHTXPoDZN37NPM9WWV3PUNVkbS1JHh7k0KO9KrLzyMMUo4Rgln8+5Sm4X02vebhfRu9AFHd2226dbUbEI9Ntban7/rWa0UK3Ur7Zu3efQ/b6VYqfsaK8WKVooVXVtobf71m1C3Du3Vj+3jJNSBRQDvQdMzWZ27dEUJx2g0nVB2uaBzl67ovNSTT8LobaPpuBrjjQ3GgU5rNaSXXE9l1+/iUnI9/eSDd+pLX//bnu8Djt7k1Jww2qqK663Vs28I7Q317NXxfHl9YWM3m1Br57ndSnv1Y0PxGKG9D/AM3IOi0u8Y0fDit5sv32w23su4MtSfjDFKxes3jf6jkxM6NJzSv/qTv9PV+Zy+azSjT3//d+v7/t4hv7OL63V9oyj6S7xuE2prSg317M1utaF9IV+q24Tqela3V0u6vYOTUJPxmA4M7Sy0swm19xDAe9Ag9DtGeKqX92sXTKonNEYJV4YGz3alN9WV82LFU7Hsr5yXKh6hPKKi2HYyGY/p8Ehq55tQcxt7sdd2i2lcaa/9/7pU8XRjpagbK61vQk0nnJZW2qvj+4fiijuE9k4igPegibGM3r61oqW8f/BG0olpfzquuw5Rs4udc2KmadiO2g5/rgyh0frKuSMF+/kay1mq3TRYMe9tg9J2cm0T6gFHRw4Mbf8A+X+nV0vBJtQmwX3tlivXldDU/k3Pl13ly66uL+1sE+r+mtaOG09FDW4Z/36ETag7QgDvQd8/eVAvvn177ejpkuspu1zSox/tn/+E+lmvlUmcufeI/r+/fFeNuePMvUe6M6Fd4soQWtGsnKVWJQjiJbd6UJG39rZHOO8a2k5uzhij4VRcw6m4jo3ufBNqNbTXl8lUV9fXD1zyTz1dV92E+s5Ca6E9ZqSRnZTGDCW0LzW4m1AJ4D3o+dnbOjycXDt6OunENDIU1/Ozt/Wz3Z5cj+m1sNuLZRJffuR+Sa/q0l9dl+tZOTGjM/ceCcajY1BPwkR7xZ2Y4ptsCK2umJcqQTmL66lc8QjmIaDtZHvVbUJt8fWL69n61fWG1faFXGOZTGXDJtTq5+5knvuH4puWwjS7DSX6YxMqAbwHbXb0NCt99Xox7PZqmcQnP3Rc15dKay9UPvmh412by24N6kmYCE81nKeT9eG87HprJSyua1X2ag8noqylHWg72X1OzGgsk9RYZvebUNe6xRTqa9irgX6xUFapsn6Al+tZzefKms+1HtoTjmkpsI/2+CZUAngPYqWvNb0YdnuxTKIXX6jsxqCehInuSzgxJbbYkOb3Nq+WtARvB/3OWUFvzSMfndBXnnuDtpMRs9NNqJJUKG88VGlpQ2lMfclMpWYfU9m1urlS0s2V1jvHDCViO1plD2MTKgG8B7HS15peDLu9+OKpF1+o7FavHkiDwVY9MXSrunO/nKW6QdTv1kIwX/fA5EF9Tvc0PQkT/WUo4Wgo4eh9+1vfhJoruU0Du7/ivjG0LxXKqu09UCh7KpSLem+p9c4x+1JOk2C+9UmoO2luQADvQaz0taYXw24vvnjqxRcqQCt6bY/HbvmlLTGp4cr+Ws15EMirpS5RaxHaLpudhInBZozRvlRc+1JxfVeLm1A9a7VSqLQW2oM698ZNqKtFV6tFt+VNqEbSSEM9+6Hhza8MEMB7FCt92+vFsNuLL54mxjJ66+bKhk29d99BW0v0rn4pndrKWs256mvOq20TizWhvFzxS1uaiWL/bKCTYsZof1Bm0moRk+vZukBeDem1wb0xzOdK65tQraSlQkVLhYrm5rffPEwAR2T1Ytitzqvbc6jVrK3ljZWS/ocHeILuhn5Z1e20fiqd2qlqSUtjp5ZqMK92Zym7Vn/6tzcGon820GlOzOz+JNTCxrr1xXxFq8WKfmOTx3YsgBtj/rWkH5WUtdZ+bzB2UNLXJN0l6W1JP26tnQ8+9kuSPiPJlfSz1to/DsY/Ium3JaUl/UdJn7PWWmNMStLvSPqIpFuSfsJa+3anfh70pl4Lu73o+dnbGh9JbjjYibaW4RuEVd12oXRqo2bB/Pe/cU3pREzpZFzWSvFYTLlSRV97mf7ZQKdttwl1Xyq+aQDv5BbP35b0UMPYFyQ9a629R9KzwfsyxnxQ0iOSTgSP+XVjTPV/mK9KekzSPcGt+jU/I2neWvt+SV+W9HjHfpIumJ7J6tEnXtDHHn9Ojz7xgqZnst2eEiJqbj6nZMNu7qQTG+gg0y21q7rG+PcJx+jC5dluT63nTIxldHU+pyvvLOqb1xZ15Z3FtStdWDc3n1Mm6Z9A6MSM4k5MI0MJ3Vwp6rsP7dPRA2kd2pfS8FBcyXh/9E8G+kHHVsCttZeNMXc1DH9S0ung7SclTUv6xWD8KWttUdJbxpg3JT1gjHlb0n5r7fOSZIz5HUmfkvRM8Jj/LfhaFyX9X8YYY/ugISurZGin4aSjN2+syjFGjjGquFbXFgp6/+F93Z5apLSjdGRuPifHSLM3VtauRtwxnOTFUBNH9if1/Oz6pijPSgv5io7sb/3y8CDYajO6EzNKJ52gr7l/NcHa9U2f1QOH6GcOhC/szuTvs9a+K0nBffXZ65ikuZrPuxqMHQvebhyve4y1tiJpUdKhjs08RKySoZ3WVrxMza12HNuqvijOLhfqXhTv9MrUSCqu1ve5yQAAHYFJREFUawsFVYITSSue/2JoeLP+dQPsj7/V/He72figOntqUmXXKleqBO3aKltuRjfGKBV3NDLkd2g4eiCtiYMZ3XUoo4mDGR09kNYdIykdSCeUScYVj/XeASZAP+iV//WbJQG7xfhWj9n4xY15TH4Zi+68887dzC9U1D6inZaLFR0bHdLNldLaquuR/SmtFCvbPxiS2rchcG2Fsfo/lW0Yx5pqd4Ha14nWqq7rANq3Gd0Yo4RjlNikK0t1xbzouiqW/c4sAHYv7AD+njHmqLX2XWPMUUnVpYyrUl2nmOOS3gnGjzcZr33MVWNMXNIBSbebfVNr7ROSnpCkkydP9vwzXS/2t0Z0TYxl9PatlbqxkuvprkO0IWxVu14Ur5TcjS+GhlNaJVRuYIwfuJuNo16nN6NvVspSrHgqlgnlwG6EfW3pkqRPB29/WtIf1ow/YoxJGWPulr/Z8sWgTGXZGPOg8a+X/1TDY6pf62FJz/VD/be080uKwFa+f/Kgsst+4Ku2Icwul/T9dEho2cRYRvlyfUjezYviibGMSg0hpeR6vLhu4th+v6uAteu32nF0lzFGQwlHBzIJjY8MBWUs+/Rdo/UlLIkOH+cNbOXF2dv6+a+9pkd/4wX9/Nde04uzTddpu6Jj/zKMMb8n6XlJ32OMuWqM+YykL0r6QWPMG5J+MHhf1torkp6W9C1JfyTps9ba6rPdT0v6TUlvSvo7+RswJem3JB0KNmz+vIKOKv3g9NS4zp85ofGRIS3myxofGdL5MyfYgNkE3WK29/zsbR0eTirpxORZvwPK4eGknu+h/4h6XbteFPNiqHX/4h/eq5GUo+rJzjEjjaQc/Yt/eG93J4ZNxWJ+KN8f1JcfOeAH87vv2KdjY2mN7x/SgXRCqYTDHhR03Iuzt/WV597QrdViXY/8Xgnhpk8WjVt28uRJ+/LLL3d7GmiD2m4xtSdh8mKl3scef06j6UTdE561/olff/qLH+/izKKl2gVlL3W2jz7xwqankv7eYw92aObR1Y7fOXrTWglLxVOxQgkL2u/nv/aabq0Wla7pm58vuzq0L6Vf/Yn7QpnDvlRcRw6kX7HWnmz8WK9swgR2bJBPytsJ9hS0116WLObmc7pjOKXDI0PrX89aNlhv4q+uLujKO4taLblazJf1V1cX+LfdJ6olLP6hQn5duefZtUBeKPv3rjdYi4Ron3eX8nKMNDdfVNn1lHBiGsskdH1p+2Piw0BxFiJrbj5X98pWoltMM2dPTermSlF/fc0/0OSvry3q5kqRPQU70K42hP9/e/ceI9d51nH895wzl71715d12thpvODUCiVt09RgsEJIIwgX0SIFKQFEQQQCFBwhcRW0QuUiCkJgI6iSmtJyjSBQYUEpNDUhGDlt05C4mDixWUfYcexNfN2Ld2fmnJc/zpnd2d0Ze3c9c2bOme9HGs3Ou7M77/j1OfvMe573eZuVS94N9j31ivYePKGr5UA5L/p32nvwhPY99Uq7u4YW8eLFnsN9Bd20rkdv29Cvrev75lNXevK+PFJXsEL9hZzOXZlTJXTy4rKv567MLZqMaicCcKQWwczKHDl9SVeuLi45eOVqRUdOX2pTj9KnWbX5WWC9cvsPnZRn0dbqnnnxfdSO7pH3PQ0Uc9owUNRbh3t168Z+bRnp06bBooZ68yrkCGPQQG3Z1+qttr3N+J+L1CKYWZn9h04q50eXe3vjS7453whkVqFZV1tYYL1y06VgfgFmlWeiZGMd3bYYvZDzNNiT18aBoraMRNVX3rKuVyN9BfUWmCVHZLocaPNQUTnfFDqnnG/aPFTUTLkzziGdMQ+PZZqx7XXWNWsDiqybLkWX8GsRyKxOK/LoO2MOpnP1F6KF1bVBeOiidiyoXYxemx71UalrzoXeojrlkblKsFCnvBIt0O+2ohPd7i1DvTo/PaetNefpq+VAo/2dUcqUALwDcUJduVZvQJEF/QVf06WKnAvkXLSRiVmUH5c2+556RfsPndR0KVB/wdfDu7dpz323tfx1H7l7TB85cFQzpcqiijurvdrCsb1yD+/epr0HT6gSRiUbQxfdHt69rd1d6yiPPTOuUiXQ+anFlXW6fTF6MeermPOleL0zVVe6z4Pv3aq9B4/rajlQT97TbDlUJXR68L1br//DCSAFpQM1K98UkKT37dikIIyCF6foPgij9jRp56K8ZqWOcGyv3J77btOj936tevO+KmGU8vPovV+byAeuNHnl3BWdny6pEjj5ZqoETuenSzp+7kq7u9ZR5jcO6l2+cdCG/qIGimwalDU7x9br0Xu3a0N/UZOzFW3oL+rRe7drZ4fsu5C+KbAu0KxtrwFJeun1SZkWpzxY3J4mtYvypCiNphKG2n/oZCJBWTOutnBsr86e+24j4L6OchAd2V6cq2MWlfMrBaRbXI/nmXq8xqUQS/GMOTPl6bVzbH3HBNxLEYB3IOo2o5lOnp9R3jf53sLsThCGOnk+XUFfFnLZObbRbIWcp6ulQKFzMosLPDhRHWSN6uWTB6FTqRJGAXkQpZ+VK6FCcspxAwjAO1Cz8k2BqiB0qoQ1OeCScn66KgX0F3xNz1XktPh99BfTcxpb67HdrYuyu/V9r8b20UG9en5KV64u5IAP9ed164aBdnctM/xFQfnCFaxyEM2OlyqhSvE9iz2xUnxE7kCUKkMzjQ4WFbglOeAuak+T9+3YVPd9pCmXfS3HdrM2AUqbbn3fq/XI3WPK+75uWtejt28e1E3repT3fSZsEpD3PfUVchruK2h0sEdbRvq0La5TvnmoRyN9hfnccqM0IpZIz9RRl6G6B5rFhfXzFxu1d6qzV0oa6cvp8tWKQheln6zrzenslVK7u7Yqqz22axduSlJfIaeZUiXzVS669X2vFuVYO08h56mQ81Rb7c45p3LgVApClRfNmKfrPIzmIQAHMu7sZP0A9VyD9k516uKMbh7u05aRhZkk51zqFjCuNq2iWxduduv7XgsmbDqfmamQsyg3f0lgXpu+Ug3KCcyzjwAcyLggrJ+PWGnQ3qm2jvTp5JtTmpxdXO9428b05LqupQ741pG+5Tm+vbnM5/iyYBXdwMwWapbXiCrZLMyUVwPzRudzpA854ABSYdfYer0xVVIpiDZmKQWh3pgqaVeHlpiqZy11wHeNrdfE5OL3PTGZrve9Fo/cPaZy4DRTqsi56J7F6OgWnhfVLR/qyWvjQFFvHe7V2zb065b1UX75cF9BfYWcfI/c8rRiBhzIuKU1wGvb0+Tw+AWNDhaWzQQfHr+gPe3u3Aqdujgj36TxN6bm38PGgcI10yoOj1/QUI+vy1crKtfkvqfpfa8Fuc3AcjnfU85fnF9eDqJ65aWaXT4pkdj5CMCRapQpuz7Pk+qtt/RSdv3r1MUZbegvauNAz3xb2nLAB4s5HZ+Yku+ZfM9UCZ1euzSr7aON00mOT0xqajaIKylEdZ6nZgMdn0jXRkprceT0JR09c1nTpUCXr5Z15PQlju86OA92t7zvRbt41gnK58qBSkFIUN6BCMCRWmvJp+1GlQZreRq1d6os5AQ7F9UILlWcnKKrEJ7pmnWDS5VQMsmzmp0OLVqslWX7nnpFew+eiHc/jcZ678ETksTumDU4D6KealA+ULNPQrVe+Vw5mJ8xJyhvn5TNgSFNnj42oYcef1a7P3ZQDz3+bNPr9z72zLhKlUBnL8/q5XOTOnt5VqVKcM18WqRXFnKC35wuRTsVVvN/4hntN6cbV6TJxxsmhWEUvIfxIqxCyjZSWq39h07Gwbcnz7z4PmrHgrWsK0B3KuSigHxDnFN+a1yzfNNgUet68+rJ+/Mf9NF6zICjJZKYlXnl3BVdma3Ik8k3UyVwOj9dUiW40pTfj86ShZzgUiWU75tyNfk/lTC85mz2bZuH6lR/yaeq+staTJcCeXKaqyzsfOpb1I4FlGvEjajWLK81n0s+n1cesrtnCxCAoyUee2Zc5SDQ+anFC+aauYlGOYhOCJ5Xc2k+dCoFnCiyKu31jvO+6Wo5+n9azeeWrj2bXd2+/qZ1uVVtX592Rd/TTHkh2HbxLqh9eS7c1spCahY6SzUoH6xpqwbl1YCc9JUbx5kMLXF8YlJvTpZUCd38YrM3J0tNXThWyHmSk0Ln5OSik4HTsk/z3a5RlSqqVyXvts1D6i/4KoehZiuhymGo/oKv7ZuHGv7MWravzwLfq//HvVF7t8pCahY6XyEXXXmrTV/ZGpdEHOkrqL+YixaCYsWYAUdLJLFwbPvo4PINSvrzmd+gZLV68r5m6ly278n7dZ7d2dJe7WHX2Hp96dUL8j1T3qIZ3cm54Lo1vdM+878WU6X654pG7d0qC6lZSKfqQs/akojVDYSqs+SlIFSZ2fK6CMDREmu51L5a3XppfrXW9+bqBuDre9N1+Geh2sPh8QvqzXuamlsYj4Gin/ma3mtRPWfUrglzbqEdC7LyAW3fU69o/6GTmi4F6i/4enj3NirepIznmXo8f9kETzUYr93Vsxx094fpdP0FRmoksXCMmZ8V8jwNFT1dmVs42Q0VPVnKCoHXVnuQpL5CTjOlSlPXFbTa0TOXNTUXLNoEaWou0NEzl9vWp07Vl/ejHHC3vB3ZQ9nJbJtf7Mls+TwCcLREUrPTWZn5aaWBgq8zlxbPNEyVQr11OF2BTBaqPcxX8KiNwB2VPer5iW8Z0x984bjCmr/FnkXtyJ6ovKRTEEqVuOqNxWUnCcCzqdFseXnJTPlcJVQlLsOaJQTgaIl7dozqgdOXll1OJFhO3pvTpUVBjBTlHl+r9nQnykK1h2oN76V/R8KlA4T5oIuUhO4wNVdR6OLPprZQ9WZqrtLuriFh9XLLnXMqB25+ljwLgTkBOFri6WMTevL517RpsKhb4hnwJ59/TXdsGSYIT9j5qfqBdqP2TvXI3WP6uSdf1GuXriqIq+sMFHP68Hfd3u6urdhgT24+oKjWtpa0aLc6LNhz320E3F3CqouFajapkovb0fXMTIWcLUtjcc5FKSxBqLnyQp55GoLydCWBIjXYna1zNDoNdf7paTmTJBdv3e4WZ3KkwcO7t0mKZvZcfF/bDnSr3nx0NFcX2lbjp7582o5yJMnM1JP3NdST16bBom4e7tWtG/p080ivNg0WNdTBO3wSgKMlTl2cUe+SvK605euiszz2zLhyvsn3TGbRfS5lH+ru2DKs/oI/X4PdM6m/4OuOLcPt7RjQZltH+uu2b2nQDjRiZirmfA325LWxpm75lpE+jQ71aF1vXr0FX36bN8PguidaIgv5ulnhmZblgFfb0+T4xKQuTpcUSpKTKmGg2Xhxb1o89sy4Rod6Fh0XaavkkqSffeJ5HThydj7l6HvuuEm//+Cd7e4WWsA5p5xn8s3mS9cGLr35veg81UostSl/QejmF3zOBUG88DOZ/3cE4GiJahWUmVKFGt1tlpUUlJm5QEFt2omTgrg9LU5dnJFv0vgbU/PlOTcOFFJ5ZajVmyL97BPP6zMvvD7/OAhd/Ph5gvAMmioFunm4R29OleaPjZsGilQIQkv5nqm34Ku34EuKqmzV5pVXg/NSC8ojkoKClujW7bM7UaO9j5q4J1IiSkH0h9jV3Grb02CwmNNrl2ZViWd0K6HTa5dmU7cIs7op0sTk7KJNkZ4+NtG01zhw5KykhXJ01RTOajuyZetIn+aW7JQ8Vwm5aorE1eaVL01hqeaVF/P+DS8QTtdZH6lCje7OcNNgUacvz9VtTxPf8+RcGAXf1TrBcXtazF/WrH56cEvaUyKJTZGCBqUZG7Uj3XaNrdeXXr0gz6L0uFIQ6o2pkr5/5/p2dw2QtJDCMhg/rs6UR7dAc+XV7e5JAA5kXKMdL9O2E+bYxn4dn5hSzqvJEQ2dxjamZ5FWVi6zJ7Epku+ZgtAtq5ne7oVTaI3D4xc0OljQlasLuycP9eZ0ePyC9rS7c0Ad1ZnyaCOh6HwYhG4+GJ+rhNesvkIADmTc2cuzq2rvVL94/w79/JMvanK2okoQKud5GunL6xfv39Hurq1YdXHy2KaB+baZUkWjgz1t7NXqbR3p06vnp5YFS7duGLj+D6/QzrcN6/DJi3XbkT2nLs5oQ39RGwcWjgXnXCrXR6B7+V50ZbCvcP3npmsKDMCqVeIpxKW5tJWUpT3cs2NUv/vAO/XuW0b0lnW9evctI/rdB96ZqjSnR+4eUzlwmilV5Fx0n8bFybvG1mtiMprFr6YLTEyWtGuseekCpy7UD7watSPdto706Wp58ZUgKmchywjAgYyrLrZcusFF2hZh1krXR4cFWVmcfHj8gjYNFFTwPYVOKvieNg0UdHj8QtNe47U66xau1Y50y8qHU2ClSEEBMm776KBePjspZzWLF13UnibVyht53xZV3violKoANguLk09dnNHGgaI2DbYuXSAr5TOxMvfsGNVHFS3wPX1xRltaUNoS6CQE4EDGLcqdDqPc6cGeXKpyp6VkKm9gZZLYaMtUP9hO8YUbXEcWPpwCK0UKCpBxWcidlqJZ1968v6it2ZU3sDJJpAvcPFx/YWqjdgBIE2bAgS6QhZmlJGZdsTJJpAv8xge+Xnv++nlNlQKFLqoNPVDw9Rsf+PqmvQYAtAsBOIBUeOTuMX3kwFHNlCrqzfu6Wg5YpNVGrf5Qd8+OUe176E5yggFkEikoAFIhKxVEsHJHTl/S0TOXdebyrI6euawjpy+1u0sA0BTMgANIjSyk0jx9bEKPPTOuUxdntJVZ3Yb2PfWK9h48Ic+knBelG+09eEKStOe+29rcOwC4McyAA13g6WMTeujxZ7X7Ywf10OPP6uljE+3uUleqllKcmJxdVEqR8Vhu/6GTcqFTOXCaq0T3LnTaf+hku7sGADeMABzIOIK+zlFbStEsus/7pseeGW931zrO5GxF4ZK2MG4HgLQjBQXIuCzVz057+sapizMa7s0vaqOUYn1sxAMgywjAgYxLKuhrdXCc1E6YrXwflFIEAEikoACZt3WkT1fLwaK2Zgd9SaS5JJG+0er3kcQGNlkx1JNbtuulxe0AkHYE4EDGJRH0JREcJ7ETZqvfB6UUV+7h3dvkeaa8byrmonvPMz28e1u7uwYAN4ypBCDjkti1MIk0lyTSN5J4H1kopZiEaqnB/YdOaroUqL/g6+Hd2yhBCCATCMCBLtDqoC+J4DiJnTDJ0e4se+67jYAbQCaRggLghiWR5pJE+gY52gCAJJhz3VXU6a677nLPPfdcu7sBZE61ekir0lySkpX3AQBoPzP7inPurmXtBOAAAABA8zUKwElBAQAAABJEAA4AAAAkiAAcAAAASBABOAAAAJAgAnAAAAAgQQTgAAAAQIIIwAEAAIAEEYADAAAACSIABwAAABJEAA4AAAAkiAAcAAAASBABOAAAAJAgAnAAAAAgQQTgAAAAQIIIwAEAAIAEEYADAAAACSIABwAAABJEAA4AAAAkiAAcAAAASBABOAAAAJAgAnAAAAAgQQTgAAAAQIIIwAEAAIAEEYADAAAACSIABwAAABJEAA4AAAAkiAAcAAAASBABOAAAAJAgAnAAAAAgQQTgAAAAQIIIwAEAAIAEEYADAAAACSIABwAAABJEAA4AAAAkiAAcAAAASBABOAAAAJAgAnAAAAAgQQTgAAAAQIIIwAEAAIAEEYADAAAACSIABwAAABJEAA4AAAAkiAAcAAAASBABOAAAAJAgAnAAAAAgQQTgAAAAQIIIwAEAAIAEEYADAAAACSIABwAAABJEAA4AAAAkKPUBuJndb2Yvm9kJM/uldvcHAAAAuJZUB+Bm5kv6I0nfIel2SQ+Z2e3t7RUAAADQWKoDcEk7JZ1wzo0750qSnpD0/jb3CQAAAGgo7QH4zZJO1Tw+HbcBAAAAHSnX7g7cIKvT5pY9yezHJf14/HDKzF5uaa/QDhslvdnuTiAxjHd3Yby7C+PdXbI+3m+r15j2APy0pK01j7dIOrP0Sc65xyU9nlSnkDwze845d1e7+4FkMN7dhfHuLox3d+nW8U57CsqXJW03s21mVpD0oKQDbe4TAAAA0FCqZ8CdcxUz+2lJ/yLJl/RJ59zRNncLAAAAaCjVAbgkOec+K+mz7e4H2o4Uo+7CeHcXxru7MN7dpSvH25xbtmYRAAAAQIukPQccAAAASBUCcHQ0M/PN7L/M7B/jx79mZq+Z2Qvx7TtrnvvLZnbCzF42s2+vaX+PmX01/t4+M6tXvhJtZmavxuP0gpk9F7etN7PPm9nx+H6k5vmMd4o1GG+O74wys2Eze9LMjpnZS2a2i+M7uxqMN8d3DQJwdLpHJb20pO33nXPvim+flSQzu11RFZyvk3S/pD82Mz9+/scV1YHfHt/uT6TnWItvjce1WpLqlyR9wTm3XdIX4seMd3YsHW+J4zur9kr6nHNuh6R3Kjqvc3xnV73xlji+5xGAo2OZ2RZJ3yVp/wqe/n5JTzjn5pxzJyWdkLTTzN4iacg5d9hFCx7+TNIHWtZpNNv7JX06/vrTWhg7xru7MN4pZmZDku6W9CeS5JwrOecuieM7k64x3o105XgTgKOT/YGkX5AULmn/aTM7YmafrLlkebOkUzXPOR233Rx/vbQdncdJ+lcz+4pFu9dK0mbn3OuSFN+Pxu2Md/rVG2+J4zuLxiS9IelP45TC/WbWL47vrGo03hLH9zwCcHQkM/tuSRPOua8s+dbHJX2NpHdJel3S71V/pM6vcddoR+f5ZufcnZK+Q9KHzOzuazyX8U6/euPN8Z1NOUl3Svq4c+7dkqYVp5s0wHinW6Px5viuQQCOTvXNkr7HzF6V9ISke83sL5xz55xzgXMulPQJSTvj55+WtLXm57dIOhO3b6nTjg7jnDsT309I+oyisT0XX4ZUfD8RP53xTrl6483xnVmnJZ12zn0xfvykogCN4zub6o43x/diBODoSM65X3bObXHO3apoccZB59wPVk/Wse+V9N/x1wckPWhmRTPbpmixxpfiy5qTZvaN8erpH5L0D8m9E6yEmfWb2WD1a0nfpmhsD0j6YPy0D2ph7BjvFGs03hzf2eScOyvplJm9PW56n6T/Ecd3JjUab47vxVK/Eya6zu+Y2bsUXYZ6VdIjkuScO2pmf6PopF6R9CHnXBD/zE9K+pSkXkn/HN/QWTZL+kxcYSon6a+cc58zsy9L+hsz+1FJ/yfp+yTGOwMajfefc3xn1s9I+kszK0gal/QjiiYBOb6zqd547+P4XsBOmAAAAECCSEEBAAAAEkQADgAAACSIABwAAABIEAE4AAAAkCACcAAAACBBBOAAgEXM7FNm9kC7+wEAWUUADgC4IWbmt7sPAJAmBOAAkBFmdquZHTOzT5vZETN70sz6zOw9ZvbvZvYVM/uXmu2/f8zMvmxmL5rZ35lZX53f+evxjLi3pP0eM/s3M/srSV9t9Nrxc181s98ys8Nm9pyZ3Rn343/N7CcS+ccBgA5CAA4A2fJ2SY875+6QdEXShyT9oaQHnHPvkfRJSb8ZP/fvnXPvdc69U9JLkn609heZ2e9IGpX0I865sM5r7ZT0K8652xu89k/VPPeUc26XpP9QtLPdA5K+UdJHb/D9AkDqEIADQLaccs79Z/z1X0j6dknvkPR5M3tB0q9K2hJ//x1m9h9m9lVJPyDp62p+z4clDTvnHnGNt0z+knPu5DVee3fN9w7E91+V9EXn3KRz7g1Js2Y2vIb3CQCplWt3BwAATbU0WJ6UdDSefV7qU5I+4Jx70cx+WNI9Nd/7sqT3mNl659wFM/sGSY/F3/uIohnu6eu8du3jufg+rPm6+pi/RQC6CjPgAJAtt5hZNdh+SNKzkjZV28wsb2bVme5BSa+bWV7RDHitz0n6bUn/ZGaDzrkvOufeFd8OqL6lr32oWW8KALKEABwAsuUlSR80syOS1ivO/5b0MTN7UdILkr4pfu6HJX1R0uclHVv6i5xzfyvpE5IOmFnvGl774zf4XgAgk6xxah8AIE3M7FZJ/+ice0c3vTYApA0z4AAAAECCmAEHAAAAEsQMOAAAAJAgAnAAAAAgQQTgAAAAQIIIwAEAAIAEEYADAAAACSIABwAAABL0/7ReMLHfpinKAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 864x720 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(width, height))\n", | |
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)\n", | |
"plt.ylim(0,)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Comparing the regression plot of \"peak-rpm\" and \"highway-mpg\" we see that the points for \"highway-mpg\" are much closer to the generated line and on the average decrease. The points for \"peak-rpm\" have more spread around the predicted line, and it is much harder to determine if the points are decreasing or increasing as the \"highway-mpg\" increases.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1>Question #3:</h1>\n", | |
"<b>Given the regression plots above is \"peak-rpm\" or \"highway-mpg\" more strongly correlated with \"price\". Use the method \".corr()\" to verify your answer.</b>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 25, | |
"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": 25, | |
"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 \"peak-rpm\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"highway-mpg\" which is approximate -0.101616. You can verify it using the following command:\n", | |
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Residual Plot</h3>\n", | |
"\n", | |
"<p>A good way to visualize the variance of the data is to use a residual plot.</p>\n", | |
"\n", | |
"<p>What is a <b>residual</b>?</p>\n", | |
"\n", | |
"<p>The difference between the observed value (y) and the predicted value (Yhat) is called the residual (e). When we look at a regression plot, the residual is the distance from the data point to the fitted regression line.</p>\n", | |
"\n", | |
"<p>So what is a <b>residual plot</b>?</p>\n", | |
"\n", | |
"<p>A residual plot is a graph that shows the residuals on the vertical y-axis and the independent variable on the horizontal x-axis.</p>\n", | |
"\n", | |
"<p>What do we pay attention to when looking at a residual plot?</p>\n", | |
"\n", | |
"<p>We look at the spread of the residuals:</p>\n", | |
"\n", | |
"<p>- If the points in a residual plot are <b>randomly spread out around the x-axis</b>, then a <b>linear model is appropriate</b> for the data. Why is that? Randomly spread out residuals means that the variance is constant, and thus the linear model is a good fit for this data.</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 26, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Multiple Linear Regression</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>How do we visualize a model for Multiple Linear Regression? This gets a bit more complicated because you can't visualize it with regression or residual plot.</p>\n", | |
"\n", | |
"<p>One way to look at the fit of the model is by looking at the <b>distribution plot</b>: We can look at the distribution of the fitted values that result from the model and compare it to the distribution of the actual values.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"First lets make a prediction " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 29, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"ename": "ValueError", | |
"evalue": "shapes (201,2) and (4,) not aligned: 2 (dim 1) != 4 (dim 0)", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-29-f493eb797774>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mY_hat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[0;32m~/conda/envs/python/lib/python3.6/site-packages/sklearn/linear_model/base.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 211\u001b[0m \u001b[0mReturns\u001b[0m \u001b[0mpredicted\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 212\u001b[0m \"\"\"\n\u001b[0;32m--> 213\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_decision_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 214\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[0m_preprocess_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstaticmethod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_preprocess_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/conda/envs/python/lib/python3.6/site-packages/sklearn/linear_model/base.py\u001b[0m in \u001b[0;36m_decision_function\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 196\u001b[0m \u001b[0mX\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcheck_array\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maccept_sparse\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'csr'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'csc'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'coo'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 197\u001b[0m return safe_sparse_dot(X, self.coef_.T,\n\u001b[0;32m--> 198\u001b[0;31m dense_output=True) + self.intercept_\n\u001b[0m\u001b[1;32m 199\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/conda/envs/python/lib/python3.6/site-packages/sklearn/utils/extmath.py\u001b[0m in \u001b[0;36msafe_sparse_dot\u001b[0;34m(a, b, dense_output)\u001b[0m\n\u001b[1;32m 171\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 172\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 173\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 174\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 175\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mValueError\u001b[0m: shapes (201,2) and (4,) not aligned: 2 (dim 1) != 4 (dim 0)" | |
] | |
} | |
], | |
"source": [ | |
"Y_hat = lm.predict(Z)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"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": [ | |
"plt.figure(figsize=(width, height))\n", | |
"\n", | |
"\n", | |
"ax1 = sns.distplot(df['price'], hist=False, color=\"r\", label=\"Actual Value\")\n", | |
"sns.distplot(Yhat, hist=False, color=\"b\", label=\"Fitted Values\" , ax=ax1)\n", | |
"\n", | |
"\n", | |
"plt.title('Actual vs Fitted Values for Price')\n", | |
"plt.xlabel('Price (in dollars)')\n", | |
"plt.ylabel('Proportion of Cars')\n", | |
"\n", | |
"plt.show()\n", | |
"plt.close()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>We can see that the fitted values are reasonably close to the actual values, since the two distributions overlap a bit. However, there is definitely some room for improvement.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Part 3: Polynomial Regression and Pipelines</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p><b>Polynomial regression</b> is a particular case of the general linear regression model or multiple linear regression models.</p> \n", | |
"<p>We get non-linear relationships by squaring or setting higher-order terms of the predictor variables.</p>\n", | |
"\n", | |
"<p>There are different orders of polynomial regression:</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<center><b>Quadratic - 2nd order</b></center>\n", | |
"$$\n", | |
"Yhat = a + b_1 X^2 +b_2 X^2 \n", | |
"$$\n", | |
"\n", | |
"\n", | |
"<center><b>Cubic - 3rd order</b></center>\n", | |
"$$\n", | |
"Yhat = a + b_1 X^2 +b_2 X^2 +b_3 X^3\\\\\n", | |
"$$\n", | |
"\n", | |
"\n", | |
"<center><b>Higher order</b>:</center>\n", | |
"$$\n", | |
"Y = a + b_1 X^2 +b_2 X^2 +b_3 X^3 ....\\\\\n", | |
"$$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>We saw earlier that a linear model did not provide the best fit while using highway-mpg as the predictor variable. Let's see if we can try fitting a polynomial model to the data instead.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>We will use the following function to plot the data:</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"def PlotPolly(model, independent_variable, dependent_variabble, Name):\n", | |
" x_new = np.linspace(15, 55, 100)\n", | |
" y_new = model(x_new)\n", | |
"\n", | |
" plt.plot(independent_variable, dependent_variabble, '.', x_new, y_new, '-')\n", | |
" plt.title('Polynomial Fit with Matplotlib for Price ~ Length')\n", | |
" ax = plt.gca()\n", | |
" ax.set_facecolor((0.898, 0.898, 0.898))\n", | |
" fig = plt.gcf()\n", | |
" plt.xlabel(Name)\n", | |
" plt.ylabel('Price of Cars')\n", | |
"\n", | |
" plt.show()\n", | |
" plt.close()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"lets get the variables" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"x = df['highway-mpg']\n", | |
"y = df['price']" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's fit the polynomial using the function <b>polyfit</b>, then use the function <b>poly1d</b> to display the polynomial function." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" 3 2\n", | |
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\n" | |
] | |
} | |
], | |
"source": [ | |
"# Here we use a polynomial of the 3rd order (cubic) \n", | |
"f = np.polyfit(x, y, 3)\n", | |
"p = np.poly1d(f)\n", | |
"print(p)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's plot the function " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"PlotPolly(p, x, y, 'highway-mpg')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])" | |
] | |
}, | |
"execution_count": 35, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"np.polyfit(x, y, 3)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>We can already see from plotting that this polynomial model performs better than the linear model. This is because the generated polynomial function \"hits\" more of the data points.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1>Question #4:</h1>\n", | |
"<b>Create 11 order polynomial model with the variables x and y from above?</b>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" 3 2\n", | |
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\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", | |
"f1 = np.polyfit(x, y, 11)\n", | |
"p1 = np.poly1d(f1)\n", | |
"print(p)\n", | |
"PlotPolly(p1,x,y, 'Length')\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"# calculate polynomial\n", | |
"# Here we use a polynomial of the 3rd order (cubic) \n", | |
"f1 = np.polyfit(x, y, 11)\n", | |
"p1 = np.poly1d(f1)\n", | |
"print(p)\n", | |
"PlotPolly(p1,x,y, 'Length')\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>The analytical expression for Multivariate Polynomial function gets complicated. For example, the expression for a second-order (degree=2)polynomial with two variables is given by:</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"$$\n", | |
"Yhat = a + b_1 X_1 +b_2 X_2 +b_3 X_1 X_2+b_4 X_1^2+b_5 X_2^2\n", | |
"$$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can perform a polynomial transform on multiple features. First, we import the module:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.preprocessing import PolynomialFeatures" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We create a <b>PolynomialFeatures</b> object of degree 2: " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)" | |
] | |
}, | |
"execution_count": 38, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pr=PolynomialFeatures(degree=2)\n", | |
"pr" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"Z_pr=pr.fit_transform(Z)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The original data is of 201 samples and 4 features " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 40, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(201, 2)" | |
] | |
}, | |
"execution_count": 40, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Z.shape" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"after the transformation, there 201 samples and 15 features" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 41, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(201, 6)" | |
] | |
}, | |
"execution_count": 41, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Z_pr.shape" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Pipeline</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Data Pipelines simplify the steps of processing the data. We use the module <b>Pipeline</b> to create a pipeline. We also use <b>StandardScaler</b> as a step in our pipeline.</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 42, | |
"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." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 43, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"Input=[('scale',StandardScaler()), ('polynomial', PolynomialFeatures(include_bias=False)), ('model',LinearRegression())]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"we input the list as an argument to the pipeline constructor " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 44, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"Pipeline(memory=None,\n", | |
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False))])" | |
] | |
}, | |
"execution_count": 44, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pipe=Pipeline(Input)\n", | |
"pipe" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can normalize the data, perform a transform and fit the model simultaneously. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64 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 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": 46, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pipe.fit(Z,Y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Similarly, we can normalize the data, perform a transform and produce a prediction simultaneously" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n", | |
" Xt = transform.transform(Xt)\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"array([15388.77780567, 15388.77780567, 16771.84474515, 11641.85647791])" | |
] | |
}, | |
"execution_count": 47, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"ypipe=pipe.predict(Z)\n", | |
"ypipe[0:4]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1>Question #5:</h1>\n", | |
"<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 48, | |
"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 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 were all converted to float64 by StandardScaler.\n", | |
" return self.fit(X, y, **fit_params).transform(X)\n", | |
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n", | |
" Xt = transform.transform(Xt)\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"array([16231.78938339, 16231.78938339, 17052.24372355, 13833.33798916,\n", | |
" 20396.97271047, 17872.69806371, 17926.6223148 , 17872.69806371,\n", | |
" 22028.89401561, 14695.7334135 ])" | |
] | |
}, | |
"execution_count": 48, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \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]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"</div>\n", | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"Input=[('scale',StandardScaler()),('model',LinearRegression())]\n", | |
"\n", | |
"pipe=Pipeline(Input)\n", | |
"\n", | |
"pipe.fit(Z,y)\n", | |
"\n", | |
"ypipe=pipe.predict(Z)\n", | |
"ypipe[0:10]\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Part 4: Measures for In-Sample Evaluation</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>When evaluating our models, not only do we want to visualize the results, but we also want a quantitative measure to determine how accurate the model is.</p>\n", | |
"\n", | |
"<p>Two very important measures that are often used in Statistics to determine the accuracy of a model are:</p>\n", | |
"<ul>\n", | |
" <li><b>R^2 / R-squared</b></li>\n", | |
" <li><b>Mean Squared Error (MSE)</b></li>\n", | |
"</ul>\n", | |
" \n", | |
"<b>R-squared</b>\n", | |
"\n", | |
"<p>R squared, also known as the coefficient of determination, is a measure to indicate how close the data is to the fitted regression line.</p>\n", | |
" \n", | |
"<p>The value of the R-squared is the percentage of variation of the response variable (y) that is explained by a linear model.</p>\n", | |
"\n", | |
"\n", | |
"\n", | |
"<b>Mean Squared Error (MSE)</b>\n", | |
"\n", | |
"<p>The Mean Squared Error measures the average of the squares of errors, that is, the difference between actual value (y) and the estimated value (ŷ).</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Model 1: Simple Linear Regression</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the R^2" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 49, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
}, | |
"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\"." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the MSE" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 51, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.metrics import mean_squared_error" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"we compare the predicted results with the actual results " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 52, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the R^2" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The R-square is: 0.4966263556974878\n" | |
] | |
} | |
], | |
"source": [ | |
"# fit the model \n", | |
"lm.fit(Z, df['price'])\n", | |
"# Find the R^2\n", | |
"print('The R-square is: ', lm.score(Z, df['price']))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the MSE" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" we produce a prediction " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"Y_predict_multifit = lm.predict(Z)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" we compare the predicted results with the actual results " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 55, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The mean square error of price and predicted value using multifit is: 31632832.975589428\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>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the R^2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"let’s import the function <b>r2_score</b> from the module <b>metrics</b> as we are using a different function" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 56, | |
"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" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 57, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The R-square value is: 0.674194666390652\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" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>MSE</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can also calculate the MSE: " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 58, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"20474146.426361218" | |
] | |
}, | |
"execution_count": 58, | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 59, | |
"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 " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 60, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"new_input=np.arange(1, 100, 1).reshape(-1, 1)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Fit the model " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 61, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
" normalize=False)" | |
] | |
}, | |
"execution_count": 61, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lm.fit(X, Y)\n", | |
"lm" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Produce a prediction" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 62, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([-7796.47889059, -7629.6188749 , -7462.75885921, -7295.89884352,\n", | |
" -7129.03882782])" | |
] | |
}, | |
"execution_count": 62, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"yhat=lm.predict(new_input)\n", | |
"yhat[0:5]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"we can plot the data " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 63, | |
"metadata": { | |
"collapsed": false, | |
"jupyter": { | |
"outputs_hidden": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.plot(new_input, yhat)\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Decision Making: Determining a Good Model Fit</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Now that we have visualized the different models, and generated the R-squared and MSE values for the fits, how do we determine a good model fit?\n", | |
"<ul>\n", | |
" <li><i>What is a good R-squared value?</i></li>\n", | |
"</ul>\n", | |
"</p>\n", | |
"\n", | |
"<p>When comparing models, <b>the model with the higher R-squared value is a better fit</b> for the data.\n", | |
"<ul>\n", | |
" <li><i>What is a good MSE?</i></li>\n", | |
"</ul>\n", | |
"</p>\n", | |
"\n", | |
"<p>When comparing models, <b>the model with the smallest MSE value is a better fit</b> for the data.</p>\n", | |
"\n", | |
"\n", | |
"<h4>Let's take a look at the values for the different models.</h4>\n", | |
"<p>Simple Linear Regression: Using Highway-mpg as a Predictor Variable of Price.\n", | |
"<ul>\n", | |
" <li>R-squared: 0.49659118843391759</li>\n", | |
" <li>MSE: 3.16 x10^7</li>\n", | |
"</ul>\n", | |
"</p>\n", | |
" \n", | |
"<p>Multiple Linear Regression: Using Horsepower, Curb-weight, Engine-size, and Highway-mpg as Predictor Variables of Price.\n", | |
"<ul>\n", | |
" <li>R-squared: 0.80896354913783497</li>\n", | |
" <li>MSE: 1.2 x10^7</li>\n", | |
"</ul>\n", | |
"</p>\n", | |
" \n", | |
"<p>Polynomial Fit: 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>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Usually, the more variables you have, the better your model is at predicting, but this is not always true. Sometimes you may not have enough data, you may run into numerical problems, or many of the variables may not be useful and or even act as noise. As a result, you should always check the MSE and R^2.</p>\n", | |
"\n", | |
"<p>So to be able to compare the results of the MLR vs SLR models, we look at a combination of both the R-squared and MSE to make the best conclusion about the fit of the model.\n", | |
"<ul>\n", | |
" <li><b>MSE</b>The MSE of SLR is 3.16x10^7 while MLR has an MSE of 1.2 x10^7. The MSE of MLR is much smaller.</li>\n", | |
" <li><b>R-squared</b>: In this case, we can also see that there is a big difference between the R-squared of the SLR and the R-squared of the MLR. The R-squared for the SLR (~0.497) is very small compared to the R-squared for the MLR (~0.809).</li>\n", | |
"</ul>\n", | |
"</p>\n", | |
"\n", | |
"This R-squared in combination with the MSE show that MLR seems like the better model fit in this case, compared to SLR." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<ul>\n", | |
" <li><b>MSE</b>: We can see that Polynomial Fit brought down the MSE, since this MSE is smaller than the one from the SLR.</li> \n", | |
" <li><b>R-squared</b>: The R-squared for the Polyfit is larger than the R-squared for the SLR, so the Polynomial Fit also brought up the R-squared quite a bit.</li>\n", | |
"</ul>\n", | |
"<p>Since the Polynomial Fit resulted in a lower MSE and a higher R-squared, we can conclude that this was a better fit model than the simple linear regression for predicting Price with Highway-mpg as a predictor variable.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<ul>\n", | |
" <li><b>MSE</b>: The MSE for the MLR is smaller than the MSE for the Polynomial Fit.</li>\n", | |
" <li><b>R-squared</b>: The R-squared for the MLR is also much larger than for the Polynomial Fit.</li>\n", | |
"</ul>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Conclusion:</h2>" | |
] | |
}, | |
{ | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h1>Thank you for completing this notebook</h1>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n", | |
"\n", | |
" <p><a href=\"https://cocl.us/skills_network_DA0101EN_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n", | |
"</div>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>About the Authors:</h3>\n", | |
"\n", | |
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n", | |
"\n", | |
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<hr>\n", | |
"<p>Copyright © 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python", | |
"language": "python", | |
"name": "conda-env-python-py" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.7" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment