Skip to content

Instantly share code, notes, and snippets.

@salouri
Created November 14, 2019 17:42
Show Gist options
  • Save salouri/80179b26e7ca0be9ee5e89aaac488bf8 to your computer and use it in GitHub Desktop.
Save salouri/80179b26e7ca0be9ee5e89aaac488bf8 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": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/skills_network_DA0101EN_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 4: Model Development</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some questions we want to ask in this module\n",
"<ul>\n",
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n",
" <li>do I know if I put a fair value on my car?</li>\n",
"</ul>\n",
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n",
"\n",
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/da0101en_object_storage_skills_network\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>hatchback</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# path of data \n",
"path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>1. Linear Regression and Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<p>One example of a Data Model that we will be using is</p>\n",
"<b>Simple Linear Regression</b>.\n",
"\n",
"<br>\n",
"<p>Simple Linear Regression is a method to help us understand the relationship between two variables:</p>\n",
"<ul>\n",
" <li>The predictor/independent variable (X)</li>\n",
" <li>The response/dependent variable (that we want to predict)(Y)</li>\n",
"</ul>\n",
"\n",
"<p>The result of Linear Regression is a <b>linear function</b> that predicts the response (dependent) variable as a function of the predictor (independent) variable.</p>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
" Y: Response \\ Variable\\\\\n",
" X: Predictor \\ Variables\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <b>Linear function:</b>\n",
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li>a refers to the <b>intercept</b> of the regression line0, in other words: the value of Y when X is 0</li>\n",
" <li>b refers to the <b>slope</b> of the regression line, in other words: the value with which Y changes when X increases by 1 unit</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Lets load the modules for linear regression</h4>"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Create the linear regression object</h4>"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm = LinearRegression()\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How could Highway-mpg help us predict car price?</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For this example, we want to look at how highway-mpg can help us predict car price.\n",
"Using simple linear regression, we will create a linear function with \"highway-mpg\" as the predictor variable and the \"price\" as the response variable."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"X = df[['highway-mpg']]\n",
"Y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using highway-mpg."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(X,Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can output a prediction "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n",
" 20345.17153508])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Yhat=lm.predict(X)\n",
"Yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the intercept (a)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"38423.3058581574"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the Slope (b)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([-821.73337832])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What is the final estimated linear model we get?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear model with the structure:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plugging in the actual values we get:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 a): </h1>\n",
"\n",
"<b>Create a linear regression object?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm1 = LinearRegression()\n",
"lm1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1 = LinearRegression()\n",
"lm1 \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1 b): </h1>\n",
"\n",
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 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",
"lm1.fit(df[[\"engine-size\"]], df[[\"price\"]])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1.fit(df[['engine-size']], df[['price']])\n",
"lm1\n",
"\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 c):</h1>\n",
"\n",
"<b>Find the slope and intercept of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Slope</h4>"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[166.86001569]])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"slope = lm1.coef_\n",
"slope"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([-7963.33890628])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"intercept = lm1.intercept_\n",
"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": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# You can type you answer here\n",
"price = lm1.intercept_ + lm1.coef_ * df[['highway-mpg']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# using X and Y \n",
"Yhat=38423.31-821.733*X\n",
"\n",
"Price=38423.31-821.733*engine-size\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Multiple Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>What if we want to predict car price using more than one variable?</p>\n",
"\n",
"<p>If we want to use more variables in our model to predict car price, we can use <b>Multiple Linear Regression</b>.\n",
"Multiple Linear Regression is very similar to Simple Linear Regression, but this method is used to explain the relationship between one continuous response (dependent) variable and <b>two or more</b> predictor (independent) variables.\n",
"Most of the real-world regression models involve multiple predictors. We will illustrate the structure by using four predictor variables, but these results can generalize to any integer:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Y: Response \\ Variable\\\\\n",
"X_1 :Predictor\\ Variable \\ 1\\\\\n",
"X_2: Predictor\\ Variable \\ 2\\\\\n",
"X_3: Predictor\\ Variable \\ 3\\\\\n",
"X_4: Predictor\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"a: intercept\\\\\n",
"b_1 :coefficients \\ of\\ Variable \\ 1\\\\\n",
"b_2: coefficients \\ of\\ Variable \\ 2\\\\\n",
"b_3: coefficients \\ of\\ Variable \\ 3\\\\\n",
"b_4: coefficients \\ of\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The equation is given by"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>From the previous section we know that other good predictors of price could be:</p>\n",
"<ul>\n",
" <li>Horsepower</li>\n",
" <li>Curb-weight</li>\n",
" <li>Engine-size</li>\n",
" <li>Highway-mpg</li>\n",
"</ul>\n",
"Let's develop a model using these variables as the predictor variables."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using the four above-mentioned variables."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(Z, df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the value of the intercept(a)?"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-15806.62462632922"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What are the values of the coefficients (b1, b2, b3, b4)?"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" What is the final estimated linear model that we get?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear function with the structure:\n",
"\n",
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$\n",
"\n",
"What is the linear function we get in this example?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Price</b> = -15678.742628061467 + 52.65851272 x <b>horsepower</b> + 4.69878948 x <b>curb-weight</b> + 81.95906216 x <b>engine-size</b> + 33.58258185 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2 a): </h1>\n",
"Create and train a Multiple Linear Regression model \"lm2\" where the response variable is price, and the predictor variable is 'normalized-losses' and 'highway-mpg'.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2 = LinearRegression()\n",
"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": 20,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"coef2 = 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": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"slope2 = lm2.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>2) Model Evaluation using Visualization</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we've developed some models, how do we evaluate our models and how do we choose the best one? One way to do this is by using visualization."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"import the visualization package: seaborn"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# import the visualization package: seaborn\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Regression Plot</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When it comes to simple linear regression, an excellent way to visualize the fit of our model is by using <b>regression plots</b>.</p>\n",
"\n",
"<p>This plot will show a combination of a scattered data points (a <b>scatter plot</b>), as well as the fitted <b>linear regression</b> line going through the data. This will give us a reasonable estimate of the relationship between the two variables, the strength of the correlation, as well as the direction (positive or negative correlation).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's visualize Horsepower as potential predictor variable of price:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 48293.30798984996)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 12\n",
"height = 10\n",
"plt.figure(figsize=(width, height))\n",
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see from this plot that price is negatively correlated to highway-mpg, since the regression slope is negative.\n",
"One thing to keep in mind when looking at a regression plot is to pay attention to how scattered the data points are around the regression line. This will give you a good indication of the variance of the data, and whether a linear model would be the best fit or not. If the data is too far off from the line, this linear model might not be the best model for this data. Let's compare this plot to the regression plot of \"peak-rpm\".</p>"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 47422.919330307624)"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing the regression plot of \"peak-rpm\" and \"highway-mpg\" we see that the points for \"highway-mpg\" are much closer to the generated line and on the average decrease. The points for \"peak-rpm\" have more spread around the predicted line, and it is much harder to determine if the points are decreasing or increasing as the \"highway-mpg\" increases.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #3:</h1>\n",
"<b>Given the regression plots above is \"peak-rpm\" or \"highway-mpg\" more strongly correlated with \"price\". Use the method \".corr()\" to verify your answer.</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>peak-rpm</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>1.000000</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>-0.058598</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.101616</td>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" peak-rpm highway-mpg price\n",
"peak-rpm 1.000000 -0.058598 -0.101616\n",
"highway-mpg -0.058598 1.000000 -0.704692\n",
"price -0.101616 -0.704692 1.000000"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[[\"peak-rpm\", \"highway-mpg\",\"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The variable \"peak-rpm\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"highway-mpg\" which is approximate -0.101616. You can verify it using the following command:\n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Residual Plot</h3>\n",
"\n",
"<p>A good way to visualize the variance of the data is to use a residual plot.</p>\n",
"\n",
"<p>What is a <b>residual</b>?</p>\n",
"\n",
"<p>The difference between the observed value (y) and the predicted value (Yhat) is called the residual (e). When we look at a regression plot, the residual is the distance from the data point to the fitted regression line.</p>\n",
"\n",
"<p>So what is a <b>residual plot</b>?</p>\n",
"\n",
"<p>A residual plot is a graph that shows the residuals on the vertical y-axis and the independent variable on the horizontal x-axis.</p>\n",
"\n",
"<p>What do we pay attention to when looking at a residual plot?</p>\n",
"\n",
"<p>We look at the spread of the residuals:</p>\n",
"\n",
"<p>- If the points in a residual plot are <b>randomly spread out around the x-axis</b>, then a <b>linear model is appropriate</b> for the data. Why is that? Randomly spread out residuals means that the variance is constant, and thus the linear model is a good fit for this data.</p>"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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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": 27,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"\n",
"\n",
"ax1 = sns.distplot(df['price'], hist=False, color=\"r\", label=\"Actual Value\")\n",
"sns.distplot(Yhat, hist=False, color=\"b\", label=\"Fitted Values\" , ax=ax1)\n",
"\n",
"\n",
"plt.title('Actual vs Fitted Values for Price')\n",
"plt.xlabel('Price (in dollars)')\n",
"plt.ylabel('Proportion of Cars')\n",
"\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see that the fitted values are reasonably close to the actual values, since the two distributions overlap a bit. However, there is definitely some room for improvement.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 3: Polynomial Regression and Pipelines</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><b>Polynomial regression</b> is a particular case of the general linear regression model or multiple linear regression models.</p> \n",
"<p>We get non-linear relationships by squaring or setting higher-order terms of the predictor variables.</p>\n",
"\n",
"<p>There are different orders of polynomial regression:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center><b>Quadratic - 2nd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 \n",
"$$\n",
"\n",
"\n",
"<center><b>Cubic - 3rd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 +b_3 X^3\\\\\n",
"$$\n",
"\n",
"\n",
"<center><b>Higher order</b>:</center>\n",
"$$\n",
"Y = a + b_1 X^2 +b_2 X^2 +b_3 X^3 ....\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We saw earlier that a linear model did not provide the best fit while using highway-mpg as the predictor variable. Let's see if we can try fitting a polynomial model to the data instead.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We will use the following function to plot the data:</p>"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"def PlotPolly(model, independent_variable, dependent_variabble, Name):\n",
" x_new = np.linspace(15, 55, 100)\n",
" y_new = model(x_new)\n",
"\n",
" plt.plot(independent_variable, dependent_variabble, '.', x_new, y_new, '-')\n",
" plt.title('Polynomial Fit with Matplotlib for Price ~ Length')\n",
" ax = plt.gca()\n",
" ax.set_facecolor((0.898, 0.898, 0.898))\n",
" fig = plt.gcf()\n",
" plt.xlabel(Name)\n",
" plt.ylabel('Price of Cars')\n",
"\n",
" plt.show()\n",
" plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets get the variables"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"x = df['highway-mpg']\n",
"y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's fit the polynomial using the function <b>polyfit</b>, then use the function <b>poly1d</b> to display the polynomial function."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3 2\n",
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\n"
]
}
],
"source": [
"# Here we use a polynomial of the 3rd order (cubic) \n",
"f = np.polyfit(x, y, 3)\n",
"p = np.poly1d(f)\n",
"print(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's plot the function "
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PlotPolly(p, x, y, 'highway-mpg')"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.polyfit(x, y, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can already see from plotting that this polynomial model performs better than the linear model. This is because the generated polynomial function \"hits\" more of the data points.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #4:</h1>\n",
"<b>Create 11 order polynomial model with the variables x and y from above?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"p = np.poly1d(np.polyfit( df['highway-mpg'], df['price'], 11))\n",
"PlotPolly(p, x, y, 'length')"
]
},
{
"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": 35,
"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": 36,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"pr"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" horsepower curb-weight engine-size highway-mpg\n",
"0 111.0 2548 130 27\n",
"1 111.0 2548 130 27\n",
"2 154.0 2823 152 26\n",
"3 102.0 2337 109 30\n",
"4 115.0 2824 136 22\n",
".. ... ... ... ...\n",
"196 114.0 2952 141 28\n",
"197 160.0 3049 141 25\n",
"198 134.0 3012 173 23\n",
"199 106.0 3217 145 27\n",
"200 114.0 3062 141 25\n",
"\n",
"[201 rows x 4 columns]\n",
"[[1.0000e+00 1.1100e+02 2.5480e+03 ... 1.6900e+04 3.5100e+03 7.2900e+02]\n",
" [1.0000e+00 1.1100e+02 2.5480e+03 ... 1.6900e+04 3.5100e+03 7.2900e+02]\n",
" [1.0000e+00 1.5400e+02 2.8230e+03 ... 2.3104e+04 3.9520e+03 6.7600e+02]\n",
" ...\n",
" [1.0000e+00 1.3400e+02 3.0120e+03 ... 2.9929e+04 3.9790e+03 5.2900e+02]\n",
" [1.0000e+00 1.0600e+02 3.2170e+03 ... 2.1025e+04 3.9150e+03 7.2900e+02]\n",
" [1.0000e+00 1.1400e+02 3.0620e+03 ... 1.9881e+04 3.5250e+03 6.2500e+02]]\n"
]
}
],
"source": [
"print(Z)\n",
"Z_pr=pr.fit_transform(Z)\n",
"print(Z_pr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original data is of 201 samples and 4 features "
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 4)"
]
},
"execution_count": 39,
"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": 92,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 15)"
]
},
"execution_count": 92,
"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": 43,
"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": 44,
"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": 45,
"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": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe=Pipeline(Input)\n",
"pipe"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can normalize the data, perform a transform and fit the model simultaneously. "
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64, 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": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe.fit(Z,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Similarly, we can normalize the data, perform a transform and produce a prediction simultaneously"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64, 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": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ypipe=pipe.predict(Z)\n",
"ypipe[0:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #5:</h1>\n",
"<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, y, **fit_params).transform(X)\n",
"/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": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"input2=[('scale',StandardScaler()),('polynomial', PolynomialFeatures(include_bias=False)),('model', LinearRegression())]\n",
"pipe2 = Pipeline(input2)\n",
"pipe2\n",
"pipe2.fit(Z,y)\n",
"ypipe=pipe2.predict(Z)\n",
"ypipe[0:4]"
]
},
{
"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": 51,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.4965911884339176\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": 52,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": 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": 53,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import mean_squared_error"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value is: 31635042.944639888\n"
]
}
],
"source": [
"mse = mean_squared_error(df['price'], Yhat)\n",
"print('The mean square error of price and predicted value is: ', mse)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 2: Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.8093562806577457\n"
]
}
],
"source": [
"# fit the model \n",
"lm.fit(Z, df['price'])\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(Z, df['price']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we produce a prediction "
]
},
{
"cell_type": "code",
"execution_count": 56,
"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": 57,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value using multifit is: 11980366.87072649\n"
]
}
],
"source": [
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Y_predict_multifit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 3: Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let’s import the function <b>r2_score</b> from the module <b>metrics</b> as we are using a different function"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import r2_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We apply the function to get the value of r^2"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square value is: 0.7023769093756598\n"
]
}
],
"source": [
"r_squared = r2_score(y, p(x))\n",
"print('The R-square value is: ', r_squared)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 67.419 % of the variation of price is explained by this polynomial fit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>MSE</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also calculate the MSE: "
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"18703127.63085496"
]
},
"execution_count": 60,
"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": 61,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a new input "
]
},
{
"cell_type": "code",
"execution_count": 62,
"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": 63,
"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": 63,
"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": 64,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([37601.57247984, 36779.83910151, 35958.10572319, 35136.37234487,\n",
" 34314.63896655])"
]
},
"execution_count": 64,
"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": 65,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(new_input, yhat)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Decision Making: Determining a Good Model Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Now that we have visualized the different models, and generated the R-squared and MSE values for the fits, how do we determine a good model fit?\n",
"<ul>\n",
" <li><i>What is a good R-squared value?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the higher R-squared value is a better fit</b> for the data.\n",
"<ul>\n",
" <li><i>What is a good MSE?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the smallest MSE value is a better fit</b> for the data.</p>\n",
"\n",
"\n",
"<h4>Let's take a look at the values for the different models.</h4>\n",
"<p>Simple Linear Regression: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.49659118843391759</li>\n",
" <li>MSE: 3.16 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Multiple Linear Regression: Using Horsepower, Curb-weight, Engine-size, and Highway-mpg as Predictor Variables of Price.\n",
"<ul>\n",
" <li>R-squared: 0.80896354913783497</li>\n",
" <li>MSE: 1.2 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Polynomial Fit: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.6741946663906514</li>\n",
" <li>MSE: 2.05 x 10^7</li>\n",
"</ul>\n",
"</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Usually, the more variables you have, the better your model is at predicting, but this is not always true. Sometimes you may not have enough data, you may run into numerical problems, or many of the variables may not be useful and or even act as noise. As a result, you should always check the MSE and R^2.</p>\n",
"\n",
"<p>So to be able to compare the results of the MLR vs SLR models, we look at a combination of both the R-squared and MSE to make the best conclusion about the fit of the model.\n",
"<ul>\n",
" <li><b>MSE</b>The MSE of SLR is 3.16x10^7 while MLR has an MSE of 1.2 x10^7. The MSE of MLR is much smaller.</li>\n",
" <li><b>R-squared</b>: In this case, we can also see that there is a big difference between the R-squared of the SLR and the R-squared of the MLR. The R-squared for the SLR (~0.497) is very small compared to the R-squared for the MLR (~0.809).</li>\n",
"</ul>\n",
"</p>\n",
"\n",
"This R-squared in combination with the MSE show that MLR seems like the better model fit in this case, compared to SLR."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: We can see that Polynomial Fit brought down the MSE, since this MSE is smaller than the one from the SLR.</li> \n",
" <li><b>R-squared</b>: The R-squared for the Polyfit is larger than the R-squared for the SLR, so the Polynomial Fit also brought up the R-squared quite a bit.</li>\n",
"</ul>\n",
"<p>Since the Polynomial Fit resulted in a lower MSE and a higher R-squared, we can conclude that this was a better fit model than the simple linear regression for predicting Price with Highway-mpg as a predictor variable.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: The MSE for the MLR is smaller than the MSE for the Polynomial Fit.</li>\n",
" <li><b>R-squared</b>: The R-squared for the MLR is also much larger than for the Polynomial Fit.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Conclusion:</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing these three models, we conclude that <b>the MLR model is the best model</b> to be able to predict price from our dataset. This result makes sense, since we have 27 variables in total, and we know that more than one of those variables are potential predictors of the final car price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/skills_network_DA0101EN_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment