Skip to content

Instantly share code, notes, and snippets.

@lcaguilar
Created July 31, 2020 21:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lcaguilar/b2fa895c9849504e36c47d7fc29e9290 to your computer and use it in GitHub Desktop.
Save lcaguilar/b2fa895c9849504e36c47d7fc29e9290 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/corsera_da0101en_notebook_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 4: Model Development</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some questions we want to ask in this module\n",
"<ul>\n",
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n",
" <li>do I know if I put a fair value on my car?</li>\n",
"</ul>\n",
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n",
"\n",
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"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/DA101EN_object_storage\">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": 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",
"lml=LinearRegression()\n",
"lml"
]
},
{
"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": 13,
"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": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lml.fit(df[['highway-mpg']],df[['price']])\n",
"lml"
]
},
{
"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": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[-821.73337832]])"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lml.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([38423.30585816])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lml.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"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# using X and Y \n",
"Yhat=-7963.34 + 166.86*X\n",
"\n",
"Price=-7963.34 + 166.86*engine-size\n",
"\n",
"-->"
]
},
{
"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": 18,
"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": 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": [
"lm.fit(Z, df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the value of the intercept(a)?"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-15806.62462632922"
]
},
"execution_count": 20,
"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": 21,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])"
]
},
"execution_count": 21,
"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": 22,
"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": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2=LinearRegression()\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": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 23,
"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": 24,
"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": 25,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0.0, 48261.74888172543)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAJNCAYAAABwXMA5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAACMW0lEQVR4nOz9e3zcdZ33/z/ec57JOWnTU1LatIVCkXJoKwJbCrLKrivqigqrgIDSFV397sHLdfdaftfFtdfedHd/7soqWsQKRb+iy7qIrsoqpVTk0APnQqFtekiPaXNO5jyf9/ePmZSkbZJJJplTnvfbrbe0n+Yz8w606XPe83q/XsZai4iIiIiI5Ier0AsQEREREZlOFMBFRERERPJIAVxEREREJI8UwEVERERE8kgBXEREREQkjxTARURERETyyFPoBeTbjBkz7IIFCwq9DBEREREpc9u3bz9hrZ156vVpF8AXLFjAtm3bCr0MERERESlzxpj9Z7quEhQRERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPPIUegHTwaad7azb3EpbV5jmuhBrV7ewZmljoZclIiIiIgWgHfAptmlnO3c9toP2vii1QS/tfVHuemwHm3a2F3ppIiIiIlIACuBTbN3mVrxuQ8jnwZj0R6/bsG5za6GXJiIiIiIFoAA+xdq6wgS97mHXgl43B7vCBVqRiIiIiBSSAvgUa64LEUmkhl2LJFI01YUKtCIRERERKSQF8Cm2dnULiZQlHE9ibfpjImVZu7ql0EsTERERkQJQAJ9ia5Y2cvd1y2isCtATSdBYFeDu65apC4qIiIjINKU2hHmwZmmjAreIiIiIANoBFxERERHJKwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE88hR6ASJTbdPOdtZtbqWtK0xzXYi1q1tYs7Sx0MsSERGRaUo74FLWNu1s567HdtDeF6U26KW9L8pdj+1g0872Qi9NREREpikFcClr6za34nUbQj4PxqQ/et2GdZtbC700ERERmaYUwKWstXWFCXrdw64FvW4OdoULtCIRERGZ7lQDngeqQS6c5roQ7X1RQr63/6hHEima6kIFXJWIiIhMZ9oBn2KqQS6statbSKQs4XgSa9MfEynL2tUthV6aiIiITFMK4FNMNciFtWZpI3dft4zGqgA9kQSNVQHuvm6Z3oEQERGRglEJyhRr6wpTG/QOu6Ya5Pxas7RRgVtERESKhnbAp1hzXYhIIjXsmmqQRURERKYvBfApphpkERERERlKAXyKqQZZRERERIZSDXgeqAZZRERERAZpB1xEREREJI8UwEVERERE8mjKA7gxxm2MedEY8/PMr+uNMb82xuzKfKwb8rlfNsbsNsa8aYx575DrlxhjXs383j3GGJO57jfG/Chz/XljzIKp/npERERERHKRjx3wLwBvDPn1XwNPWGuXAE9kfo0x5jzgBmAZcC1wrzHGnbnnW8AdwJLMj2sz128Huqy1i4F/Ab46tV+KiIiIiEhupjSAG2OagPcB9w+5/AHgwczPHwQ+OOT6w9bamLV2L7AbWGWMmQNUW2uftdZaYMMp9ww+1iPAuwd3x0VEREREitFU74D/K/A/AGfItVnW2iMAmY+D7UHmAW1DPu9g5tq8zM9PvT7sHmttEugBGib1KxARERERmURTFsCNMX8EtFtrt2d7yxmu2VGuj3bPqWu5wxizzRiz7fjx41kuR0RERERk8k3lDvjlwHXGmH3Aw8DVxpjvA8cyZSVkPrZnPv8g0Dzk/ibgcOZ60xmuD7vHGOMBaoDOUxdirb3PWrvCWrti5syZk/PViYiIiIhMwJQFcGvtl621TdbaBaQPV2601n4CeAy4JfNptwA/zfz8MeCGTGeThaQPW27JlKn0GWMuzdR333zKPYOPdX3mOU7bARcRERERKRaFmIT5FeDHxpjbgQPARwCstTuMMT8GXgeSwGettanMPZ8BHgCCwC8zPwC+CzxkjNlNeuf7hnx9ESIiIiIiE2Gm24bxihUr7LZt2wq9DBEREREpc8aY7dbaFade1yRMEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjT6EXICKj27SznXWbW2nrCtNcF2Lt6hbWLG0s9LJERERkghTAZcopQE7cpp3t3PXYDrxuQ23QS3tflLse28HdoP+GIiIiJUolKDKlBgNke190WIDctLO90EsrCes2t+J1G0I+D8akP3rdhnWbWwu9NBEREZkgBXCZUgqQuWnrChP0uoddC3rdHOwKF2hFIiIikisFcJlSCpC5aa4LEUmkhl2LJFI01YUKtCIRERHJlQK4TCkFyNysXd1CImUJx5NYm/6YSFnWrm4p9NJERERkghTAZUopQOZmzdJG7r5uGY1VAXoiCRqrAtx93TIdwBQRESlh6oIiU2rN0kbuJl0LfrArTJO6oIzbmqWN+u8lIiJSRhTAZcopQIqIiIi8TSUoIiIiIiJ5pAAuIiIiIpJHKkEpAZokKSIiIlI+tANe5DRJUkRERKS8KIAXOU2SFBERESkvCuBFTpMkRURERMqLAniR0yRJERERkfKiAF7kimGS5Kad7dx433Nc8dWN3Hjfc6o/FxEREcmBAniRK/Qoch0CFREREZlcakNYAgo5SXLoIVCAkM9DOJ5k3eZWtUIUERERmQDtgMuodAhUREREZHIpgMuodAhUREREZHIpgMuoiuEQqIiIiEg5UQ34NJDLKPs1Sxu5m3Qt+MGuME3jvF9EREREhlMAL3ODXUy8bjOsi8ndMK4QrsAtIiIiMjlUglLmNMpeREREpLgogJc5dTERERERKS4K4GVOXUxEREREiosCeJlTFxMRERGR4qIAXuYKPcpeRERERIZTF5RpQF1MRERERIqHdsBFRERERPJIAVxEREREJI9UgjIN5DIJU0REREQml3bAy9zgJMz2vuiwSZibdrYXemkiIiIi05J2wMvc0EmYACGfh3A8ybrNrdoFLxF6B0NERKS8aAe8zGkSZmnTOxgiIiLlRwG8zGkSZmkb+g6GMemPXrdh3ebWQi9NREREJkgBvMxpEmZp0zsYIiIi5UcBvMxpEmZp0zsYIiIi5UeHMKcBTcIsXWtXt3DXYzsIx5MEvW4iiZTewRARESlx2gEXKWJ6B0NERKT8aAdcpMjpHQwREZHyoh1wEREREZE8UgAXEREREckjBXARERERkTxSABcRERERySMFcBERERGRPFIAFxERERHJIwVwEREREZE8UgAXEREREckjDeIRKXKbdrazbnMrbV1hmutCrF3dosE8IiIiJUw74CJFbNPOdu56bAftfVFqg17a+6Lc9dgONu1sL/TSREREZIIUwEWK2LrNrXjdhpDPgzHpj163Yd3m1kIvTURERCZIAVykiLV1hQl63cOuBb1uDnaFC7QiERERyZVqwGVMqkEunOa6EO19UUK+t/+qRhIpmupCBVyViIiI5EI74DIq1SAX1trVLSRSlnA8ibXpj4mUZe3qlkIvTURERCZIAVxGpRrkwlqztJG7r1tGY1WAnkiCxqoAd1+3TO9AiIiIlDCVoMio2rrC1Aa9w66pBjm/1ixtVOAWEREpI9oBl1E114WIJFLDrqkGWURERGTiFMBlVKpBFhEREZlcCuAyKtUgi4iIiEwu1YDLmFSDXFhqAykiIlJetAMuUsTUBlJERKT8KICLFDG1gRQRESk/CuAiRUyj6EVERMqPArhIEVMbSBERkfKjAC5SxNQGUkREpPwogIsUMbWBFBERKT9qQyhS5NQGUkREpLxoB1xEREREJI+0Ay5lT4NsREREpJhoB1zKmgbZiIiISLFRAJeypkE2IiIiUmwUwKWsaZCNiIiIFBsFcClrGmQjIiIixUYBXMqaBtmI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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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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": 26,
"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": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The variable \"highway-mpg\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"peak-rpm\" which is approximate -0.101616. You can verify it using the following command:\n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n",
"\n",
"-->"
]
},
{
"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": 27,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 12\n",
"height = 10\n",
"plt.figure(figsize=(width, height))\n",
"sns.residplot(df['highway-mpg'], df['price'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>What is this plot telling us?</i>\n",
"\n",
"<p>We can see from this residual plot that the residuals are not randomly spread around the x-axis, which leads us to believe that maybe a non-linear model is more appropriate for this data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>How do we visualize a model for Multiple Linear Regression? This gets a bit more complicated because you can't visualize it with regression or residual plot.</p>\n",
"\n",
"<p>One way to look at the fit of the model is by looking at the <b>distribution plot</b>: We can look at the distribution of the fitted values that result from the model and compare it to the distribution of the actual values.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First lets make a prediction "
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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41u3bqVJkyYAPPPMMzHVc9555zFmzBhGjRrF8OHDDx6ncePGlCtXjueee478/PwfvK5ly5bMnDmTgoICVq5ceXDCRe/evZk4cSKLFy8GYNeuXaVaeT4ShWMRERGRDDJy5Eh+/OMff++x8847jxdffJErr7yS5s2b07lzZ7p06cKLL74IwNVXX83gwYMPXpD3t7/9jbPOOovTTjuNxo0bHzzOnXfeyQUXXMDJJ598xP7kqNq1a9O7d28aNmx4sA3j+uuv55lnnqF3794sWrSIatWq/eB1ffr0oVWrVnTq1IlbbrmF7t27A1C/fn2efvppRowYQefOnendu3dM4+pi5bz3CTtYvHJzc32szdgiIiIiqWj+/Pl06NAh7DIkoqj/Hs65ad773KKer5VjEREREZEIhWMRERERkQiFYxERERGRCIVjEREREZEIhWMRERERkQiFYxERERGRCIVjkWzx0Udw003w2WdQaMchERHJPDk5OXTt2vXgbdmyZZx00kkALFu27OB8Y4CZM2cyZsyYUp+jX79+HD6C98477+S222773mMzZ84scbTdnXfeyX333Vfq8wdF4VgkG+zZA5dfDv/3f9CvH7RoAbfcAtOmQQrNOhcRkcSoUqUKM2fOPHhr2bIlX3zxBZC4cFyUESNGMGrUqO899tJLL3HxxRcn5PjJoHAskg3+/W9YvRrefhtefBG6dYOHHoLcXOjUyb4mIiIZrXr16gD87ne/Y/z48XTt2pV77rmHO+64g1GjRtG1a1dGjRrFzp07ueKKK+jRowfdunXjzTffBGD37t0MHz6czp07c9FFF7F79+4fnKNdu3bUrl2byZMnH3zs5ZdfZvjw4fz3v/+lR48edOnShfPOO49du3b94PWFV6M3btxIy5YtAcjPz+fWW2+lR48edO7cmUcffRSAvLw8TjnlFLp27UrHjh0ZP3583O9T+biPICKpbds2+J//gTPOgLPOssdGjIDNm+HVV+H66+HBB+Hvfw+1TBGRTHTTTTBzZmKP2bWr/bVdkt27d9O1a1cAWrVqxejRow9+7W9/+xv33Xcf77zzDgANGzZk6tSp/POf/wTg97//PaeddhpPPvkkW7ZsoWfPngwYMIBHH32UqlWrMnv2bGbPnn1wO+fDjRgxgpdeeolevXoxadIk6tatS9u2balTpw5XXXUVAH/84x954okn+MUvfhHT9/zEE09Qq1YtpkyZwt69e+nTpw9nnnkmr7/+OgMHDuQPf/gD+fn5RQbu0lI4Fsl0Dz4ImzbBX//6/cfr1IGrr4axY+Hxx+HOO6GIve1FRCT9RNsqyuLDDz/krbfeOtgHvGfPHlasWMHnn3/OjTfeCEDnzp3p3Llzka8fPnw4J510Evfffz8vvfQSI0aMAGDOnDn88Y9/ZMuWLezYsYOBAweWqqbZs2fz6quvArB161a++eYbevTowRVXXMH+/fsZNmzYwR8I4qFwLJLJNm2C++6Dc8+FHj2Kfs4vfwmvvALPPw/XXJPc+kREMtyRVnhTkfee1157jXbt2v3ga865I76+WbNmtGzZks8++4zXXnuNL7/8EoDLLruMN954gy5duvD0008zbty4H7y2fPnyFEQuGt+zZ8/3anr44YeLDNSff/457777Lpdccgm33norl156aazfapHUcyySye65B3bsgL/8pfjnnHQSdO9uPci6OE9EJOPVqFGD7du3F/v7gQMH8vDDD+Mj/ybMmDEDgFNOOYUXXngBsFXg2bNnF3uOESNGcPPNN3PMMcfQtGlTALZv307jxo3Zv3//weMcrmXLlkybNg3g4CpxtKb//Oc/7N+/H4BFixaxc+dOli9fToMGDbjqqqv4+c9/zvTp00v9fhxO4VgkU61ZAw8/DJdcAscdV/zznIMbb4R58+Djj5NXn4iIhKJz586UL1+eLl268I9//IP+/fszb968gxfk3X777ezfv5/OnTvTsWNHbr/9dgCuu+46duzYQefOnbn33nvp2bNnsee44IILmDt3LsOHDz/42F/+8hd69erFGWecQfv27Yt83S233MJ//vMfTjrpJDZu3Hjw8SuvvJLjjjuO7t2707FjR6655hoOHDjAuHHj6Nq1K926deO1117jl7/8Zdzvj/MptFKUm5vrD5+XJyJldN118MQTsHAhtGpV8nP37oXmzaFnT5toISIiZTZ//vwS5/pKchX138M5N817n1vU87VyLJKJliyxi+yuuurIwRigUiXrN373XVi8OPj6REREUpTCsUgmuvNOqFAB/vjH2F9z3XWQkwP/+ldgZYmIiKQ6hWORTLNrF7z0kq0aN24c++saN4YLL4Qnn4RCF2aIiEjppVLbajYry38HhWORTDN5Mhw4AKWYH3nQjTfapiHPPJP4ukREskTlypXZtGmTAnLIvPds2rSJypUrl+p1mnMskmkmTLAJFCedVPrX9uplt4cesp3zyunnZxGR0mratCmrVq1iw4YNYZeS9SpXrnxwlFysFI5FMs348dCpE9SuXbbX33gj/OQn8MEHMHhwQksTEckGFSpUoFUsF0NLStKykEgmOXAAvvwS+vYt+zHOPx/q1YNiBrSLiIhkMoVjkUwye7btiHfyyWU/RsWKMGAAfPKJdswTEZGso3AskknGj7f7eFaOAU4/HfLyYMGC+GsSERFJIwrHIplkwgRo0QJKefHBD5x2mt1/8kn8NYmIiKQRhWORTOG9rRzH01IR1aqVhWyFYxERyTIKxyKZYskSWLcu/pYKsFFwp58On34K+fnxH09ERCRNKByLZIoJE+w+EeEYrLXiu+9g1qzEHE9ERCQNKByLZIrx46FOHejQITHH69/f7tVaISIiWUThWCRTTJgAffokble7o4+G9u3h448TczwREZE0oHAskgnWr4dFixJzMV5hp59uK9L79iX2uCIiIilK4VgkEyS63zjqtNNg506YMiWxxxUREUlRCscimWDCBKhcGU44IbHH7dfPJleo71hERLKEwrFIJhg/Hnr1sq2fE6lOHejWTX3HIiKSNRSORdLdjh0wY0biWyqiTjsNvvwSdu0K5vgiIiIpROFYJN1NnmwbdQQZjvftgy++COb4IiIiKSSwcOyca+ecm1nots05d1NQ5xPJWuPH2/i2k04K5vgnnwzly6u1QkREskL5oA7svV8IdAVwzuUAq4HRQZ1PJGtNmACdO0PNmsEcv3p162fWRXkiIpIFktVWcTqwxHu/PEnnE8kO+/fDpEmJn298uNNOg6lTYevWYM8jIiISsmSF4+HAyKK+4Jy72jk31Tk3dcOGDUkqRyRDzJplc4iD6jeOOu00KCiAzz4L9jwiIiIhCzwcO+cqAmcDrxT1de/9Y977XO99bv369YMuRySzzJ5t9927B3ue3r1tjrJaK0REJMMlY+V4MDDde78uCecSyS4LFths41atgj1P5cq2Oq2L8kREJMMlIxyPoJiWChGJ08KFcOyxkJMT/Ln69oW5c2H79uDPJSIiEpJAw7FzripwBvB6kOcRyVoLFkD79sk5V48e4D1Mn56c84mIiIQg0HDsvd/lva/rvdcl7iKJtm8fLFkC7dol53wnnGD3U6cm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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": 30,
"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": 31,
"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": 32,
"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": 33,
"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": 34,
"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": 34,
"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": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3 2\n",
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"f1=np.polyfit(x,y,11)\n",
"p1=np.poly1d(f1)\n",
"print(p)\n",
"PlotPolly(p1,x,y,'Highway MPG')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# calculate polynomial\n",
"# Here we use a polynomial of the 11rd order (cubic) \n",
"f1 = np.polyfit(x, y, 11)\n",
"p1 = np.poly1d(f1)\n",
"print(p)\n",
"PlotPolly(p1,x,y, 'Highway MPG')\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": 36,
"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": 37,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 37,
"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": null,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"Input=[('scale',StandardScaler)]"
]
},
{
"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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": 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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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": null,
"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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": 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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": 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": null,
"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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"lm.fit(X, Y)\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Produce a prediction"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.11"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment