Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save patrickthoreson/0a02898d1f7ee9d78420ecacf10ff087 to your computer and use it in GitHub Desktop.
Save patrickthoreson/0a02898d1f7ee9d78420ecacf10ff087 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"http://cocl.us/DA0101EN_NotbookLink_Top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 4: Model Development</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some questions we want to ask in this module\n",
"<ul>\n",
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n",
" <li>do I know if I put a fair value on my car?</li>\n",
"</ul>\n",
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n",
"\n",
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/cognitive_class_DA0101EN_objectstorage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>hatchback</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# path of data \n",
"path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>1. Linear Regression and Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<p>One example of a Data Model that we will be using is</p>\n",
"<b>Simple Linear Regression</b>.\n",
"\n",
"<br>\n",
"<p>Simple Linear Regression is a method to help us understand the relationship between two variables:</p>\n",
"<ul>\n",
" <li>The predictor/independent variable (X)</li>\n",
" <li>The response/dependent variable (that we want to predict)(Y)</li>\n",
"</ul>\n",
"\n",
"<p>The result of Linear Regression is a <b>linear function</b> that predicts the response (dependent) variable as a function of the predictor (independent) variable.</p>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
" Y: Response \\ Variable\\\\\n",
" X: Predictor \\ Variables\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <b>Linear function:</b>\n",
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li>a refers to the <b>intercept</b> of the regression line0, in other words: the value of Y when X is 0</li>\n",
" <li>b refers to the <b>slope</b> of the regression line, in other words: the value with which Y changes when X increases by 1 unit</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Lets load the modules for linear regression</h4>"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Create the linear regression object</h4>"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm = LinearRegression()\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How could Highway-mpg help us predict car price?</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For this example, we want to look at how highway-mpg can help us predict car price.\n",
"Using simple linear regression, we will create a linear function with \"highway-mpg\" as the predictor variable and the \"price\" as the response variable."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"X = df[['highway-mpg']]\n",
"Y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using highway-mpg."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(X,Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can output a prediction "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n",
" 20345.17153508])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Yhat=lm.predict(X)\n",
"Yhat[0:5] "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the intercept (a)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"38423.305858157386"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the Slope (b)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([-821.73337832])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What is the final estimated linear model we get?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear model with the structure:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plugging in the actual values we get:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 a): </h1>\n",
"\n",
"<b>Create a linear regression object?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 21,
"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": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm1.fit(df[['engine-size']], df['price'])\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[['highway-mpg']], df[['price']])\n",
"lm1\n",
"\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 c):</h1>\n",
"\n",
"<b>Find the slope and intercept of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Slope</h4>"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([166.86001569])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm1.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"-7963.338906281049"
]
},
"execution_count": 24,
"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",
"y = -7963.338906281049 + 166.86001569 * x\n",
"<br>\n",
"price = -7963.338906281049 + 166.86001569 * 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": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using the four above-mentioned variables."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 18,
"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": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"-15806.624626329198"
]
},
"execution_count": 19,
"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": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])"
]
},
"execution_count": 20,
"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": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2.fit(df[['normalized-losses','highway-mpg']],df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm2 = LinearRegression()\n",
"lm2.fit(df[['normalized-losses' , 'highway-mpg']],df['price'])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #2 b): </h1>\n",
"<b>Find the coefficient of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 26,
"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": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# import the visualization package: seaborn\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Regression Plot</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When it comes to simple linear regression, an excellent way to visualize the fit of our model is by using <b>regression plots</b>.</p>\n",
"\n",
"<p>This plot will show a combination of a scattered data points (a <b>scatter plot</b>), as well as the fitted <b>linear regression</b> line going through the data. This will give us a reasonable estimate of the relationship between the two variables, the strength of the correlation, as well as the direction (positive or negative correlation).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's visualize Horsepower as potential predictor variable of price:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"text/plain": [
"(0, 48297.37996095088)"
]
},
"execution_count": 28,
"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": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 47422.919330307624)"
]
},
"execution_count": 29,
"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": [
"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": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.704692265058953"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df['highway-mpg'].corr(df['price'])"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.10161587407588138"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['peak-rpm'].corr(df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The variable \"peak-rpm\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"highway-mpg\" which is approximate -0.101616. You can verify it using the following command:\n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Residual Plot</h3>\n",
"\n",
"<p>A good way to visualize the variance of the data is to use a residual plot.</p>\n",
"\n",
"<p>What is a <b>residual</b>?</p>\n",
"\n",
"<p>The difference between the observed value (y) and the predicted value (Yhat) is called the residual (e). When we look at a regression plot, the residual is the distance from the data point to the fitted regression line.</p>\n",
"\n",
"<p>So what is a <b>residual plot</b>?</p>\n",
"\n",
"<p>A residual plot is a graph that shows the residuals on the vertical y-axis and the independent variable on the horizontal x-axis.</p>\n",
"\n",
"<p>What do we pay attention to when looking at a residual plot?</p>\n",
"\n",
"<p>We look at the spread of the residuals:</p>\n",
"\n",
"<p>- If the points in a residual plot are <b>randomly spread out around the x-axis</b>, then a <b>linear model is appropriate</b> for the data. Why is that? Randomly spread out residuals means that the variance is constant, and thus the linear model is a good fit for this data.</p>"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"scrolled": 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": 33,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"image/png": "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ShARkSyn0C4itZPKa7THNGwInTvXObT/7W/w4otw113Qu3f8r+vd2/e1v/MOfPe7dSpBRESynEK7iNROOsy0g2+RqUN7zL59fqWYgQN9L3tNjR4Nd97pr4d95plalyEiIllOoV1Eaic2057KPe3gQ/vKlbVePH3CBP/55Cc/gXq1/D/mT34CRUVw7bWwaVPtxhARkeym0C4itbNmDbRqBc2aRV1J1bp394urr1xZ45c659dk79ULRoyofQkNGsAjj8COHbWbrRcREVFoF5HaSfXlHmNiK8jUoq99+nT44AO45RZ/g9W66NUL7rgDJk2IYxLTAAAgAElEQVSC556r21giIpJ9FNpFpHbWrk2P0N69u9/Woq/97rv9Wxw7NjGl3Hqrv+nSNdfA1q2JGVNERLKDQruI1M6aNanfzw7QvLlP3jWcaX/nHZg1C266CRo1SkwpDRvCww/D5s1w222JGVNERLKDQruI1Nz+/bBhQ3rMtINvkalhaL/nHjjiCPj2txNbSmGh/yDw17/CG28kdmwREclcCu0iUnPr1vmrNNMptC9b5muOw9atvu/8yiuhZcvEl3PnndChA1x9da0XtRERkSyj0C4iNZcON1Yqq6AAPv/8y7qr8eyzPkxffHE45TRvDvff7y9yHT8+nHOIiEhmUWgXkZpLlzXaY2IXo8bZIjNhgr+R6oknhlfSyJEwapSfdS8uDu88IiKSGRTaRaTm0nGmHeIK7evWwauvwrhxdV/msTp//CPUr+/bZOLs3BERkSyl0C4iNbd2LTRt6m+ulA7atoXWreNa9vHpp32AHjcu/LI6dIDf/hZefhkefzz884mISPpSaBeRmovdWCnsqehEMfMtMnHMtE+YAH37fjk5H7ZrroGBA+H734f165NzThERST8K7SJSc+myRntZcSz7uGoVvPVWcmbZY+rVg4cegi++gOuuS955RUQkvSi0i0jNxWba00lBAWzcWOWtSCdO9NtE3QE1Xt26wc9/DlOmwOTJyT23iIikB4V2EamZ0lL49NP0C+2xFWSq6GufMMG3qnTqlKSayvjhD/1qNd/5Dnz0UfLPLyIiqU2hXURqZvNmOHAAjj026kpqppoVZFas8OumX3RREmsqo2FDP9NfUgIXXgj79kVTh4iIpCaFdhGpmXXr/DbdQnteHjRuXOlM+0sv+e255yavpPI6d4aH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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"\n",
"\n",
"ax1 = sns.distplot(df['price'], hist=False, color=\"r\", label=\"Actual Value\")\n",
"sns.distplot(Yhat, hist=False, color=\"b\", label=\"Fitted Values\" , ax=ax1)\n",
"\n",
"\n",
"plt.title('Actual vs Fitted Values for Price')\n",
"plt.xlabel('Price (in dollars)')\n",
"plt.ylabel('Proportion of Cars')\n",
"\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see that the fitted values are reasonably close to the actual values, since the two distributions overlap a bit. However, there is definitely some room for improvement.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 3: Polynomial Regression and Pipelines</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><b>Polynomial regression</b> is a particular case of the general linear regression model or multiple linear regression models.</p> \n",
"<p>We get non-linear relationships by squaring or setting higher-order terms of the predictor variables.</p>\n",
"\n",
"<p>There are different orders of polynomial regression:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center><b>Quadratic - 2nd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 \n",
"$$\n",
"\n",
"\n",
"<center><b>Cubic - 3rd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 +b_3 X^3\\\\\n",
"$$\n",
"\n",
"\n",
"<center><b>Higher order</b>:</center>\n",
"$$\n",
"Y = a + b_1 X^2 +b_2 X^2 +b_3 X^3 ....\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We saw earlier that a linear model did not provide the best fit while using highway-mpg as the predictor variable. Let's see if we can try fitting a polynomial model to the data instead.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We will use the following function to plot the data:</p>"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def PlotPolly(model, independent_variable, dependent_variabble, Name):\n",
" x_new = np.linspace(15, 55, 100)\n",
" y_new = model(x_new)\n",
"\n",
" plt.plot(independent_variable, dependent_variabble, '.', x_new, y_new, '-')\n",
" plt.title('Polynomial Fit with Matplotlib for Price ~ Length')\n",
" ax = plt.gca()\n",
" ax.set_facecolor((0.898, 0.898, 0.898))\n",
" fig = plt.gcf()\n",
" plt.xlabel(Name)\n",
" plt.ylabel('Price of Cars')\n",
"\n",
" plt.show()\n",
" plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets get the variables"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = df['highway-mpg']\n",
"y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's fit the polynomial using the function <b>polyfit</b>, then use the function <b>poly1d</b> to display the polynomial function."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3 2\n",
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\n"
]
}
],
"source": [
"# Here we use a polynomial of the 3rd order (cubic) \n",
"f = np.polyfit(x, y, 3)\n",
"p = np.poly1d(f)\n",
"print(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's plot the function "
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PlotPolly(p, x, y, 'highway-mpg')"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])"
]
},
"execution_count": 39,
"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": 40,
"metadata": {
"collapsed": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.24263280e-08, 4.72184468e-06, -8.02842754e-04, 8.05639565e-02,\n",
" -5.29740489e+00, 2.39470103e+02, -7.58845012e+03, 1.68447089e+05,\n",
" -2.56530896e+06, 2.55140360e+07, -1.49106807e+08, 3.87929664e+08])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"np.polyfit(x, y, 11)"
]
},
{
"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": 41,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.preprocessing import PolynomialFeatures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create a <b>PolynomialFeatures</b> object of degree 2: "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"pr"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"Z_pr=pr.fit_transform(Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original data is of 201 samples and 4 features "
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 4)"
]
},
"execution_count": 44,
"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": 45,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 15)"
]
},
"execution_count": 45,
"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": 46,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create the pipeline, by creating a list of tuples including the name of the model or estimator and its corresponding constructor."
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Input=[('scale',StandardScaler()), ('polynomial', PolynomialFeatures(include_bias=False)), ('model',LinearRegression())]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we input the list as an argument to the pipeline constructor "
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 48,
"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": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, y, **fit_params).transform(X)\n"
]
},
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 49,
"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": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" Xt = transform.transform(Xt)\n"
]
},
{
"data": {
"text/plain": [
"array([13102.74784201, 13102.74784201, 18225.54572197, 10390.29636555])"
]
},
"execution_count": 50,
"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": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler\n",
"Input2=[('scale',StandardScaler()), ('model',LinearRegression())]\n",
"pipe2=Pipeline(Input2)\n",
"pipe2 "
]
},
{
"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": 59,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.4965911884339175\n"
]
}
],
"source": [
"#highway_mpg_fit\n",
"lm.fit(X, Y)\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(X, Y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The output of the first four predicted value is: [16236.50464347 16236.50464347 17058.23802179 13771.3045085 ]\n"
]
}
],
"source": [
"Yhat=lm.predict(X)\n",
"print('The output of the first four predicted value is: ', Yhat[0:4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets import the function <b>mean_squared_error</b> from the module <b>metrics</b>"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.metrics import mean_squared_error"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value is: 31635042.944639895\n",
"The MSE of the observed price and the predicted price is: 159772152232423.97\n"
]
}
],
"source": [
"mse = mean_squared_error(df['price'], Yhat)\n",
"print('The mean square error of price and predicted value is: ', mse)\n",
"price_observed = df['price']\n",
"price_predicted = lm.predict(df[['price']])\n",
"print('The MSE of the observed price and the predicted price is: ', mean_squared_error(price_observed, price_predicted))"
]
},
{
"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": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.frame.DataFrame"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(df[['price']])"
]
},
{
"cell_type": "code",
"execution_count": 76,
"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>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>13495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13950.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>17450.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" price\n",
"0 13495.0\n",
"1 16500.0\n",
"2 16500.0\n",
"3 13950.0\n",
"4 17450.0"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['price']].head()"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(df['price'])"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 13495.0\n",
"1 16500.0\n",
"2 16500.0\n",
"3 13950.0\n",
"4 17450.0\n",
"Name: price, dtype: float64"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['price'].head()"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.8093562806577458\n"
]
}
],
"source": [
"# fit the model \n",
"lm.fit(Z, df['price'])\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(Z, df['price']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we produce a prediction "
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"collapsed": 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": 81,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value using multifit is: 11980366.870726489\n"
]
}
],
"source": [
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Y_predict_multifit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 3: Polynomial Fit</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": 82,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.metrics import r2_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We apply the function to get the value of r^2"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square value is: 0.6741946663906517\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": 84,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"20474146.426361226"
]
},
"execution_count": 84,
"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": 85,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a new input "
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {
"collapsed": 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": 87,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 87,
"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": 88,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([37601.57247984, 36779.83910151, 35958.10572319, 35136.37234487,\n",
" 34314.63896655])"
]
},
"execution_count": 88,
"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": 89,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAD8CAYAAACPWyg8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xd8VvX5//HXlYSNLAmIDEGJgyHrFpARWmU6ABUrahUndSAjfmsdba1VW60tARRQwAFWxYWCA0NQS9gQRLZAQIQIQhQEXCBw/f64D7/exWAMSbiTO+/n43E/cp/rfM65r+PBXDnjvo65OyIiIvkRF+0ERESk5FHxEBGRfFPxEBGRfFPxEBGRfFPxEBGRfFPxEBGRfFPxEBGRfFPxEBGRfFPxEBGRfEuIdgJFpWbNmt6wYcNopyEiUqIsWbLkS3dPzGtcoRUPM4sHMoHP3f0iM2sETAZqAB8B17j7fjMrB0wC2gBfAVe4+6ZgHfcANwIHgcHunhbEewIjgXhggrs/klc+DRs2JDMzs7A2T0SkVDCzz37JuMI8bTUEWBMx/SiQ6u5JwC7CRYHg5y53bwykBuMwsyZAf6Ap0BMYY2bxQVEaDfQCmgBXBmNFRCRKCqV4mFk94EJgQjBtwHnAa8GQiUDf4H2fYJpg/vnB+D7AZHff5+6fAllA2+CV5e4b3X0/4aOZPoWRt4iIHJvCOvIYAdwFHAqmTwS+dvcDwXQ2UDd4XxfYAhDM3x2M///xI5Y5WvwnzGygmWWaWWZOTk5Bt0lERI6iwMXDzC4Cdrj7kshwLkM9j3n5jf806D7O3UPuHkpMzPN6j4iIHKPCuGDeEehtZhcA5YEqhI9EqplZQnB0UQ/YGozPBuoD2WaWAFQFdkbED4tc5mhxERGJggIfebj7Pe5ez90bEr7g/YG7Xw18CPQLhg0ApgbvpwXTBPM/8PATqaYB/c2sXHCnVhKwCFgMJJlZIzMrG3zGtILmLSIix64ov+fxB2CymT0ELAWeDuJPA8+bWRbhI47+AO6+ysxeAVYDB4Db3f0ggJkNAtII36r7jLuvKsK8RUQkDxarj6ENhUJ+LN/zWLDxK1Zt3cN1HRoSH5fb5RYRkdhlZkvcPZTXOLUnOcI7y7fx4Nur6ffkPNZv3xvtdEREiiUVjyP8tU9TRlzRkk1ffsuFo+Yw6v317D9wKO8FRURKERWPI5gZfVvVJT2lC92b1mZ4+jp6PzGH5dlfRzs1EZFiQ8XjKGpWLscTV7Vm/LUhdn23n76j5/L3d9fw/f6D0U5NRCTqVDzy0K1JbdJTunDFOfV5KmMjvUZmMH/DV9FOS0QkqlQ8foEq5cvw90vP5sWb2nHI4crxC7j3jRXs+eHHaKcmIhIVKh750KFxTdKGJnNTp0ZMXrSZ7sMz+OCT7dFOS0TkuFPxyKcKZeP540VNeP3WDlSpkMANz2UyZPJSvvpmX7RTExE5blQ8jlGrBtV5+47ODDk/iXdXbKNbagbTlm0lVr90KSISScWjAMomxDGs2+m8fUdn6teoyOCXlnLzpEy+2P1DtFMTESlSKh6F4IyTTmDKrR3444VnMSfrS7oNn8VLizbrKEREYpaKRyGJjzNu6nwqaUOTaVa3KvdMWcFV4xfy2VffRjs1EZFCp+JRyE45sRIv3tyOv1/anJWf76bHiAwmzN7IwUM6ChGR2KHiUQTMjCvbNiA9pQudGtfkoXfWcOnYeaz9Qo0WRSQ2qHgUoZOqlmf8tSFGXdmKLTu/46LHZ5Oavk6NFkWkxCuMZ5iXN7NFZrbMzFaZ2QNBvJGZLTSz9Wb2cvAUQIInBb5sZlnB/IYR67oniK81sx4R8Z5BLMvM7i5ozseTmdG7xcnMTOnChc3rMPL99Vz0+GyWbt4V7dRERI5ZYRx57APOc/cWQEugp5m1Bx4FUt09CdgF3BiMvxHY5e6NgdRgHGbWhPBTBZsCPYExZhZvZvHAaKAX0AS4MhhbotSoVJYR/VvxzHUh9v5wgMvGzuOht1er0aKIlEiF8Qxzd/dvgskywcuB84DXgvhEoG/wvk8wTTD/fDOzID7Z3fe5+6dAFtA2eGW5+0Z33w9MDsaWSOedWZsZw5K5sm0DJsz5lB4jMpi34ctopyUiki+Fcs0jOEL4GNgBpAMbgK/d/UAwJBuoG7yvC2wBCObvBk6MjB+xzNHiJdYJ5cvw8CXNmTywPXEGV41fyD1T1GhRREqOQike7n7Q3VsC9QgfKZyV27DgZ24PBvdjiP+EmQ00s0wzy8zJyck78Shrf+qJTB+SzO+ST+XlxZvpNnwW6avVaFFEir9CvdvK3b8G/gO0B6qZWUIwqx6wNXifDdQHCOZXBXZGxo9Y5mjx3D5/nLuH3D2UmJhYGJtU5CqUjeeeC87izds7Ur1iWW6elMkdLy3lSzVaFJFirDDutko0s2rB+wpAV2AN8CHQLxg2AJgavJ8WTBPM/8DDfTymAf2Du7EaAUnAImAxkBTcvVWW8EX1aQXNu7g5u141pg3qxJ3dTidt5Rd0Gz6LN5d+rhYnIlIsFcaRRx3gQzNbTvgXfbq7vw38AUgxsyzC1zSeDsY/DZwYxFOAuwHcfRXwCrAaeA+4PTgddgAYBKQRLkqvBGNjTtmEOO44P4l3BneiYc1KDH35Y26cmMnWr7+PdmoiIv/DYvUv21Ao5JmZmdFO45gdPORMnLeJx9LWEh9n3N3rTK5q24C4uNwuAYmIFA4zW+LuobzG6RvmxVR8nHFDp0akDU2mRf2q/PHNlVw5fgGffqlGiyISfSoexVyDEyvy7xvb8ehlzVm9bQ89R2Tw5KwNHDioFiciEj0qHiWAmXHFOQ2YmdKFLqcn8sj0T7hkzDxWb90T7dREpJRS8ShBalcpz1PXtGH0Va3Ztvt7ej8xh3/NWMu+A2pxIiLHl4pHCWNmXHh2HdKHdaF3i5N5/IMsLhw1hyWfqdGiiBw/Kh4lVPVKZRl+RUuevf4cvtt3gH5PzuOBt1bx3f4DeS8sIlJAKh4l3K/PqMWMlC5c0/4Unp27ie6pGcxZr0aLIlK0VDxiQOVyCfy1TzNe+d25lI2P47dPL+Su15ax+zs1WhSRoqHiEUPaNqrBu0M6c+uvTuP1jz6na+os3lv5RbTTEpEYpOIRY8qXiecPPc9k6u0dSaxcjlv+vYTbX/iInL1qtCgihUfFI0Y1q1uVqYM68vseZ5C+ejvdUmcx5aNsNVoUkUKh4hHDysTHcfuvG/PukM6clliZlFeWcd2zi/lcjRZFpIBUPEqBxrUq8+rvzuWB3k1ZvGkn3YfPYtL8TRw6pKMQETk2Kh6lRFycMaBDQ9KGJtP6lOr8eeoqrhg3nw053+S9sIjIEVQ8Spn6NSoy6Ya2/PPyFqzb/g29Rs5mzH+y+FGNFkUkH1Q8SiEzo1+beqSnJHP+mbX4x3tr6Tt6Lis/3x3t1ESkhCiMx9DWN7MPzWyNma0ysyFBvIaZpZvZ+uBn9SBuZjbKzLLMbLmZtY5Y14Bg/HozGxARb2NmK4JlRpmZnohUCGqdUJ6xv23D2Ktbs33PPvqMnstjaZ/ww49qtCgiP68wjjwOAHe6+1lAe+B2M2tC+PGy77t7EvB+MA3Qi/DzyZOAgcBYCBcb4H6gHdAWuP9wwQnGDIxYrmch5C2BXs3rMDMlmUta1WX0hxu4YNRsMjftjHZaIlKMFbh4uPs2d/8oeL+X8HPG6wJ9gInBsIlA3+B9H2CShy0AqplZHaAH4eef73T3XUA60DOYV8Xd53v4SwqTItYlhaRaxbL88/IWTLqhLft+PMTlT83nL9NW8e0+NVoUkZ8q1GseZtYQaAUsBGq7+zYIFxigVjCsLrAlYrHsIPZz8exc4rl9/kAzyzSzzJycnIJuTqmUfHoiM4YlM+DchkycH260OGud/luKyP8qtOJhZpWB14Gh7v5zj7jL7XqFH0P8p0H3ce4ecvdQYmJiXinLUVQql8Bfejfl1d+dS7kycQx4ZhF3vrKMr7/bH+3URKSYKJTiYWZlCBeOF9x9ShDeHpxyIvi5I4hnA/UjFq8HbM0jXi+XuBSxUMMavDu4M7f/+jTe/Phzug7PYPqKbdFOS0SKgcK428qAp4E17j48YtY04PAdUwOAqRHxa4O7rtoDu4PTWmlAdzOrHlwo7w6kBfP2mln74LOujViXFLHyZeL5fY8zmTaoI7WrlOPWFz7ilueXsGPvD9FOTUSiyAraKM/MOgGzgRXA4W+a3Uv4uscrQANgM3C5u+8MCsAThO+Y+g643t0zg3XdECwL8LC7PxvEQ8BzQAVgOnCH55F4KBTyzMzMAm2b/K8DBw8xbvZGRsxcT/mEOP50URP6tamH7pwWiR1mtsTdQ3mOi9UuqyoeRWdDzjfc8/oKFm3aSeekmvztkubUr1Ex2mmJSCH4pcVD3zCXfDstsTKTB7bnwT5N+eizXfQYkcFzcz9Vo0WRUkTFQ45JXJxxzbkNSRuWzDkNa/CXt1Zz+VPzydqxN9qpichxoOIhBVKvekWeu/4c/nV5CzbkfMMFI+cw+kM1WhSJdSoeUmBmxmVt6pE+rAvdmtbmsbS19H5iLiuy1WhRJFapeEihSTyhHKOvas1T17Thq2/20XfMXB6ZrkaLIrFIxUMKXY+mJ5E+rAv9WtfjyVkb6DVyNgs3fhXttESkEKl4SJGoWrEMj/Y7mxduaseBQ4e4YtwC/vTmSvb+8GO0UxORQqDiIUWqY+OapA1N5oaOjfj3ws/okZrBh2t35L2giBRrKh5S5CqWTeDPFzfh9Vs7UKlcAtc/u5iUlz9m17dqtChSUql4yHHTukF13h7cicHnJzFt2Va6Dp/F28u3EqtdDkRimYqHHFflEuJJ6XY6b93RibrVKzDoxaUMfH4J2/eo0aJISaLiIVFxVp0qTLm1A/decCYZ63LoOnwWkxdt1lGISAmh4iFRkxAfx8Dk00gbmkyTOlW4e8oKrp6wkM1ffRft1EQkDyoeEnUNa1bipZvb8/AlzVievZseIzJ4es6nHFSjRZFiS8VDioW4OOPqdqeQnpLMuaedyINvr+aysfNYt12NFkWKo8J6DO0zZrbDzFZGxGqYWbqZrQ9+Vg/iZmajzCzLzJabWeuIZQYE49eb2YCIeBszWxEsM8r09KGYVadqBZ4eEGJk/5Z89tW3XDhqNiNnrmf/ATVaFClOCuvI4znCTwaMdDfwvrsnAe8H0wC9gKTgNRAYC+FiA9wPtAPaAvcfLjjBmIERyx35WRJDzIw+LesyM6ULPZvVIXXmOno/MYdlW76OdmoiEiiU4uHuGcDOI8J9gInB+4lA34j4JA9bAFQzszpADyDd3Xe6+y4gHegZzKvi7vODR89OiliXxLATK5fj8StbMeHaELu+288lY+byt3fX8P1+NVoUibaivOZR2923AQQ/awXxusCWiHHZQezn4tm5xKWU6NqkNukpXbjinPqMy9hIr5EZLFCjRZGoisYF89yuV/gxxH+6YrOBZpZpZpk5OTkFSFGKmyrly/D3S8/mxZvaccih/7gF3PvGCvao0aJIVBRl8dgenHIi+Hm4G142UD9iXD1gax7xernEf8Ldx7l7yN1DiYmJhbIRUrx0CBot3ty5EZMXbab78Aw++GR7tNMSKXWKsnhMAw7fMTUAmBoRvza466o9sDs4rZUGdDez6sGF8u5AWjBvr5m1D+6yujZiXVIKVSgbz30XNmHKbR2pWqEMNzyXyeCXlvLVN/uinZpIqVFYt+q+BMwHzjCzbDO7EXgE6GZm64FuwTTAu8BGIAsYD9wG4O47gQeBxcHrr0EM4FZgQrDMBmB6YeQtJVvL+tV4645ODO2axPSV2+iWmsG0ZWq0KHI8WKz+jxYKhTwzMzPaachxsvaLvdz1+nKWbfmarmfV4qG+zTmpavlopyVS4pjZEncP5TVO3zCXmHDGSScw5dYO/PHCs5iT9SXdhs/iJTVaFCkyKh4SM+LjjJs6n0ra0GSa1a3KPVNWcNX4hWz68ttopyYSc1Q8JOaccmIlXry5HX+/tDkrP99Nz5EZjM/YqEaLIoVIxUNikplxZdsGpKd0oVPjRB5+dw2XjpnLJ1/siXZqIjFBxUNi2klVyzP+2jY8fmUrsnd9z8WPzyE1fZ0aLYoUkIqHxDwz4+IWJ5Oe0oULm9dh5Pvruejx2XysRosix0zFQ0qNGpXKMqJ/K565LsTeHw5w6Zi5PPT2ar7bfyDaqYmUOCoeUuqcd2ZtZgxL5sq2DZgw51N6jpjN3Kwvo52WSImi4iGl0gnly/DwJc2ZPLA9cQZXT1jI3a8vZ/f3arQo8kuoeEip1v7UE3lvaDK/Sz6VVzK30D11Fumr1WhRJC8qHlLqlS8Tzz0XnMWbt3ekesWy3Dwpk0EvfsSXarQoclQqHiKBs+tVY9qgTtzZ7XRmrNpO1+GzeGNptlqciORCxUMkQtmEOO44P4l3BneiUc1KDHt5GTc8t5itX38f7dREihUVD5FcJNU+gddu6cD9FzdhwcaddE/N4PkFn3FILU5EABUPkaOKjzOu79iIGcOSaVm/Gn96cyX9xy/gUzVaFFHxEMlL/RoVef7GtvzjsrNZs20PPUdk8OSsDRw4qBYnUnqVmOJhZj3NbK2ZZZnZ3dHOR0oXM+M359RnZkoXupyeyCPTP+GSMfNYvVWNFqV0KhHFw8zigdFAL6AJcKWZNYluVlIa1a5SnqeuacOYq1uzbff39H5iDv+asZZ9Bw5GOzWR46pEFA+gLZDl7hvdfT8wGegT5ZyklDIzLmheh/RhXejd8mQe/yCLC0fNYclnu6KdmshxU1KKR11gS8R0dhATiZrqlcoy/Dctee76c/h+/0H6PTmPv0xbxbf71GhRYl9JKR6WS+wn90ya2UAzyzSzzJycnOOQlgj86oxapA1L5pr2p/DcvE30GJHB7PX69yexraQUj2ygfsR0PWDrkYPcfZy7h9w9lJiYeNySE6lcLoG/9mnGq7ecS9n4OK55ehF3vbaM3d+p0aLEppJSPBYDSWbWyMzKAv2BaVHOSeQnzmlYg3eHdObWX53G6x99TtfUWby38otopyVS6EpE8XD3A8AgIA1YA7zi7quim5VI7sqXiecPPc9k6u0dSaxcjlv+vYTbXljCjr0/RDs1kUJjsdr0LRQKeWZmZrTTkFLux4OHGJexkZHvr6dCmXj+fFETLm1dF7PcLuOJRJ+ZLXH3UF7jSsSRh0hJVSY+jtt/3Zh3B3emca3K3PnqMgY8u5jsXd9FOzWRAlHxEDkOGteqzKu/O5e/XNyEzE076ZGawaT5m9RoUUosFQ+R4yQuzriuYyPShibT+pTq/HnqKq4YN58NOd9EOzWRfFPxEDnO6teoyKQb2vLPy1uwbvs39Bo5mzH/yeJHNVqUEkTFQyQKzIx+beqRnpJM17Nq8Y/31tJ39FxWfr472qmJ/CIqHiJRVOuE8oy5ug1P/rY1O/buo8/ouTyW9gk//KhGi1K8qXiIFAM9m9Vh5rAuXNqqLqM/3MAFo2aTuWlntNMSOSoVD5FiomrFMjx2eQsm3dCWfT8e4vKn5qvRohRbKh4ixUzy6YnMGJbMgHMbMnH+JrqnZjBrnRotSvGi4iFSDFUql8BfejfltVvOpXyZOAY8s4g7X1nG19/tj3ZqIoCKh0ix1uaUGrwzuDODft2YNz/+nK7DM5i+Ylu00xJR8RAp7sqXief/epzBtEEdqV2lHLe+8BG3PL+EHXvUaFGiR8VDpIRoenJVpt7ekT/0PJMP1u6g6/BZvJq5hVhtbirFm4qHSAmSEB/Hrb86jelDOnPmSVX4/WvLufaZRWzZqUaLcnypeIiUQKclVmbywPY82LcZH322ix4jMnh27qccVKNFOU4KVDzM7HIzW2Vmh8wsdMS8e8wsy8zWmlmPiHjPIJZlZndHxBuZ2UIzW29mLwdPDMTMygXTWcH8hgXJWSRWxMUZ17Q/hRkpXWjbqAYPvLWay5+cR9aOvdFOTUqBgh55rAQuBTIig2bWhPCjYpsCPYExZhZvZvHAaKAX0AS4MhgL8CiQ6u5JwC7gxiB+I7DL3RsDqcE4EQnUrVaBZ687h9QrWrDxy2+5YOQcnvhgvRotSpEqUPFw9zXuvjaXWX2Aye6+z90/BbKAtsEry903uvt+YDLQx8KPVTsPeC1YfiLQN2JdE4P3rwHnmx7DJvI/zIxLWtVjZkoXujWtzT9nrOPix+ewIluNFqVoFNU1j7rAlojp7CB2tPiJwNfBs8oj4/+zrmD+7mC8iByhZuVyjL6qNeOuacPOb/fTd8xc/j59jRotSqHLs3iY2UwzW5nLq8/PLZZLzI8h/nPryi3XgWaWaWaZOTlq5yClV/emJ5Ge0oV+revx1KyN9Bo5m4Ubv4p2WhJD8iwe7t7V3Zvl8pr6M4tlA/UjpusBW38m/iVQzcwSjoj/z7qC+VWBXNuNuvs4dw+5eygxMTGvTROJaVUrlOHRfmfzwk3tOHDoEFeMW8B9b6xg7w8/Rjs1iQFFddpqGtA/uFOqEZAELAIWA0nBnVVlCV9Un+bhbzl9CPQLlh8ATI1Y14DgfT/gA9e3okR+sY6Na5I2NJkbOzXixUWb6Z6awYef7Ih2WlLCFfRW3UvMLBs4F3jHzNIA3H0V8AqwGngPuN3dDwbXLAYBacAa4JVgLMAfgBQzyyJ8TePpIP40cGIQTwH+/+29IvLLVCybwJ8uasLrt3agcrkErn9uMcNe/pid36rRohwbi9U/4kOhkGdmZkY7DZFiZ9+Bg4z+cANjPsyiaoUyPNCnKRc2r4NuYhQAM1vi7qG8xukb5iKlTLmEeFK6nc7bgztRt3oFBr24lIHPL2G7Gi1KPqh4iJRSZ55UhSm3duC+C84iY10OXYfPYvKizWq0KL+IiodIKZYQH8fNyaeSNjSZJnWqcPeUFVw9YSGbv1KjRfl5Kh4iQsOalXjp5vY8fEkzVmTvpvuIWUyYvVGNFuWoVDxEBAg3Wry63SnMSEmmw2k1eeidNVw2dh7rtqvRovyUioeI/I86VSvw9IAQI/u35LOvvuXCUbMZOXM9+w+o0aL8l4qHiPyEmdGnZV1mpnShV7M6pM4MN1pctuXraKcmxYSKh4gc1YmVyzHqylZMuDbE7u9/5JIxc/nbu2v4fr8aLZZ2Kh4ikqeuTWozIyWZ/m0bMC5jI71GZjB/gxotlmYqHiLyi1QpX4a/XdKcl25ujwNXjl/AvW+sYI8aLZZKKh4iki/nnnYi7w1JZmDyqUxetJnuwzN4f832aKclx5mKh4jkW4Wy8dx7wVlMua0jVSuU4caJmQx+aSlffbMv2qnJcaLiISLHrGX9arx1RyeGdT2d6Su30S01g6kff64WJ6WAioeIFEjZhDiGdE3incGdaVCjIkMmf8xNEzPZtvv7aKcmRUjFQ0QKxem1T+D1WzvwxwvPYu6GL+k2PIMXFn7GIbU4iUkqHiJSaOLjjJs6n8qMoV04u15V7ntjJVdNWMCmL7+NdmpSyAr6JMHHzOwTM1tuZm+YWbWIefeYWZaZrTWzHhHxnkEsy8zujog3MrOFZrbezF4OHlNL8Cjbl4PxC82sYUFyFpGi1+DEirxwUzseubQ5qz7fQ48RGYzL2MCBg2pxEisKeuSRDjRz97OBdcA9AGbWhPDzyZsCPYExZhZvZvHAaKAX0AS4MhgL8CiQ6u5JwC7gxiB+I7DL3RsDqcE4ESnmzIz+bRuQntKFzkmJ/O3dT7hs7Dw++WJPtFOTQlCg4uHuM4LnkgMsAOoF7/sAk919n7t/CmQBbYNXlrtvdPf9wGSgj4Wff3ke8Fqw/ESgb8S6JgbvXwPONz0vU6TEOKlqecZf24YnrmpF9q7vuWjUHIanr2PfAbU4KckK85rHDcD04H1dYEvEvOwgdrT4icDXEYXocPx/1hXM3x2MF5ESwsy46OyTmZnShYtbnMyo99dz0ag5fLR5V7RTk2OUZ/Ews5lmtjKXV5+IMfcBB4AXDodyWZUfQ/zn1pVbrgPNLNPMMnNyco62SSISJdUrlSX1ipY8e905fLPvAJeNnceDb6/mu/0H8l5YipWEvAa4e9efm29mA4CLgPP9v98MygbqRwyrB2wN3ucW/xKoZmYJwdFF5PjD68o2swSgKrDzKLmOA8YBhEIh3R8oUkz9+sxazBiWzKPvfcLTcz4lffV2Hrm0OR0a14x2avILFfRuq57AH4De7h750ONpQP/gTqlGQBKwCFgMJAV3VpUlfFF9WlB0PgT6BcsPAKZGrGtA8L4f8IHr66siJd4J5cvwUN/mvDywPfFxxlUTFnL368vZ/b0aLZYEVpDfw2aWBZQDDvdmXuDutwTz7iN8HeQAMNTdpwfxC4ARQDzwjLs/HMRPJXwBvQawFPitu+8zs/LA80Arwkcc/d19Y165hUIhz8zMPOZtE5Hj54cfD5I6cx3jMzZSs3I5HurbjO5NT4p2WqWSmS1x91Ce42L1j3gVD5GSZ0X2bu56fTlrtu3hwrPr8EDvptSsXC7aaZUqv7R46BvmIlJsNK9XlWmDOvJ/3U8nfdV2ug6fxRtLs9VosRhS8RCRYqVMfByDzkvi3SGdOLVmJYa9vIzrn1vM1q/VaLE4UfEQkWKpca0TePWWDtx/cRMWbtxJ99QMnl+gRovFhYqHiBRb8XHG9R0bMWNYMi3rV+NPb66k/7gFbMz5JtqplXoqHiJS7NWvUZHnb2zLP/qdzSdf7KHXyNk8OUuNFqNJxUNESgQz4zeh+sxM6cKvzkjkkemf0HfMXFZvVaPFaFDxEJESpVaV8jx1TYixV7fmi9376P3EHP6ZtpYfflSjxeNJxUNESqRezeswMyWZPi3r8sSHWVw4ajZLPsu1c5EUARUPESmxqlUsy79+04KJN7Tlhx8P0e/J+Tzw1iq+3adGi0VNxUNESrwupyeSNiyZa9ufwrNzN9FjRAaz16uzdlFS8RCRmFC5XAIP9GnGq7ecS9mEOK55ehG/f3UZu79To8WioOIhIjHlnIY1eHdwZ2771WlMWfo5XVNn8d7KL6KdVsxR8RCRmFO+TDx39TyTqbd3JLFyOW759xJuf+Ejcvbui3ZqMUPFQ0RiVrN8I0KrAAAMeElEQVS6VZk6qCO/73EG6WvCjRZfX6JGi4VBxUNEYlqZ+Dhu/3Vj3h3cmaRalbnz1WUMeHYx2bu+y3thOSoVDxEpFRrXqswrvzuXB3o3JXNTuNHixHmb1GjxGBX0MbQPmtlyM/vYzGaY2clB3MxslJllBfNbRywzwMzWB68BEfE2ZrYiWGaUmVkQr2Fm6cH4dDOrXpCcRaT0ioszBnRoyIxhyYQa1uD+aav4zVPz2aBGi/lW0COPx9z9bHdvCbwN/DmI9yL83PIkYCAwFsKFALgfaAe0Be6PKAZjg7GHl+sZxO8G3nf3JOD9YFpE5JjVq16Ridefw78ub8H6Hd/Qa+RsRn+YxY9qtPiLFah4uHtkR7JKwOHjvz7AJA9bAFQzszpADyDd3Xe6+y4gHegZzKvi7vM9fCVrEtA3Yl0Tg/cTI+IiIsfMzLisTT3SU5LpelYtHktbS58n5rLy893RTq1EKPA1DzN72My2AFfz3yOPusCWiGHZQezn4tm5xAFqu/s2gOBnrZ/JZaCZZZpZZk6Ovl0qInmrdUJ5xlzdhid/25qcb/bRZ/RcHn3vEzVazEOexcPMZprZylxefQDc/T53rw+8AAw6vFguq/JjiOeLu49z95C7hxITE/O7uIiUYj2b1WHmsC5c2qouY/+zgQtGzmbxJjVaPJo8i4e7d3X3Zrm8ph4x9EXgsuB9NlA/Yl49YGse8Xq5xAG2B6e1CH7u+GWbJiKSP1UrluGxy1vw/I1t2X/wEJc/OZ8/T13JN2q0+BMFvdsqKWKyN/BJ8H4acG1w11V7YHdwyikN6G5m1YML5d2BtGDeXjNrH9xldS0wNWJdh+/KGhARFxEpEp2TEkkbmsz1HRvy/ILP6D58Fv9Zq79bIxX0mscjwSms5YQLwZAg/i6wEcgCxgO3Abj7TuBBYHHw+msQA7gVmBAsswGYfvgzgG5mth7oFkyLiBSpSuUSuP/iprx2SwcqlkvgumcXk/LKx+z6dn+0UysWLFa/ph8KhTwzMzPaaYhIDNh34CBPfJDF2P9soFrFMvy1TzN6NTuJ4OtoMcXMlrh7KK9x+oa5iEgeyiXEc2f3M5g2qBN1qlbgthc+4pZ/L2HHnh+inVrUqHiIiPxCTU6uwhu3deCeXmfyn7U5dB0+i1cWbymVjRZVPERE8iEhPo7fdTmN6UM6c+ZJVbjr9eVc8/QituwsXY0WVTxERI7BqYmVmTywPQ/2bcbSzbvonprBs3M/5WApabSo4iEicozi4oxr2p/CjJQutDu1Bg+8tZrLn5xH1o690U6tyKl4iIgUUN1qFXj2unNIvaIFn375LReMnMPj76+P6UaLKh4iIoXAzLikVT3SU7rQvWlt/pW+josfn8OK7NhstKjiISJSiGpWLscTV7Vm3DVt2PntfvqMnsPf310Tc40WVTxERIpA96YnkZ7Shd+E6vNUxkZ6jZzNwo1fRTutQqPiISJSRKpWKMMjl53NCze148ChQ1wxbgF/fHMFe3/4MdqpFZiKh4hIEevYuCZpQ5O5sVMjXli4mR6pGXz4SclutKjiISJyHFQsm8CfLmrC67d2oFK5BK5/bjFDJy9lZwlttKjiISJyHLVuUJ23B3di8PlJvL18G92Gz+KtZVtLXIsTFQ8RkeOsXEI8Kd1O5+3BnahbvQJ3vLSUmyct4YvdJafRooqHiEiUnHlSFabc2oH7LjiL2etz6JY6i8mLNpeIo5BCKR5m9n9m5mZWM5g2MxtlZllmttzMWkeMHWBm64PXgIh4GzNbESwzKniiIGZWw8zSg/HpwRMIRURiQkJ8HDcnn0ra0GSa1KnC3VNWcPWEhWz+qng3Wixw8TCz+oSf8Lc5ItwLSApeA4GxwdgawP1AO6AtcH9EMRgbjD28XM8gfjfwvrsnAe8H0yIiMaVhzUq8dHN7Hr6kGcuzd9N9xCwmzN5YbBstFsaRRypwFxC5hX2ASR62AKhmZnWAHkC6u+90911AOtAzmFfF3ed7+HhtEtA3Yl0Tg/cTI+IiIjElLs64ut0ppKck0/G0mjz0zhouHTuPtV8Uv0aLBSoeZtYb+Nzdlx0xqy6wJWI6O4j9XDw7lzhAbXffBhD8rFWQnEVEirs6VSswYUCIkf1bsmXnd1z0+GxGzFzH/gPFp9FiQl4DzGwmcFIus+4D7gW657ZYLjE/hni+mNlAwqe+aNCgQX4XFxEpNsyMPi3r0qlxTR54azUjZq5n+oov+Ee/s2lRv1q008v7yMPdu7p7syNfwEagEbDMzDYB9YCPzOwkwkcO9SNWUw/Ymke8Xi5xgO3BaS2Cn0f9Wqa7j3P3kLuHEhMT89o0EZFi78TK5Rh1ZSsmXBti9/c/csmYuTz8zmq+3x/dRovHfNrK3Ve4ey13b+juDQkXgNbu/gUwDbg2uOuqPbA7OOWUBnQ3s+rBhfLuQFowb6+ZtQ/usroWmBp81DTg8F1ZAyLiIiKlRtcmtZmRkkz/tg0YP/tTeo7MYN6GL6OWT1F9z+NdwkcmWcB44DYAd98JPAgsDl5/DWIAtwITgmU2ANOD+CNANzNbT/iurkeKKGcRkWKtSvky/O2S5rx4czsArhq/kHumrGBPFBotWkn4MsqxCIVCnpmZGe00RESKxPf7D5I6cx0TZm8k8YRyPNy3OV2b1C7wes1sibuH8hqnb5iLiJRAFcrGc+8FZ/HGbR2pXrEsN03KZPBLS/nqm33H5fNVPERESrAW9asxbVAnhnU9nekrt9F1+Czmbyj6h06peIiIlHBlE+IY0jWJdwZ3plndqjSsWbHIPzPP73mIiEjJcHrtE3j+xnbH5bN05CEiIvmm4iEiIvmm4iEiIvmm4iEiIvmm4iEiIvmm4iEiIvmm4iEiIvmm4iEiIvkWs40RzSwH+Cwfi9QEotffOHq03aVLad1uKL3bnt/tPsXd83wgUswWj/wys8xf0kky1mi7S5fSut1Qere9qLZbp61ERCTfVDxERCTfVDz+a1y0E4gSbXfpUlq3G0rvthfJduuah4iI5JuOPEREJN9UPAAz62lma80sy8zujnY+RcXM6pvZh2a2xsxWmdmQIF7DzNLNbH3ws3q0cy1sZhZvZkvN7O1gupGZLQy2+WUzKxvtHIuCmVUzs9fM7JNgv59bSvb3sODf+Eoze8nMysfiPjezZ8xsh5mtjIjlun8tbFTwe265mbUuyGeX+uJhZvHAaKAX0AS40syaRDerInMAuNPdzwLaA7cH23o38L67JwHvB9OxZgiwJmL6USA12OZdwI1RyarojQTec/czgRaE/xvE9P42s7rAYCDk7s2AeKA/sbnPnwN6HhE72v7tBSQFr4HA2IJ8cKkvHkBbIMvdN7r7fmAy0CfKORUJd9/m7h8F7/cS/kVSl/D2TgyGTQT6RifDomFm9YALgQnBtAHnAa8FQ2JumwHMrAqQDDwN4O773f1rYnx/BxKACmaWAFQEthGD+9zdM4CdR4SPtn/7AJM8bAFQzczqHOtnq3iEf3luiZjODmIxzcwaAq2AhUBtd98G4QID1IpeZkViBHAXcCiYPhH42t0PBNOxus9PBXKAZ4NTdhPMrBIxvr/d/XPgn8BmwkVjN7CE0rHP4ej7t1B/16l4gOUSi+lb0MysMvA6MNTd90Q7n6JkZhcBO9x9SWQ4l6GxuM8TgNbAWHdvBXxLjJ2iyk1wjr8P0Ag4GahE+JTNkWJxn/+cQv13r+IRrr71I6brAVujlEuRM7MyhAvHC+4+JQhvP3z4GvzcEa38ikBHoLeZbSJ8SvI8wkci1YJTGhC7+zwbyHb3hcH0a4SLSSzvb4CuwKfunuPuPwJTgA6Ujn0OR9+/hfq7TsUDFgNJwZ0YZQlfWJsW5ZyKRHCu/2lgjbsPj5g1DRgQvB8ATD3euRUVd7/H3eu5e0PC+/YDd78a+BDoFwyLqW0+zN2/ALaY2RlB6HxgNTG8vwObgfZmVjH4N394u2N+nweOtn+nAdcGd121B3YfPr11LPQlQcDMLiD812g88Iy7PxzllIqEmXUCZgMr+O/5/3sJX/d4BWhA+H+8y939yItwJZ6Z/Qr4P3e/yMxOJXwkUgNYCvzW3fdFM7+iYGYtCd8oUBbYCFxP+I/GmN7fZvYAcAXhOwyXAjcRPr8fU/vczF4CfkW4c+524H7gTXLZv0EhfYLw3VnfAde7e+Yxf7aKh4iI5JdOW4mISL6peIiISL6peIiISL6peIiISL6peIiISL6peIiISL6peIiISL6peIiISL79P3ZMfLczVlpaAAAAAElFTkSuQmCC\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/DA0101EN_NotbookLink_Top_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment