Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pavanandhukuri/b12c236c80bcebd6febb008a72252258 to your computer and use it in GitHub Desktop.
Save pavanandhukuri/b12c236c80bcebd6febb008a72252258 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/DA0101EN_edx_link_Notebook_link_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/edx_DA0101EN_objectstorage\">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",
" <td>0</td>\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",
" <td>1</td>\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",
" <td>2</td>\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",
" <td>3</td>\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",
" <td>4</td>\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.305858157386"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the Slope (b)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"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",
"lm1 = LinearRegression()\n",
"lm1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1 = LinearRegression()\n",
"lm1 \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1 b): </h1>\n",
"\n",
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"X1 = df[['engine-size']]\n",
"Y1 = df['price']"
]
},
{
"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": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([166.86001569])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm1.fit(X1, Y1)\n",
"lm1.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-7963.338906281049"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm1.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# Slope \n",
"lm1.coef_\n",
"# Intercept\n",
"lm1.intercept_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 d): </h1>\n",
"\n",
"<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# You can type you answer here\n"
]
},
{
"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": 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.624626329198"
]
},
"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": 21,
"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": 21,
"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": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 22,
"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": 23,
"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": 24,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"text/plain": [
"(0, 48254.85029217686)"
]
},
"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": [
"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": 25,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 47422.919330307624)"
]
},
"execution_count": 25,
"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": 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",
" <td>peak-rpm</td>\n",
" <td>1.000000</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" </tr>\n",
" <tr>\n",
" <td>highway-mpg</td>\n",
" <td>-0.058598</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" </tr>\n",
" <tr>\n",
" <td>price</td>\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": 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": [
"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": 34,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"image/png": "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\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": 36,
"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": 37,
"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": 38,
"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": 39,
"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": 40,
"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": 40,
"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": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 11 10 9 8 7\n",
"-1.243e-08 x + 4.722e-06 x - 0.0008028 x + 0.08056 x - 5.297 x\n",
" 6 5 4 3 2\n",
" + 239.5 x - 7588 x + 1.684e+05 x - 2.565e+06 x + 2.551e+07 x - 1.491e+08 x + 3.879e+08\n"
]
},
{
"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(p1)\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": 42,
"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": 43,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"pr"
]
},
{
"cell_type": "code",
"execution_count": 44,
"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": 45,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 4)"
]
},
"execution_count": 45,
"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": 46,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 15)"
]
},
"execution_count": 46,
"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": 47,
"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": 48,
"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": 49,
"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": 49,
"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": 50,
"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": 50,
"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": 51,
"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": 51,
"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": 52,
"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([13699.11161184, 13699.11161184, 19051.65470233, 10620.36193015,\n",
" 15521.31420211, 13869.66673213, 15456.16196732, 15974.00907672,\n",
" 17612.35917161, 10722.32509097])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"Input=[('scale',StandardScaler()),('model',LinearRegression())]\n",
"pipe=Pipeline(Input)\n",
"\n",
"pipe.fit(Z,y)\n",
"\n",
"ypipe=pipe.predict(Z)\n",
"ypipe[0:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"</div>\n",
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"Input=[('scale',StandardScaler()),('model',LinearRegression())]\n",
"\n",
"pipe=Pipeline(Input)\n",
"\n",
"pipe.fit(Z,y)\n",
"\n",
"ypipe=pipe.predict(Z)\n",
"ypipe[0:10]\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 4: Measures for In-Sample Evaluation</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When evaluating our models, not only do we want to visualize the results, but we also want a quantitative measure to determine how accurate the model is.</p>\n",
"\n",
"<p>Two very important measures that are often used in Statistics to determine the accuracy of a model are:</p>\n",
"<ul>\n",
" <li><b>R^2 / R-squared</b></li>\n",
" <li><b>Mean Squared Error (MSE)</b></li>\n",
"</ul>\n",
" \n",
"<b>R-squared</b>\n",
"\n",
"<p>R squared, also known as the coefficient of determination, is a measure to indicate how close the data is to the fitted regression line.</p>\n",
" \n",
"<p>The value of the R-squared is the percentage of variation of the response variable (y) that is explained by a linear model.</p>\n",
"\n",
"\n",
"\n",
"<b>Mean Squared Error (MSE)</b>\n",
"\n",
"<p>The Mean Squared Error measures the average of the squares of errors, that is, the difference between actual value (y) and the estimated value (ŷ).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 1: Simple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.4965911884339175\n"
]
}
],
"source": [
"#highway_mpg_fit\n",
"lm.fit(X, Y)\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(X, Y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:"
]
},
{
"cell_type": "code",
"execution_count": 54,
"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": 55,
"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": 56,
"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.944639895\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": 57,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.8093562806577458\n"
]
}
],
"source": [
"# fit the model \n",
"lm.fit(Z, df['price'])\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(Z, df['price']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we produce a prediction "
]
},
{
"cell_type": "code",
"execution_count": 58,
"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": 59,
"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.870726489\n"
]
}
],
"source": [
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Y_predict_multifit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 3: Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let’s import the function <b>r2_score</b> from the module <b>metrics</b> as we are using a different function"
]
},
{
"cell_type": "code",
"execution_count": 60,
"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": 61,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square value is: 0.6741946663906517\n"
]
}
],
"source": [
"r_squared = r2_score(y, p(x))\n",
"print('The R-square value is: ', r_squared)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 67.419 % of the variation of price is explained by this polynomial fit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>MSE</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also calculate the MSE: "
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"20474146.426361226"
]
},
"execution_count": 62,
"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": 63,
"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": 64,
"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": 65,
"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": 65,
"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": 66,
"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": 66,
"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": 67,
"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/DA0101EN_edx_link_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.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment