Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save CoderNamedHendrick/4ef5bb1c8a4dfc3a00403c37b5c37abd to your computer and use it in GitHub Desktop.
Save CoderNamedHendrick/4ef5bb1c8a4dfc3a00403c37b5c37abd to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/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": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm_1 = LinearRegression()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1 = LinearRegression()\n",
"lm1 \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1 b): </h1>\n",
"\n",
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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": 11,
"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",
"lm_1.fit(X,Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1.fit(df[['engine-size']], df[['price']])\n",
"lm1\n",
"\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 c):</h1>\n",
"\n",
"<b>Find the slope and intercept of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Slope</h4>"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([166.86001569])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm_1.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-7963.338906281042"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm_1.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# Slope \n",
"lm1.coef_\n",
"# Intercept\n",
"lm1.intercept_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 d): </h1>\n",
"\n",
"<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# You can type you answer here\n",
"yhat = -7963.339 + x166.86"
]
},
{
"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": 15,
"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": 16,
"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": 16,
"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": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-15806.62462632922"
]
},
"execution_count": 17,
"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": 18,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])"
]
},
"execution_count": 18,
"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": 19,
"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": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2 = LinearRegression()\n",
"z = df[['normalized-losses', 'highway-mpg']]\n",
"y = df['price']\n",
"lm2.fit(z,y)"
]
},
{
"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": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 20,
"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": 21,
"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": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 48280.16140035407)"
]
},
"execution_count": 22,
"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": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 47422.919330307624)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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e9kY86yk70qqSPqctdYPz/klSb8vKSPpufAmSb8n6evGmLdUnfl+PKofAgAAANgJM2gTxidOnLCvvPJKt4cBAACAPmeMedVae6L1ODthAgAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARSnR7AAAAoLdNz+R0/tKs5ubzmhzP6szJKZ06NtHtYQGxxQw4AADY1PRMTmcvXlZuuaixTFK55aLOXrys6Zlct4cGxBYz4ACAbWNGdHCcvzSrpGuUTVUjQzaVUL5c0flLs/yZAzvEDDgAYFuYER0sc/N5ZZJu07FM0tWV+XyXRgTEHwEcALAtjTOixlTvk67R+Uuz3R4aOmByPKuC5zcdK3i+jo5nuzQiIP4I4ACAbWFGdLCcOTklz7fKlyuytnrv+VZnTk51e2hAbBHAAQDbwozoYDl1bELnTh/XxEhaiwVPEyNpnTt9nPpvYBdYhAkA2JYzJ6d09uJl5csVZZKuCp7PjGifO3VsgsAN7CFmwAEA28KMKADsDjPgAIBtY0YUAHaOGXAAAAAgQgRwAAAAIEKUoACIDXZfBAD0A2bAAcQCuy8CAPoFARxALLD7IgCgXxDAAcQCuy8CAPoFARxALLD7IgCgXxDAgRiansnpiade1CeefF5PPPXiQNRBnzk5Jc+3ypcrsrZ6z+6LAIA4IoADMTOoixHZfREA0C9oQwjETONiREnKphLKlys6f2m278Mouy8CAPoBM+BAzLAYEQCAeCOAAzHDYkQAAOKNAA7EDIsRAQCINwI4EDOnjk3osYeP6MZySW9cX9aN5ZIee/gItdEAAMQEARyImemZnC68dlUHR4b0wUMjOjgypAuvXe37LigAAPQLAjgQM2zJDgBAvBHAgZihCwoAAPFGAAdihi4oAADEGwEciBm6oAAAEG8EcCBm2JIdAIB4Yyt6IIbYkh0AgPhiBhwAAACIEAEcAAAAiBAlKEAMTc/kdP7SrObm85ocz+rMySlKUgAAiAlm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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",
"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": "iVBORw0KGgoAAAANSUhEUgAAAukAAAJNCAYAAACMSevzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdcXDcZ53n+c+3Wy1Lbcu2kriTjK1MInAQ8RwwgyeT3Lg0WsgMzG6tmb3K3MV7tVB15KQC5jLDbqghU4cPXEUt3lkG4mEBeTNUgLoNA77lxlwlwASPTpsjDuPAOKCJknjkgBTitO3ItuSW3N2/fu6PbsmSI9st/6R+fr/+vV9VqlY/UrsfyZL96ef3fb6POecEAAAAIDpSvicAAAAAYDFCOgAAABAxhHQAAAAgYgjpAAAAQMQQ0gEAAICIIaQDAAAAEdPiewJRc8MNN7hbb73V9zQAAADQ5J599tlTzrlNS32MkH6JW2+9VUeOHPE9DQAAADQ5M/v55T5GuQsAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiGnxPQHAt6HRvAaHxzQ+WVBXZ1YDvd3q68n5nhYAAEgwVtKRaEOjee0+OKL81Kw2tmeUn5rV7oMjGhrN+54aAABIMEI6Em1weEyZtCnb2iKz6m0mbRocHvM9NQAAkGCEdCTa+GRB7Zn0orH2TFoTkwVPMwIAACCkI+G6OrOaKQWLxmZKgbZ0Zj3NCAAAgJCOhBvo7VYpcCoUy3KuelsKnAZ6u31PDQAAJBghHYnW15PTnp3blOto09mZknIdbdqzcxvdXQAAgFe0YETi9fXkCOUAACBSWEkHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxNCCMQKGRvMaHB7T+GRBXZ1ZDfR20xIQAAAgwbytpJtZl5n9nZk9b2YjZvbHtfHrzOxvzeyl2m3ngsc8ZGbHzOwFM3vPgvF3mtlPax/bZ2ZWG19jZn9dG3/GzG5t9Nd5NUOjee0+OKL81Kw2tmeUn5rV7oMjGhrN+54aAAAAPPFZ7lKW9O+cc2+VdJekj5jZHZI+LukHzrmtkn5Qu6/ax+6TtE3SeyV90czStT/rS5L6JW2tvb23Nv5BSZPOuTdL+pykvY34wpZjcHhMmbQp29ois+ptJm0aHB7zPTUAAAB44i2kO+dedc79uPb+lKTnJW2W9D5JX6192lcl/UHt/fdJ+oZz7oJz7rikY5LuNLObJa13zj3tnHOSvnbJY+b+rAOS3j23yh4V45MFtWfSi8baM2lNTBY8zQgAAAC+RWLjaK0M5dclPSPpRufcq1I1yEuaK87eLGl8wcMmamOba+9fOr7oMc65sqSzkq5fja/hWnV1ZjVTChaNzZQCbenMepoRAAAAfPMe0s1snaT/S9KfOOfOXelTlxhzVxi/0mMunUO/mR0xsyMnT5682pRX1EBvt0qBU6FYlnPV21LgNNDb3dB5AAAAIDq8hnQzy6ga0P9P59x/rQ2/VithUe12bgflhKSuBQ/fIumXtfEtS4wveoyZtUjaIOn1S+fhnNvvnNvunNu+adOmlfjS6tbXk9OenduU62jT2ZmSch1t2rNzG91dAAAAEsxbC8ZabfhfSXreOfcXCz50UNIHJH2mdvs3C8b/i5n9haRfUXWD6I+cc4GZTZnZXaqWy7xf0l9e8mc9LeleSYdqdeuR0teTI5QDAABgns8+6b8t6d9I+qmZ/UNt7M9UDeffNLMPSvqFpD+UJOfciJl9U9I/qtoZ5iPOubli7g9JelRSu6Qnam9S9UXA183smKor6Pet9hcFAAAAhGURXFj2avv27e7IkSO+pwEAAIAmZ2bPOue2L/Ux7xtHAQAAACxGSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGJ89kkHsAKGRvMaHB7T+GRBXZ1ZDfR2czgWAAAxx0o6EGNDo3ntPjii/NSsNrZnlJ+a1e6DIxoazfueGgAACIGQDsTY4PCYMmlTtrVFZtXbTNo0ODzme2oAACAEQjoQY+OTBbVn0ovG2jNpTUwWPM0IAACsBEI6EGNdnVnNlIJFYzOlQFs6s55mBAAAVgIhHYixgd5ulQKnQrEs56q3pcBpoLfb99QAAEAIhHQgxvp6ctqzc5tyHW06O1NSrqNNe3Zuo7sLAAAxRwtGIOb6enKEcgAAmgwr6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiGnxPQEA4QyN5jU4PKbxyYK6OrMa6O1WX0/O97QAAEAIrKQDMTY0mtfugyPKT81qY3tG+alZ7T44oqHRvO+pAQCAEAjpQIwNDo8pkzZlW1tkVr3NpE2Dw2O+pwYAAEIgpAMxNj5ZUHsmvWisPZPWxGTB04wAAMBKIKQDMdbVmdVMKVg0NlMKtKUz62lGAABgJRDSgRgb6O1WKXAqFMtyrnpbCpwGert9Tw0AAIRASAdirK8npz07tynX0aazMyXlOtq0Z+c2ursAABBztGAEYq6vJ0coBwCgyRDSI4A+1wAAAFiIchfP6HMNAACASxHSPaPPNQAAAC5FSPeMPtcAAAC4FCHdM/pcAwAA4FKEdM/ocw0AAIBLEdI9o881AAAALkULxgigzzUAAAAWYiUdAAAAiBhCOgAAABAxhHQAAAAgYryGdDP7ipnlzexnC8Y+aWavmNk/1N7++YKPPWRmx8zsBTN7z4Lxd5rZT2sf22dmVhtfY2Z/XRt/xsxubeTXBwAAAFwL3yvpj0p67xLjn3POvaP29rgkmdkdku6TtK32mC+a2dwpQF+S1C9pa+1t7s/8oKRJ59ybJX1O0t7V+kIAAACAleK1u4tzbngZq9vvk/QN59wFScfN7JikO83sZUnrnXNPS5KZfU3SH0h6ovaYT9Yef0DSF8zMnHNuxb4IhDY0mtfg8JjGJwvq6sxqoLebbjcAACDRfK+kX84fmdlztXKYztrYZknjCz5noja2ufb+peOLHuOcK0s6K+n61Zw4lmdoNK/dB0eUn5rVxvaM8lOz2n1wREOjed9TAwAA8CaKIf1Lkt4k6R2SXpX02dq4LfG57grjV3rMImbWb2ZHzOzIyZMnlz9jXLPB4TFl0qZsa4vMqreZtGlweMz31AAAALyJXEh3zr3mnAuccxVJ/1nSnbUPTUjqWvCpWyT9sja+ZYnxRY8xsxZJGyS9vsRz7nfObXfObd+0adNKfjm4ivHJgtoz6UVj7Zm0JiYLnmYEAADgX+RCupndvODuv5I01/nloKT7ah1bblN1g+iPnHOvSpoys7tqXV3eL+lvFjzmA7X375V0iHr0aOnqzGqmFCwamykF2tKZ9TSj+BkazWvX/sPasfeQdu0/TKkQAABNwHcLxsckPS3pLWY2YWYflPQfau0Un5P0zyR9VJKccyOSvinpHyV9V9JHnHNz6e5Dkh6RdEzSP6m6aVSS/krS9bVNpv9W0scb85WhXgO93SoFToViWc5Vb0uB00Bvt++pxQI1/QAANCdjYXmx7du3uyNHjvieRqLMdXeZmCxoC91dlmXX/sPKT80q23qxUVOhWFauo02P9d/lcWYAAOBqzOxZ59z2pT7mtQUjIEl9PTlC+TUanyxoY3tm0Rg1/QAAxF/katIB1I+afgAAmhMhHYgxavoBAGhOhHQgxvp6ctqzc5tyHW06O1NSrqNNe3Zuo3wIAICYoyYdiDlq+gEAaD6spAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIjhMCMg5oZG8xocHtP4ZEFdnVkN9HZzuBEAADHHSjoQY0Ojee0+OKL81Kw2tmeUn5rV7oMjGhrN+54aAAAIgZAOxNjg8JgyaVO2tUVm1dtM2jQ4POZ7agAAIARCOhBj45MFtWfSi8baM2lNTBY8zQgAAKwEQjoQY12dWc2UgkVjM6VAWzqznmYEAABWAiEdiLGB3m6VAqdCsSznqrelwGmgt9v31AAAQAiEdCDG+npy2rNzm3IdbTo7U1Kuo017dm6juwsAADFHC0Yg5vp6coRyAACaDCvpAAAAQMQQ0gEAAICIIaQDAAAAEUNIBwAAACKGkA4AAABEDCEdAAAAiBhCOgAAABAxhHQAAAAgYjjMCKENjeY1ODym8cmCujqzGujt5nAdAACAEFhJRyhDo3ntPjii/NSsNrZnlJ+a1e6DIxoazfueGgAAQGwR0hHK4PCYMmlTtrVFZtXbTNo0ODzme2oAAACxRUhHKOOTBbVn0ovG2jNpTUwWPM0IAAAg/gjpCKWrM6uZUrBobKYUaEtn1tOMAAAA4o+QjlAGertVCpwKxbKcq96WAqeB3m7fUwMAALisodG8du0/rB17D2nX/sOR209HSEcofT057dm5TbmONp2dKSnX0aY9O7fR3QUAAERWHBpf0IIRofX15AjlAAAgNhY2vpCkbGuLCsWyBofHIpNpWEkHAABAosSh8QUhHQAAAIkSh8YXhHQAAAAkShwaXxDSAQAAkChxaHzBxlEAAAAkTtQbXxDSAQC4RkOjeQ0Oj2l8sqCuzqwGersj/Z8+gPig3AUAgGsQhz7LAOKLkA4AwDVY2GfZrHqbSZsGh8d8Tw1AEyCkAwBwDeLQZxlAfBHSAQC4BnHoswwgvgjpAABcgzj0WQYQX4R0AACuQRz6LAOIL1owNgFagAGAH1HvswwgvlhJjzlagAEAADQfVtJjbmELMEnKtraoUCxrcHis7tUdVuIBAACihZX0mAvbAoyVeAAAgOghpMdc2BZgHMYBAAAQPYT0mAvbAozDOAAAAKKHkB5zYVuAcRgHAABA9LBxtAmEaQE20Nut3QdHVCiW1Z5Ja6YUcBgHAACAZ6ykJxyHcQAAAEQPK+ngMA4AAICIYSUdAAAAiBhCOgAAABAxhHQAAAAgYgjpAAAAQMQQ0gEAAICIIaQDAAAAEUNIBwAAACKGPunQ0Gheg8NjGp8sqKszq4HebvqmAwAAeMRKesINjea1++CI8lOz2tieUX5qVrsPjmhoNO97agAAAInFSnrCDQ6PKZM2ZVurPwrZ1hYVimUNDo8lZjWdKwkAACBqCOkJNz5Z0Mb2zKKx9kxaE5MFTzNqrLkrCZm0LbqSsEeKTVDnRQYAAM2HcpeE6+rMaqYULBqbKQXa0pn1NKPGWnglwax6m0mbBofHfE+tLkOjeT144Kh+Mj6p187N6ifjk3rwwFHKlQAATW9oNK9d+w9rx95D2rX/cNP930dIT7iB3m6VAqdCsSznqrelwGmgt9v31BpifLKg9kx60VicriR85onndaZQkqtIaTO5inSmUNJnnnje99QAAFg1SdhTR0hPuL6enPbs3KZcR5vOzpSU62jTnp3bElMuEfcrCcdPF5QyKZUymZlSKVPKquMAADSruF8Jrwc16VBfTy4xofxSA73d2n1wRIViWe2ZtGZKQaKuJAAAEEdJ2FPndSXdzL5iZnkz+9mCsevM7G/N7KXabeeCjz1kZsfM7AUze8+C8Xea2U9rH9tnZlYbX2Nmf10bf8bMbm3k14foi/uVhO4b1qripIpzcnKqOKeKq44DANCs4n4lvB6+y10elfTeS8Y+LukHzrmtkn5Quy8zu0PSfZK21R7zRTObKyb+kqR+SVtrb3N/5gclTTrn3izpc5L2rtpXgtjq68npsf679N/+9F16rP+u2AR0SfrT9/aoM5uRSSoHFZmkzmxGf/reHt9TAwBg1SRhT53XkO6cG5b0+iXD75P01dr7X5X0BwvGv+Gcu+CcOy7pmKQ7zexmSeudc08755ykr13ymLk/64Ckd8+tsgPNoK8npz+/9+369Vs6dfOGdv36LZ3683vfHqsXGgAALFfcr4TXI4o16Tc6516VJOfcq2Y2993eLOnwgs+bqI2Vau9fOj73mPHan1U2s7OSrpd0avWmDzRWkvcUAACSq9n///Nd7rIcS62AuyuMX+kxi/9gs34zO2JmR06ePBliigAAAEB4UVxJf83Mbq6tot8saa7h5YSkrgWft0XSL2vjW5YYX/iYCTNrkbRBbyyvkXNuv6T9krR9+/Y3hHgAAIBmw4nV0RbFlfSDkj5Qe/8Dkv5mwfh9tY4tt6m6QfRHtdKYKTO7q1Zv/v5LHjP3Z90r6VCtbh0AACCxknAYUNz5bsH4mKSnJb3FzCbM7IOSPiPpd83sJUm/W7sv59yIpG9K+kdJ35X0EefcXO+dD0l6RNXNpP8k6Yna+F9Jut7Mjkn6t6p1igEAAEiyJBwGFHdey12cc7su86F3X+bzPy3p00uMH5H0a0uMz0r6wzBzBAAAaDZJOAwo7qJY7gIAAIBVlITDgOKOkI7Qhkbz2rX/sHbsPaRd+w9TzwYAQMQl4TCguCOkIxQ2ngAAED9JOAwo7qLYghExsnDjiSRlW1tUKJY1ODzGLzoAABHW7IcBxR0r6QhlfLKg9kx60RgbTwAAAMIhpCMUNp4AAACsPEI6QmHjCQAAwMojpCMUNp4AAACsPDaOIjQ2ngAAAKwsVtIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiGnxPQEAAIA42vfki3rkqeM6Xwy0tjWt+3fcpgfuud33tNAkCOkAAADLtO/JF/XwoWNKmdSSkmZKgR4+dEySCOpYEZS7AAAALNMjTx2vBfSUUpaq3VbHgZVASAcAAFim88VAKVs8lrLqOLASCOkAAADLtLY1rYpbPFZx1XFgJVCTDsTc0Gheg8NjGp8sqKszq4HebvX15HxPCwCa2v07btPDh46pXKkoZdWAXnHVcWAlsJIOxNjQaF67D44oPzWrje0Z5admtfvgiIZG876nBgBN7YF7btcfv+vNas+kVa5I7Zm0/vhdb2bTKFYMK+lAjA0OjymTNmVbq7/K2dYWFYplDQ6PsZoOAKvsgXtuJ5Rj1bCSDsTY+GRB7ZnF9Y/tmbQmJgueZgQAAFYCIR2Isa7OrGZKizsJzJQCbenMepoRAABYCYR0IMYGertVCpwKxbKcq96WAqeB3m7fUwOAyBsazWvX/sPasfeQdu0/zH4eRAohHYixvp6c9uzcplxHm87OlJTraNOenduoRweAq2DjPaKOjaNAzPX15AjlALBMbLxH1BHSAQBA4oxPFpQ2aezktIpBRa3plG5Y18rGe0QG5S4AACBxOta06JUzsypXnNIpU7ni9MqZWa1bw/olooGfRAAAkDjOudo7WnQ7Pw54xko6AABInOlioM0b29SSNgXOqSVt2ryxTeeLwdUfDDQAK+kAACBxujqzyk/NqnvTuvmxQrGsXEebx1kBF7GSDgBAQiW5TzjnTCDqCOkAACRQ0vuEc84Eoo5yFwAAEog+4ZwzgWgjpAMxNzSa1+DwmMYnC+rqzGqgt5v/dABc1fhkQRvbM4vG2jNp+oQDEVF3SDezX5W01Tn3pJm1S2pxzk2t3tQAXM3c5epM2hZdrt4jEdQTghdp4ST5+ze3cXJuJV2SZkqBtnRmPc4KwJy6atLN7H+VdEDSYG1oi6T/e7UmBaA+Cy9Xm1VvM2nT4PCY76mhAZJeUxxW0r9/bJwEoq3ejaMfkfTbks5JknPuJUnJWGoAImx8sqD2THrRGJerk4MXaeEk/fvHxkkg2uotd7ngnCuamSTJzFp08YwuAJ5wuTrZqCkOh+8fGyeBKKt3Jf3/NbM/k9RuZr8r6VuSvrN60wJQDy5XJ1tXZ1YzpcWnI/IirX58/wBEWb0h/eOSTkr6qaQBSY9L+t9Xa1IA6sPl6mTjRVo4fP8ARJk5d/WqFTNbK2nWORfU7qclrXHONd01we3bt7sjR474ngYA1GWuO8nEZEFbEtadZCXw/QPgk5k965zbvuTH6gzphyXd45ybrt1fJ+n7zrn/fkVnGgGEdGB5ktzCDgCAMK4U0ustd2mbC+iSVHufoj0g4ZLewg4AgNVSb0g/b2a/MXfHzN4paWZ1pgQgLpLewg4AgNVSbwvGP5H0LTP7Ze3+zZL+p9WZEoC4oIUdAACro66Q7pz7ezPrkfQWSSZp1DlXWtWZAYg8+rQDALA6rljuYmbvqt3+D5L+paTbJW2V9C9rYwASjBZ2AACsjqutpP+OpEOqBvRLOUn/dcVnBCA2+npy2iPRwg4AgBV2xZDunPs/zCwl6Qnn3DcbNCcAMXT1Zq4AAKBeV+3u4pyrSPqjBswFQMzQghEAgNVRb3eXvzWzByX9taTzc4POuddXZVYAYmFhC0ZJyra2qFAsa3B4rO6SFw5DAgDgjeoN6f+LqlezP3zJOLvDgAQL24JxbiU+k7ZFK/F7JIJ6nXiRAwDNqd6QfoeqAX2HqmH9v0n68mpNCkA8hG3BODg8plIQ6PR0WcWgotZ0SuvbW5a1Ep9kvMhBWLzIA6Kr3hNHvyrprZL2SfrL2vtfXa1JAYiHsC0YX8pP6dRUUeWKUzplKlecTk0V9VJ+apVn3hw48RVhsKcEiLZ6V9Lf4px7+4L7f2dmR1djQgDiI2wLxmK5IpmUMpMkmUkVc9VxXBUnviKMldhTAmD11BvSf2JmdznnDkuSmf2WpP9v9aYFIC76enLX/B96Jm2aKUmVipOZ5Gp9HFvTtoIzbF6c+IoweJEHRFu95S6/JemHZvaymb0s6WlJv2NmPzWz51ZtdgCa2u03rtf1a1vVkjYFzqklbbp+bau23rje99RigRNfEUZXZ1YzpWDRGC/ygOiodyX9vas6CwCJNNDbrd0HR3TThha1Z9KaKQWEzGXgxFeEMff7VyiW+f0DIsic45zAhbZv3+6OHDniexpAYsx1lyBkAo3H7x/gl5k965zbvuTHCOmLEdIBAADQCFcK6fXWpDdcrf79p2b2D2Z2pDZ2nZn9rZm9VLvtXPD5D5nZMTN7wczes2D8nbU/55iZ7TMzdqQBAAAg0iIb0mv+mXPuHQteYXxc0g+cc1sl/aB2X2Z2h6T7JG1TtX7+i2aWrj3mS5L6JW2tvVFfDwAAgEiLeki/1Pt08RClr0r6gwXj33DOXXDOHZd0TNKdZnazpPXOuaddta7nawseAwAAAERSlEO6k/R9M3vWzPprYzc6516VpNrt3O6WzZLGFzx2oja2ufb+peMAAABAZNXbgtGH33bO/dLMcpL+1sxGr/C5S9WZuyuML35w9UVAvyTdcsst1zJXAAAAYMVEdiXdOffL2m1e0rcl3SnptVoJi2q3+dqnT0jqWvDwLZJ+WRvfssT4pc+13zm33Tm3fdOmTSv9pQAAAADLEsmQbmZrzaxj7n1JvyfpZ5IOSvpA7dM+IOlvau8flHSfma0xs9tU3SD6o1pJzJSZ3VXr6vL+BY8BmsLQaF679h/Wjr2HtGv/YQ2N5q/+IAAAEGlRLXe5UdK3a90SWyT9F+fcd83s7yV908w+KOkXkv5QkpxzI2b2TUn/KKks6SPOubmzjj8k6VFJ7ZKeqL0BTWFoNK/dB0eUSZs2tmeUn5rV7oMj2iNxIAkAADHGYUaX4DAjxMmu/YeVn5pVtvXi6+1CsaxcR5se67/L48wAAMDVxPIwIwBXNz5ZUHsmvWisPZPWxGTB04wAAMBKIKQDMdbVmdVMKVg0NlMKtKUz62lGAABgJRDSgRgb6O1WKXAqFMtyrnpbCpwGert9Tw0AAIRASAdirK8npz07tynX0aazMyXlOtq0Z+c2No0CABBzUe3uAqBOfT05QjkAAE2GlXQAAAAgYgjpAAAAQMQQ0gEAAICIIaQDAAAAEUNIBwAAACKGkA4AAABEDC0YASTa0Gheg8NjGp8sqKszq4HeblpaAgC8YyUdQGINjea1++CI8lOz2tieUX5qVrsPjmhoNO97agCAhCOkA0isweExZdKmbGuLzKq3mbRpcHjM99QAAAlHSAeQWOOTBbVn0ovG2jNpTUwWPM0IAIAqQjqAxOrqzGqmFCwamykF2tKZ9TQjAACqCOkAEmugt1ulwKlQLMu56m0pcBro7fY9NQBAwhHSASRWX09Oe3ZuU66jTWdnSsp1tGnPzm10dwEAeEcLRgCJ1teTI5QD14gWpsDqYSUdAAAsGy1MgdVFSAcAAMtGC1NgdRHSAQDAstHCFFhd1KQDAIBl6+rM6uXT0zo3U1YxqKg1ndL69hbdev0631MDmgIr6QAAYNnu7r5O+amiikFFKZOKQUX5qaLu7r7O99SApkBIBwAAy/b02OvatK5VremUKk5qTae0aV2rnh573ffUgKZAuQsAAFi28cmCbli3Rps62ubHnHPUpAMrhJV0AACwbF2dWc2UgkVjM6VAWzqznmYENBdCOgAAWLaB3m6VAqdCsSznqrelwGmgt9v31ICmQEgHAADL1teT056d25TraNPZmZJyHW3as3MbJ44CK4SadAAAcE36enKEcmCVsJIOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiF5qz9MAACAASURBVCGkAwAAABFDn3QAsTY0mtfg8JjGJwvq6sxqoLebvs0AgNhjJR1AbA2N5rX74IjyU7Pa2J5RfmpWuw+OaGg073tqAACEQkgHEFuDw2PKpE3Z1haZVW8zadPg8JjvqQEAEAohHUBsjU8W1J5JLxprz6Q1MVnwNCMAAFYGIR1AbHV1ZjVTChaNzZQCbenMepoRAAArg5AOIJSh0bx27T+sHXsPadf+ww2tBx/o7VYpcCoUy3KuelsKnAZ6uxs2BwAAVgPdXYCQktxdZG7jZiZtizZu7pEa8j3o68lpj6q16ROTBW1J2PcfANC8COnwLs4h13dI9W3hxk1Jyra2qFAsa3B4rGFff19PLhHf68uJ8+8PAODyKHeBV3FvoZf07iJR2Ljps9zGt7j//gAALo+QDq/iHnKjEFJ98r1xM+khNe6/PwCAyyOkw6u4h1zfIdU33xs3kx5S4/77AwC4PEI6vIp7yPUdUn3r68lpz85tynW06exMSbmONu3Zua1hNdFJD6lx//0BAFweG0fh1UBvt3YfHFGhWFZ7Jq2ZUhCrkEt3Eb8bN7s6s8pPzc5vXJWSFVLj/vsDALg8Qjq8aoaQG/fuInHuDpL0kNoMvz8AgKWZc873HCJl+/bt7siRI76nATTEwhaSC0NuI0tWwpp7kUFIBZYvzi/SgWZgZs8657Yv9TFW0oEEi0Kf87AhIe5XMgBfkn7OAxB1bBwFEsz3xsukt1AEfEp6dyQg6gjpQIL57g5CSAD88f0iHcCVEdKBBPPdQpKQAPjj+0U6gCsjpAMxNzSa1679h7Vj7yHt2n94WaUivvucExIAf3y/SAdwZXR3uQTdXRAnce/OMjSa18cOHNXUbFnlSkUtqZQ62lr05/e+PRbzB+KO7kiAX3R3AZrU4PCYSkGg09NlFYOKWtMprW9vWVZ3Ft8t2JwkmWRmktXuA2gIuiMB0UVIB2LspfyUzhZKSqVM6ZSpXHE6NVVUKZiq6/G+W7ANDo9pQ3tGN29onx9rdAtIAACiiJp0IMaK5YpkUspMJlOqthpdLFfqerzv7ipsHAUAYGmEdCDGMmmTJFUqTs45VSrVYpHW2vjV+A7JbBwFAGBphHQgxm6/cb2uX9uqlrQpcE4tadP1a1u19cb1dT3ed0imuwQQzr4nX9TbPvk9venPHtfbPvk97XvyRd9TArBCCOlAjA30dqu1Ja2bNrTpLTd26KYNbWptSdcdcn2HZN8tIIE42/fki3r40DHNlAK1pKovsB8+dIygDjQJWjBeghaMiJuwLdRowQbE09s++b1aQL+43lauVNSeSeu5T77H48wA1IsWjEATC9tCjRZsQDydLwZKyelCOZBzkpmUtuo4gPgjpAPwynefdiCu1qRTKpQCzW0Td04qOSmboZIVaAaEdCDm4hxyffdpB+LsurUZFc4EbzgA7Lq1GS/zAbCyeLkNxNhcyM1PzS4KuUOjed9Tq4vvPu1ArJlp07qMUrWl9JRJm9Zlqqf3Aog9VtKBGFsYciUp29oSqxM7xycL2ti+eNWPw4zQSPuefFGPPHVc54uB1ramdf+O2/TAPbf7nlZdujqzyk/N6qYNF1umFopl5TraPM4KwEphJR2IMd+HEYXlu087ki3uLQx9t1AFsLoI6UCMRSHkDo3mtWv/Ye3Ye0i79h9eVqkNIQM+PfLUcaVMakmllLJU7bY6HgecMwA0N8pdgBgb6O3W7oMjKhTLas+kNVMKGhpyw2787OvJaY9En3ZcszAbp88XqyvoC6Vi1sKQFqpA8yKkAyH57K7iO+SuRE2875AR5+44SRf2ReLa1rTOXyjL6WKfcZO0dg3/NQLwj3+JgBCi0ELQZ8hdiY2fPkNyFP7+cO3Cvkh8d88mffsfXp2/P3cA97t7Nq3KfAFgORJRk25m7zWzF8zsmJl93Pd80DyS3kIwbE287xaSSf/7i7uwG6dPnCuqM9uyqIVhZ7ZFJ84VV3qqALBsTR/SzSwt6T9J+n1Jd0jaZWZ3+J0VmkXcu6uEFXbjp++QnPS/v7jr6szq9PkLGjs5rdET5zR2clqnz1+o+0Xi+GRBmzdmte1XNui/27xB235lgzZvzPL3DyASmj6kS7pT0jHn3JhzrijpG5Le53lOaBJR6K7iU9juEr5DctL//uLu7u7rlJ8qqhhUlDKpGFSUnyrq7u7r6no8f/8AoiwJIX2zpPEF9ydqY0v6+c9/ru985zuSpHK5rP7+fj3++OOSpNnZWfX39+v73/++JGl6elr9/f06dOiQJOnMmTPq7+/X8PCwJOnUqVPq7+/XD3/4Q0nSiRMn1N/fr2eeeaY6kYkJ9ff369lnn5Ukvfzyy+rv79fRo0clSceOHVN/f79GRkYkSS+88IL6+/v1wgsvSJJGRkbU39+vY8eOSZKOHj2q/v5+vfzyy5KkZ599Vv39/ZqYmJAkPfPMM+rv79eJEyckST/84Q/V39+vU6dOSZKGh4fV39+vM2fOSJIOHTqk/v5+TU9PS5K+//3vq7+/X7Ozs5Kkxx9/XP39/SqXy5Kk73znO+rv75//Xn7729/Whz/84fn73/rWt/TAAw/M33/sscf00Y9+dP7+17/+dX3sYx+bv//oo4/qoYcemr//yCOP6BOf+MT8/S9/+cv61Kc+NX//C1/4gj796U/P3//85z+vvXv3zt//7Gc/q89+9rPz9/fu3avPf/7z8/c//elP6wtf+ML8/U996lP68pe/PH//E5/4hB555JH5+w899JC2njkyv5L8+t99RZNHn5xfSf7oRz+qxx57bP7zH3jgAX3rW9+av//hD39Y3/72t+fv9/f3x/Jnr68np4//Vrve+k/f0L//vZvU15Or+2fv5jVlzZQCzY7/TKe/+5eqzE5rphRo45kXG/KzN3clYPLok3r9774yfyVg65kjkf/Ze/TRR+fvf+xjH9PXv/71+ftJ+dl7eux13XDhVa37+69I06fUmk7phpkJfevh3XX9uzfQ262Z8RHln9inYGZKhWJZMz9/TsHwIP/u1fCzx/+5c/jZW72fvctJQkhf6nxkt+gTzPrN7IiZHSmVSg2aFppBd27d/EpyKaho3ZqWhvcpHhrNq/9rR/ST8TP68++90LB67pXwb+66RaXA6UI5kJNUqLWQ/L07bmzI889dCVi3pkWloDJ/JaA7t64hz49wxicLyqQX/xOfSZsulCt1Pb6vJ6f/+c5b1JpO6dxs9aTOXb/ZpY3ZzNUfDACrzJxzV/+sGDOzuyV90jn3ntr9hyTJOffvl/r87du3uyNHjjRwhsC1W9idZGGf9DgdaDLX3YU+6Viu3//8sF7KTyudMplVu7MEFaetuXV64k96fU8PAK7KzJ51zm1f6mNJaMH495K2mtltkl6RdJ+kf+13SsDKWIk+5b757pOO+JpfZJpba3KXjANAjDV9SHfOlc3sjyR9T1Ja0leccyOepwWsiJXoU+4bhwnhWk0XA23e2KZT09XNo63plG5at2ZZJ4by8wcgqpo+pEuSc+5xSY/7ngew0ro6s8pPzc6vpEvx6k7BYUIIY+7nv3vTxT0EhWK1trweQ6N5PXjgqKYvlBVUnE5NX9CDB47qP977dn7+AHiXhI2jQNMK26fcN9990hFvA73dOjtT0kv5KY2eOKeX8lM6O1Oq++f/M088r1PTRc2WKioFTrOlik5NF/WZJ55f5ZkDwNUlYiUdiLIwl9v7enLaI4XaeOnzcn8zlOvAL5MkV6tDd7ZkO6/LGX1telnjANBIhHTAo5Uo9wiz8dJ3uUncy3WiIMk11YPDY1rfntFNG9rnx+K2cRoALodyF8CjlSj3GBrNa9f+w9qx95B27T+8rD7pvstN4l6uI4X7/q/Ec+8+OKL81OyiF1lx6pUfxvhkQeWgorGT0xo9cU5jJ6dVDipciQHQFAjpgEfjkwW1Z9KLxpZT7hE2pIV9/rDmDhPKdbTp7Exp/jChuKyC+g7Jvl9k+daxpkUTkzMqlAKVA6dCKdDE5IzWreEiMYD4418ywKOw5R6Dw2MqlgOdni7Pt6DraGup+3J/FMpN4twn3Xef+qTX9E/NFBUsbInupKA2Xo+ONSlNXXjj6aQda1i/AuAf/xIBHoUt93jxtXM6fb6ocuCUNlM5cDp9vqiXXjvXkOdPupW4EhGmXKarM6uZ0uKe4Emq6T95vvSGjaJWG6/HxuyaZY0DQCMR0gGPwpZ7lGrLiKmUycyUSlUjSzGo78TFuJeb+BY2JA+N5vWxA0f1k19M6sTZGf3kF5P62IGjdQf1lXiR5bOmPqygUtGlP+muNl6PE2dnlzUOAI1EuQvgWZhyj9aWlGaKgSrOyUxyTpKrjjfi+ZNuoLdbuw+OqFAsqz2T1kwpWFZI3vvdUU0WSkqnTC3plJyTJgsl7f3uaF1/J2FbcPru7jM3h2vtTpNOpVReIpCnU/X9/Jfd0i9mLzcOAI3ESjoQY1tzHbqho1UtKVNQcWpJmW7oaNXWXIfvqSVC2CsRY6fOK2VSykwmU8pMKauOL9e1xErfG0/DbrytVJb+qi83/gaX+7RlfDPjfCUCQLSxkg7E2NxK7k0bWq5pJRfh+bwSEXYl3PfG07Abb1Mpk1XcokxttfG6mJYO5HU+PApXIgA0L1bSgRijpjzebrs+q4qrrvw651SpOFVcdbweYVfCfW88Dbvxdl1rasma9HWt9f3XdrmqlnqrXXxfiQDQ3FhJB2KOmvL4+vjvv1X/22M/1vlioIqTUiatbU3r47//1roeH3YlfKC3Ww8eOKpXzswoqDilU6Z1a1r0iX9xx7K/lmsRtgXodHHpDaKXG19pvq9EAGhurKQDgEdtmbRa0ym1pKTWdEptl6wsX8lKrISbJDnJOSe5uis9VkTY7jQXykuH8cuNX+pyVTH1Vsv4vhIBoLkR0gHAk8HhMa1vz2jrjR16680btPXGDq1vz9RdLhE25IZ9/rDClmuZXbyde1s4fjW359Yt2Wf99ty6uh7POQMAVhPlLki8MC3ggDDClkuEbcEYhXKNMOVam9ev0cTZC2+oId+8vr7DiD7++2/VgweOavpCeVG5T73lRmG//wBwJYR0JBrdGeBT2JpsKVzIXYnn9+l//M1b9BdPvrTkeD36enL6j/e+PVTIZk8IgNVCSEeihW0BB4Qx0Nutjx04qlcmZ1SuVNSSSqmjrXEbNwd6u/XAYz/W9IKNq+ta0w17/rCeHntdN61fo6nZsopBRa3p6vfv6bHX9UCdfwYhG0BUEdKRaFG43I9kc5JkkplJdm2HEl2r5ybOzAd0Sao4aboY6LmJM7EIruOTBd2wbo02dbTNjznn+P0F0BTYOIpEozsDfBocHtOG9oy25jrUc9N6bc11aEMDN24+8tRxpVOm9kx6/i2dMj3y1PGGPH9Y/P4CaGaEdCQa3RngU9jDfMI6Xwze0G4wZdXxOOD3F0AzI6Qj0TixEz75Xgle25qeL3WZU3HV8Tjg9xdAM6MmHYnHxjH4MtDbrd0HR1QoltWeSWumFDR0Jfj+Hbfp4UPHVK5UlLJqQK+46nhc8PsLoFmxkg4AnvT15HTvb2zWyakLev7ElE5OXdC9v7G5YaHzgXtu1x+/681qz6RVrlRLbf74XW/WA/fc3pDnBwBcHivpSDwOM4IvQ6N5HfjxK9rUsUa31FbSD/z4Fb1ty8aGBnVCOQBEDyEdiRaFw4yS/iIhyV9/FPr0J/n7DwBRRrkLEm1hSDKr3mbS1rAWeEOjeT144Kh+Mj6p187N6ifjk3rwwFENjeYb8vy+zb1Iyk/NLnqRlJSv33d3l6R//wEgygjpSDTfIekzTzyvM4WSXEVKm8lVpDOFkj7zxPMNeX7ffL9I8q2rM6tT0xc0dnJaoyfOaezktE5NX2hYd5fB4TGVgkAnzs7qhdemdOLsrEpBkJjvPwBEGSEdiea7Bd7x0wVVKk4XgopmyxVdCCqqVJyOn07GiYm+XyT5dnf3dXrt3AWdL1a7upwvBnrt3AXd3X1dQ57/pfyUTk0VVa44pVOmcsXp1FRRL+WnGvL8AIDLI6Qj0XwfhlIqV1S5ZKxSG08C3y+SpGrJx679h7Vj7yHt2n+4oaUe33p2Qpe0KZerjdcrzPyL5YoqzqkUVHShVFEpqN4vJuTnDwCijJCORPN+GIotc7zJ+H6R5Lsme2JyRpJkdvFt4fjVhJ1/xVUU1HqjO1VvAyc5R0gHAN/o7oLE4zAUf/p6ctqjam30xGRBWxrcXcR3d5VLV9GvNn6psPMPLpPFWUgHAP8I6YBH69a06PyFspwk52qrqZLWrknOr6bPF0njkwVtbM8sGmtkTXx7JqWZUkXOvXG8HmHnX64s/XLgcuMAgMah3AXw6P4dt0lmSqdMrS3VW5nF6lj2sPY9+aLe9snv6U1/9rje9snvad+TLzbsuX3XxH/od94k08Xqprn3P/Q7b6rr8aG7w4RdygcArBpCOuBR0o9l3/fki3r40DHNlAK1pKoB+eFDxxoW1H3XxD9wz+366D1b1dHWonTK1NHWoo/es7Xuv/+7u6/TyemiikFFKZOKQUUnp4t1d4fJpJf+L+By41Hkc+MvAKym5FxTByIqyceyP/LUcaVMaklVQ2HKpHKlokeeOt6Q70lfT073TpzRI08d1/lioLWtad2/47Zlld+EPbEzzN//02OvK9fRqnMzZRWDilrTKa1vb9HTY6/rgToen0otvWSevsx41EThxGAAWC2EdCDm4nys+/lidQV9oZRVxxthaDSvAz9+RZs61uiWTFozpUAHfvyK3rZlY13fQ98hcXyyoOvXrtEN69rmx5xzddekpyyllFVqj7vYXcYsHivpvjf+AsBqise/xEATC3O53ncLwbDWtqZ16R7FiquON0LYE099n5gatqa+tSWltJky6ZTWZFLKpKv3Wy995RRRST8MC0Bzi8e/xECTChuyfYdEKdyLjPt33KaKq5a4VFyldquGbZwNG/LGJwsqB5VFGzfLQaVhITFsTf3WXIdu6GhVS8oUVJxaUqYbOlq1NdexyjNfGb43/gLAaiKkAx6FDdm+VxLDvsjwvXE2bMhb15rWK2dmVQ6c0mYqB06vnJlt2JWAsIdxDfR2K5NO66YNbXrLjR26aUObMul0wzbOhuV74y8ArCZq0pF4Pmu6w/a57urMKj81O1+TKzV2JXElaoJ9bpwd6O3W7oMjKhTLaq/VpC8n5Nl8Ebcu9lF0C8YbIEyfed+HSYUV9/kDwJUQ0pFovjf+dXVmdfzUtKZmL3bn6Ghr0W03rKvr8WFDZli+DwMKK2zIm7pQ1uaNbTpVa4PYmk7ppvVrNH2hvLoTX0FxP3E37vMHgMshpCPRfHeHuLv7Oj1z/PT85slSEGimFOhf33lLXY/3vZLoeyVfCn8lJEzIm/v6uzddfFFVKJaV62i7wqMAALg6QjoSzfdK8BM/OzFfKeF0sWriiZ+dqLsExOdKou+VfN9XQgZ6u/WxA0f1yuSMypWKWlLVKyGf+Bd3rPpzAwCaGxtHkWi+u0OMnTovs2p/apPm3x87db4hzx9W2I2LYUWhu42TJKvVoVvtPgAAIbGSjkTzvRJccU7lSm3PoVUPlCk7ySw+Uc/nSr7vKyGDw2Pa0J7RzRva58fidpjOvidffMOJq0k9ARcAooSQjkTzXdPdkjKVAlddfXWLx5MiTE2575p43y8Swtr35It6+NAxpUxqSVW/dw8fOiZJBHUA8IyQjsTzuRKcbU3rQrki5xbUpFvjTtz0LWxNue+a8JV4keCzBegjTx2vBfRq5WPKqgdLPfLUcUI6AHhGTTrg0e03rleuY42yrelabXVauY412nrjet9Ta4iVqCn3WRMe9jCdodG8HjxwVD8Zn9Rr52b1k/FJPXjg6LJObQ3jfDGQnNOFcqDZUqAL5er988Xg6g8GAKwqQjrg0UBvt1pbFp/42NoSnxMfwwp7YupcTfjWXId6blqvrbkObWjPNGzjaNiNs5954nmdKZTkKlLaTK4inSmU9Jknnq97DkOjee3af1g79h7Srv2HlxXw17SkVKpU90LM7YkoVarjAAC/KHcBPPJdE+9b2HKRKNSEhymXOn66oJRJqdoeBDPJVZyOn65v/mHLha5rb1GhGLxhT8R17fzXAAC+8S8x4FmST0wMW1Pe1ZnVy6endW7m4omt69tbdOv19Z3YGneDw2MqlgOdnl58Ym3d3WVSKW1al9Hp8yVVXLUm/fq1GVmKlXQA8I2QDsCrMDXld3dfpx+9/Hp1NdqkYlBRfqqoXb953SrNdmV137BWoyemVAwu1oCbpJ6b6nuR8eJr53RutqyUTGkzlQOn0+eLKgfn6nr83JWMmzZcvHLBiakAEA0slwDwJmxN+dNjr2vTula1plOqOKk1ndKmda16euz1VZ75RWFqwntuWveGFyVO9Yf0UlB9dCplMrP5spliUN9LnbAbXwEAq4eVdADehK0pH58s6IZ1a7Rpwcqvc65hNelha8J/MHpScy3xnavWpM+N16O1JaWZYqCKc9V6difJVcfrEYU9ET5bUAJAlBHSAXgTduPoSvQpD3Pi5sIWkpKUbW1Z1omj54uBMmlTyi6G6oqr1N0CcWuu4401+Wszy6rJ97knIuyLHABoZpS7AJ6FKZeIu7DlFmEfP3fi5kwpWHTi5r4nX6zr8WFbSK5tTatySWVKxdV/mNVAb7cy6cUtPDPp+LTwXIk++QDQrAjpQEhhQvbcSmJ+anbRSmJSgnrYPuNhH7/wxM2UpWq31fF6dHVmNVNavOq9nJX8+3fcpoqrnvJZcZXabXW8HmG/ft/CvsgBgGZGuQsQQtjL9WHLJZpB2HKLMI8/X6yuoC+UMtVdbjLQ263dB0dUKJbVnklrphQsayX/gXtu1/FT0zr43AmVAqd0yrTzbTfVXW4jhf/++awJX4lyJQBoVqykAyGEvVy/EiuJSS6XCStsuUnYleyh0bye/cVZ3Xp9Vr/2K+t16/VZPfuLsw37O/R9JYfuMgBweaykAyGE7U4SdiWRjXfh3L/jNj186JjKlYpSVg3oyyk3kcKtZPu+kuL7+aPQXQYAooqQDoQQNmSHLZfwHbLibiXKTcII+yIv7s8vJfvEXQC4EspdgBDCXq7v68np3t/YrJNTF/T8iSmdnLqge39jc92hhY134fguN+nqzOrU9AWNnZzW6IlzGjs5rVPTFxpWkx124ysAYPUQ0oEQVqIm+cCPX9GmjjV6600d2tSxRgd+/ErdIZGQFY7vFoB3d1+nk9NFFYNquU0xqOjkdFF3d1/XkOenJhwAootyFyAknzXJYctlks53ucfTY68r19G6+DCi9hY9Pfa6HmjA81MTDgDRRUgHPAobEvt6crp34swbTswkZNXHdwvA8cmCrl+7Rjesa5sfc85REw4AoNwF8ClsuUrYcpmk813uQbkSAOByCOmAR2FDou+a6rjr68npnbds0MunC/rZL8/p5dMFvfOWDQ1bWfb9IgEAEF2EdMCjsBtP6e4Szr4nX9TB504oZdKaFlPKpIPPndC+J19syPOH/fsHADQvatIBz8LUBPuuqY6CMMfaP/LUcaVMaklV1ytSJpUrFT3y1PGG9UqnJhwAsBRW0oEYS3q5RNhj7c8XA6Vs8VjKquONMjSa1679h7Vj7yHt2n+Y/QQAAEmEdCDWkl4uEbYmf21rWhW3eKziquONEPZFBgCgeVHuAsRcksslwrawvH/HbXr40DGVK9XDhCqu+nb/jttWY7pvELZPPgCgebGSDiC2wrYwfOCe23Xnr25UKXC6UHYqBU53/urGhtWjs/EXAHA5kQvpZvZJM3vFzP6h9vbPF3zsITM7ZmYvmNl7Foy/08x+WvvYPjOz2vgaM/vr2vgzZnZr478iAKslbE3+vidf1I9+fkaZtGlNiymTNv3o52ca1t2FPukAgMuJXEiv+Zxz7h21t8clyczukHSfpG2S3ivpi2Y2twT1JUn9krbW3t5bG/+gpEnn3JslfU7S3gZ+DQBWWdia/IXdXVKWqt1Wxxsh6Rt/AQCXF9WQvpT3SfqGc+6Cc+64pGOS7jSzmyWtd8497Zxzkr4m6Q8WPOartfcPSHr33Co7gObirv4pb+C7u0vSN/4CAC4vqhtH/8jM3i/piKR/55yblLRZ0uEFnzNRGyvV3r90XLXbcUlyzpXN7Kyk6yWdWt3pA2iEue4ombQt6o6yR6or6K5tTWumtDioN7K7i5Tsjb8AgMvzspJuZk+a2c+WeHufqqUrb5L0DkmvSvrs3MOW+KPcFcav9JhL59NvZkfM7MjJkyeX/fUA8CNsC8b7d9ymiqseYFRxldpt47q7SPRJBwAszctKunPunno+z8z+s6T/p3Z3QlLXgg9vkfTL2viWJcYXPmbCzFokbZD0+hLz2S9pvyRt3779Wq6aA/AgbAvGB+65XcdPTevgcydUCpzSKdPOt93UsO4uYa8EAACaV+Rq0ms15nP+laSf1d4/KOm+WseW21TdIPoj59yrkqbM7K5avfn7Jf3Ngsd8oPb+vZIO1erWATSBrs6sTp+/oLGT0xo9cU5jJ6d1+vyFurujDI3m9ewvzurW67P6tV9Zr1uvz+rZX5xt2Gp22CsBAIDmFcWa9P9gZu9QtSzlZUkDkuScGzGzb0r6R0llSR9xzs3t7vqQpEcltf//7d17cFxXfcDx70+rVSTHSuwQO4HYaTDN4GLKBBBpKambFsqrTHiUR9IBQsvDLTDQoQwtpeMEd9IpTMurpYwDhATKoxRIMTBQwgRXpISHnYSHiYGMEmoHiEiixHZkWdLq1z/2OkhGsle+kvZa+n5m1rt77p69Rz+fsX979NtzgS8WN4APAh+JiNtorqBfvEA/g6QF8MR1p/GtO+6lI5pf+BxtTDC4f5RLnnBaS/239g8wOt7gngPjjDYm6Kp10NvdOauLCW3fPcjW/gH2D/mXlQAAEh9JREFUDA2zduUyNm1c13Lfsr8JkCQtXpVL0jPzJUc5dgVwxTTtO4BHT9M+ArxgTgcozbEySd5Sd+PAvaxa3sX+kalJ9o0D9/K6Fvr/6K597BsZp4OgFsF4I7nngVHGG/taOn/ZcpW1K5cxuH/kwSuOgvukS5KaKlfuIi0lh5O8wf0jU5I8vzzYmj1Dw5y+/CTWrVrO+jNPYd2q5Zy+/KSWV6LHGs3qt46OICLoKLZ5GW20VhVXtlzFfdIlSTMxSZfayJrkcspesbOrswMSJjJJkolMyKK9BXuGhumpT92ucTblKu6TLkmaSeXKXaSlxJrkcjZtXMfmbbsYHh2np97c83w2K9Hnru7ljnsOsO/gL8tlTjm5zjkPWd5S/7koV3GfdEnSdFxJl9qo7ErwUld2JXrTxnXUazXOPLWbR57Ry5mndlOv1VpO8i1XkSTNF1fSpTYquxKscivRF65fzRaaZUd7h4ZZM8sv7pbtL0nSTMJtw6fq6+vLHTt2tHsYWkLe85Uf8YEbbueB0QYnd9V4xQUPX7CL6UiSpPaJiJ2Z2TfdMVfSpTbavnuQT910J6t6T+LsYiX9UzfdyWPWrHA1doH4IUmSVEUm6VJJZfY5n7y7C8Cyrk6GR8dndTEdHb/3fOVHvPv62+gI6Oxofh/g3dffBtByou4+95Kk+eAXR7Xkbd89yCVXfoML3nY9l1z5jVntUV52n/M9Q8OMNyamXNZ+vDHh7i4L5AM33F4k6B10REdx32xvhfvcS5Lmi0m6lrSySVbZfc6Xd9W4874Rxhv54BUv77xvhJO7asfurNIeGG1QXL/oQR3RbG+F+9xLkuaLSbqWtLJJVtmL2UQEmcnoxASHxicYnZggM4mIY3dWaSd31RhvJIfGG4yMNTg03mC8kS1/SCr79y9J0kxM0rWklU2yyu5z/osDh5oPmhe6LP6Y1K559eT1q2gkTBTxn0hoZLO9Fe5zL0maLybpWtLKJlllL2YzOj5BR0fQXa/RU6/RXa/R0RGMjk/M+mfR7P183ygrl3U+WPLSEbByWSc/3zfaUn8vZiRJmi8m6VrSyiZZZa94Wa8FE5mMjDU4ONYsuZjIpKtmuctC2DM0zFkrlrHhYafym2edyoaHncpZK5a1/JuUsn//kiTNxC0YtaTNxRUjy1zxctXykxh6YGxKW07A6ctPOq730+ysXbmMwf0jD26BCbMvVynz9y9J0kxM0rXktTPJigg6OoJaRxABmdCY8IujC2XTxnVs3raL4dFxeoqLSVmuIkmqAstdpDbaf2ics1Z009kRNCaSzo7grBXdHDg03u6hLQmWq0iSqsqVdKmNDpdbrFu1/MG24dFxVvd2t3FUS4vlKpKkKnIlXWojdweRJEnTcSVdaqO5+OLqUrd99yBb+wfYMzTMWuMnSVokTNKlNrPc4vht3z3I5m27qNeCFT11BvePsHnbLraAMZUkndAsd5F0wtraP0C9Fizr6iSieV+vBVv7B9o9NEmSSnElXWozyzWO356hYVb01Ke09dRrLV+MSJKkqjJJ15LXziTZco1y5uJiRJIkVZHlLlrSDifJg/tHpiTJ23cPLsj5Ldcox91xJEmLlUm6lrR2J8l7hobpqdemtFmu0TovRiRJWqwsd9GS1u6aZss1ynN3HEnSYuRKupa0tSuXcXCsMaVtIZNkyzUkSdJ0TNK1pLU7SbZcQ5IkTcdyFy1pVbjip+UakiTpSCbpWvJMkiVJUtVY7iJJkiRVjEm6JEmSVDEm6ZIkSVLFmKRLkiRJFWOSLkmSJFWMSbokSZJUMW7BKJW0ffcgW/sH2DM0zNo27LMuSZIWH5N0qYTtuwfZvG0X9VqwoqfO4P4RNm/bxRYwUV8i/JAmSZoPJulSCVv7Bxgdb3DPgXFGGxN01Tro7e5ka/+AidoCaWeS7Ic0SdJ8sSZdKuFHd+3jngdGGW8ktQjGG8k9D4zy47v2tXtoS8LhJHlw/8iUJHn77sEFOf/W/gHqtWBZVycRzft6LdjaP7Ag55ckLV4m6VIJY40EoKMjiAg6OgKA0aJd86vdSfKeoWF66rUpbT31GnuHhhfk/JKkxcskXSqhq7MDEiYySZKJTMiiXfOu3Uny2pXLODjWmNJ2cKzBmpXLFuT8kqTFy0xCKuHc1b2c3ttFZ0fQmEg6O4LTe7s4d3Vvu4e2JLQ7Sd60cR1jjWR4dJzM5v1YI9m0cd2CnF+StHiZpEslbNq4jnqtxpmndvPIM3o589Ru6rWaSdoCaXeSfOH61Wy5aAOre7u5/+AYq3u72XLRBr80KkkqLTKtnZ2sr68vd+zY0e5h6ARyeHeRvUPDrHELvgVn/CVJJ6qI2JmZfdMeM0mfyiRdkiRJC+FoSbrlLpIkSVLFmKRLkiRJFWOSLkmSJFWMSbokSZJUMSbpkiRJUsV0tnsA0onu8BaAe4aGWesWgJIkaQ6YpEslbN89yOZtu6jXghU9dQb3j7B52y62wIIl6n5IkCRp8bHcRSpha/8A9VqwrKuTiOZ9vRZs7R9YkPMf/pAwuH9kyoeE7bsHF+T8kiRpfpikSyXsGRqmp16b0tZTr7F3aHhBzt/uDwmSJGl+mKRLJaxduYyDY40pbQfHGqxZuWxBzt/uDwmSJGl+mKRLJWzauI6xRjI8Ok5m836skWzauG5Bzt/uDwmSJGl+mKRLJVy4fjVbLtrA6t5u7j84xurebrZctGHBvrjZ7g8JkiRpfri7i1TShetXt203lQvXr2YLzdr0vUPDrHF3F0mSFgWTdOkE184PCZIkaX5Y7iJJkiRVjEm6JEmSVDEm6ZIkSVLFmKRLkiRJFWOSLkmSJFWMSbokSZJUMSbpkiRJUsWYpEuSJEkVY5IuSZIkVYxJuiRJklQxJumSJElSxZikS5IkSRVjki5JkiRVjEm6JEmSVDFtSdIj4gURsSsiJiKi74hjb46I2yLihxHxtEntj4+I7xXH3hMRUbSfFBH/UbR/MyLOmdTn0oj4cXG7dKF+PkmSJKmMdq2kfx94HtA/uTEiHgVcDGwAng78W0TUisPvA14FnFvcnl60vxwYysxfB94JvK14r9OAy4DfAs4HLouIlfP4M0mSJElzoi1Jembempk/nObQs4FPZOahzLwduA04PyIeCpySmTdmZgIfBp4zqc81xeNPAU8uVtmfBlyXmfdm5hBwHb9M7CVJkqTKqlpN+lnAnknP9xZtZxWPj2yf0iczx4H7gYcc5b0kSZKkSuucrzeOiK8AZ05z6C2Z+dmZuk3TlkdpP94+U08a8SqapTScffbZMwxNkiRJWhjzlqRn5lOOo9teYO2k52uAnxbta6Zpn9xnb0R0AqcC9xbtFx7RZ/sMY70SuBKgr69v2kRekiRJWijzlqQfp23AxyLiHcDDaH5B9FuZ2YiI/RHx28A3gZcC/zKpz6XAjcDzgeszMyPiv4F/mPRl0acCbz7WAHbu3Hl3RPzkOMd/OnD3cfaV8SvL+JVj/MoxfuUYv3KMXznGr5wy8fu1mQ60JUmPiOfSTLJXAV+IiFsy82mZuSsiPgn8ABgHXpOZjaLbXwBXAz3AF4sbwAeBj0TEbTRX0C8GyMx7I+LvgW8Xr9uSmfcea2yZuarEz7UjM/uO/UpNx/iVY/zKMX7lGL9yjF85xq8c41fOfMWvLUl6Zl4LXDvDsSuAK6Zp3wE8epr2EeAFM7zXVcBVpQYrSZIkLbCq7e4iSZIkLXkm6XPrynYP4ARn/MoxfuUYv3KMXznGrxzjV47xK2de4hfNawNJkiRJqgpX0iVJkqSKMUk/ThFxVUQMRsT3J7VdHhF3RsQtxe2Z7RxjlUXE2oj4akTcGhG7IuL1RftpEXFdRPy4uF95rPdaio4SP+dgCyKiOyK+FRHfKeL31qLd+deCo8TP+deiiKhFxM0R8fniuXNvFqaJn3NvFiLijoj4XhGrHUWbc7BFM8Rvzueg5S7HKSI2AgeAD2fmo4u2y4EDmflP7RzbiSAiHgo8NDNvioheYCfwHOBlwL2Z+Y8R8TfAysz86zYOtZKOEr8X4hw8pogI4OTMPBARdeAG4PXA83D+HdNR4vd0nH8tiYg3AH3AKZn5rIh4O869lk0Tv8tx7rUsIu4A+jLz7kltzsEWzRC/y5njOehK+nHKzH6a+7LrOGTmzzLzpuLxfuBW4Czg2cA1xcuuoZl46ghHiZ9akE0Hiqf14pY4/1pylPipBRGxBvgj4AOTmp17LZohfirPOVgxJulz77UR8d2iHMZfFbUgIs4BHkvzarJnZObPoJmIAqvbN7ITwxHxA+dgS4pfl98CDALXZabzbxZmiB84/1rxLuBNwMSkNude66aLHzj3ZiOBL0fEzoh4VdHmHGzddPGDOZ6DJulz633AI4DzgJ8B/9ze4VRfRCwHPg38ZWbua/d4TjTTxM852KLMbGTmecAa4PyI+JWLpWlmM8TP+XcMEfEsYDAzd7Z7LCeio8TPuTc7T8rMxwHPAF5TlPCqddPFb87noEn6HMrMu4r/uCaA9wPnt3tMVVbUsn4a+GhmfqZovquotz5cdz3YrvFV3XTxcw7OXmbeB2ynWU/t/JulyfFz/rXkScBFRU3rJ4A/iIh/x7nXqmnj59ybncz8aXE/SPMK8OfjHGzZdPGbjzlokj6HDk/uwnOB78/02qWu+OLZB4FbM/Mdkw5tAy4tHl8KfHahx3YimCl+zsHWRMSqiFhRPO4BngLsxvnXkpni5/w7tsx8c2auycxzgIuB6zPzxTj3WjJT/Jx7rYuIk4sNB4iIk4Gn0oyXc7AFM8VvPuZgZ9k3WKoi4uPAhcDpEbEXuAy4MCLOo1mrdAewqW0DrL4nAS8BvlfUtQL8LfCPwCcj4uXA/wEvaNP4qm6m+F3iHGzJQ4FrIqJGc7Hik5n5+Yi4EedfK2aK30ecf8fNf/vKebtzr2VnANc213roBD6WmV+KiG/jHGzFTPGb83//3IJRkiRJqhjLXSRJkqSKMUmXJEmSKsYkXZIkSaoYk3RJkiSpYkzSJUmSpIoxSZekE1xEnBMRv7Inb0RsiYinHKPv5RHxxvkbnSTpeLhPuiQtUpm5ud1jkCQdH1fSJWlxqEXE+yNiV0R8OSJ6IuLqiHg+QEQ8MyJ2R8QNEfGeiPj8pL6PiojtETEQEa8rXv+mSY/fGRHXF4+fXFzGnoh4X0TsKM751knHrz38xhHxhxHxmSMHGxEvi4j/iojPRcTtEfHaiHhDRNwcEd+IiNOK122PiHdFxNcj4vsRcX7RvioirouImyJia0T8JCJOn5fISlIbmKRL0uJwLvDezNwA3Af88eEDEdENbAWekZkXAKuO6LseeBpwPnBZRNSBfuB3i+N9wPKi/QLga0X7WzKzD3gM8HsR8RjgeuA3IuLwOf4U+NAMY3408CfFea8AhjPzscCNwEsnve7kzPwd4NXAVUXbZTQvCf844Frg7GPER5JOKCbpkrQ43J6ZtxSPdwLnTDq2HhjIzNuL5x8/ou8XMvNQZt4NDNK87PVO4PER0Qscopk499FM3A8n6S+MiJuAm4ENwKOyeRnrjwAvjogVwBOBL84w5q9m5v7M/AVwP/C5ov17R4z/4wCZ2Q+cUrzvBcAnivYvAUNHiY0knXCsSZekxeHQpMcNoGfS85hl387MHIuIO2iuhH8d+C7w+8AjgFsj4uHAG4EnZOZQRFwNdBfv8SGaCfcI8J+ZOR4Rz6W5+g3wimnOOzHp+QRT/3/KI8abLfxMknRCcyVdkha/3cC6iDineP6iFvv100zE+2munv85cEuxWn4K8ABwf0ScATzjcKfM/CnwU+DvgKuLtmsz87zitmOW438RQERcANyfmfcDNwAvLNqfCqyc5XtKUqW5ki5Ji1xmHoyIVwNfioi7gW+12PVrwFuAGzPzgYgYKdrIzO9ExM3ALmAA+N8j+n4UWJWZP5iDH2EoIr5O84PBnxVtbwU+HhEvAv4H+Bmwfw7OJUmVEM0FEUnSYhYRyzPzQEQE8F7gx5n5znk8378CN2fmB0u+z3bgjUeuvkfESUCjKKV5IvC+zDyvzLkkqUpcSZekpeGVEXEp0EXzi55b5+tEEbGTZinMX83XOWju5vLJiOgARoFXzuO5JGnBuZIuSZIkVYxfHJUkSZIqxiRdkiRJqhiTdEmSJKliTNIlSZKkijFJlyRJkirGJF2SJEmqmP8HAvsGg6Jo3hMAAAAASUVORK5CYII=\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": 27,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"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": 29,
"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": 30,
"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": 31,
"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": 32,
"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": 33,
"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": 33,
"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": [
" 11 10 9 8 7\n",
"-1.243e-08 x + 4.722e-06 x - 0.0008028 x + 0.08056 x - 5.297 x\n",
" 6 5 4 3 2\n",
" + 239.5 x - 7588 x + 1.684e+05 x - 2.565e+06 x + 2.551e+07 x - 1.491e+08 x + 3.879e+08\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"f1 = np.polyfit(x, y, 11)\n",
"p1 = np.poly1d(f1)\n",
"print(p1)"
]
},
{
"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, 4)"
]
},
"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, 15)"
]
},
"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": 45,
"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, float64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, y, **fit_params).transform(X)\n"
]
},
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 45,
"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": 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/pipeline.py:331: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" Xt = transform.transform(Xt)\n"
]
},
{
"data": {
"text/plain": [
"array([13102.74784201, 13102.74784201, 18225.54572197, 10390.29636555])"
]
},
"execution_count": 46,
"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": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('lm_3', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"pipe_1 = Pipeline([('scale', StandardScaler()), ('lm_3', LinearRegression())])\n",
"pipe_1"
]
},
{
"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": 48,
"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": 49,
"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": 50,
"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": 51,
"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": 52,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.8093562806577457\n"
]
}
],
"source": [
"# fit the model \n",
"lm.fit(Z, df['price'])\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(Z, df['price']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we produce a prediction "
]
},
{
"cell_type": "code",
"execution_count": 53,
"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": 54,
"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: 11980366.87072649\n"
]
}
],
"source": [
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Y_predict_multifit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 3: Polynomial Fit</h3>"
]
},
{
"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": 55,
"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": 56,
"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": 57,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"20474146.426361218"
]
},
"execution_count": 57,
"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": 58,
"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": 59,
"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": 60,
"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": 60,
"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": 61,
"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": 61,
"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": 62,
"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 &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment