Skip to content

Instantly share code, notes, and snippets.

@dineshk999
Created October 21, 2019 04:07
Show Gist options
  • Save dineshk999/e87403ac69d504dd89992d9fbbab855f to your computer and use it in GitHub Desktop.
Save dineshk999/e87403ac69d504dd89992d9fbbab855f 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/corsera_da0101en_notebook_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 4: Model Development</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some questions we want to ask in this module\n",
"<ul>\n",
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n",
" <li>do I know if I put a fair value on my car?</li>\n",
"</ul>\n",
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n",
"\n",
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 4,
"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": 4,
"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": 5,
"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": 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 = 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": 7,
"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": 8,
"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": 8,
"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": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" highway-mpg\n",
"0 27\n",
"1 27\n",
"2 26\n",
"3 30\n",
"4 22\n",
".. ...\n",
"196 28\n",
"197 25\n",
"198 23\n",
"199 27\n",
"200 25\n",
"\n",
"[201 rows x 1 columns]\n"
]
}
],
"source": [
"Yhat=lm.predict(X)\n",
"print(X)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the intercept (a)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"38423.305858157386"
]
},
"execution_count": 10,
"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": 11,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([-821.73337832])"
]
},
"execution_count": 11,
"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": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lml = LinearRegression()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1 = LinearRegression()\n",
"lm1 \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1 b): </h1>\n",
"\n",
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[13728.4631336 ],\n",
" [13728.4631336 ],\n",
" [17399.38347881],\n",
" [10224.40280408],\n",
" [14729.62322775],\n",
" [14729.62322775],\n",
" [14729.62322775],\n",
" [14729.62322775],\n",
" [13895.32314929],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [19401.70366711],\n",
" [19401.70366711],\n",
" [19401.70366711],\n",
" [26910.40437322],\n",
" [26910.40437322],\n",
" [26910.40437322],\n",
" [ 2215.1220509 ],\n",
" [ 7054.06250595],\n",
" [ 7054.06250595],\n",
" [ 7054.06250595],\n",
" [ 7054.06250595],\n",
" [ 8388.94263148],\n",
" [ 7054.06250595],\n",
" [ 7054.06250595],\n",
" [ 7054.06250595],\n",
" [ 8388.94263148],\n",
" [12393.58300807],\n",
" [18066.82354158],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 5218.60233334],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [10391.26281977],\n",
" [10391.26281977],\n",
" [10391.26281977],\n",
" [10391.26281977],\n",
" [10391.26281977],\n",
" [10391.26281977],\n",
" [10558.12283547],\n",
" [11893.002961 ],\n",
" [35086.5451421 ],\n",
" [35086.5451421 ],\n",
" [46433.02620912],\n",
" [ 7220.92252164],\n",
" [ 7220.92252164],\n",
" [ 7220.92252164],\n",
" [ 7220.92252164],\n",
" [ 7220.92252164],\n",
" [ 3716.86219212],\n",
" [ 3716.86219212],\n",
" [ 3716.86219212],\n",
" [ 5385.46234903],\n",
" [12393.58300807],\n",
" [12393.58300807],\n",
" [12393.58300807],\n",
" [12393.58300807],\n",
" [12393.58300807],\n",
" [12393.58300807],\n",
" [15397.06329052],\n",
" [14395.90319637],\n",
" [22572.04396525],\n",
" [22572.04396525],\n",
" [22572.04396525],\n",
" [22572.04396525],\n",
" [31081.90476551],\n",
" [31081.90476551],\n",
" [43429.54592668],\n",
" [42762.10586391],\n",
" [15397.06329052],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 8388.94263148],\n",
" [10391.26281977],\n",
" [12393.58300807],\n",
" [18066.82354158],\n",
" [18066.82354158],\n",
" [18066.82354158],\n",
" [12393.58300807],\n",
" [12393.58300807],\n",
" [10391.26281977],\n",
" [10391.26281977],\n",
" [ 8222.08261579],\n",
" [ 9223.24270993],\n",
" [ 8222.08261579],\n",
" [ 8222.08261579],\n",
" [ 8222.08261579],\n",
" [ 8222.08261579],\n",
" [ 8222.08261579],\n",
" [ 8222.08261579],\n",
" [ 8222.08261579],\n",
" [ 8222.08261579],\n",
" [12059.86297669],\n",
" [12059.86297669],\n",
" [22238.32393387],\n",
" [22238.32393387],\n",
" [22238.32393387],\n",
" [22238.32393387],\n",
" [22238.32393387],\n",
" [22238.32393387],\n",
" [12059.86297669],\n",
" [17399.38347881],\n",
" [12059.86297669],\n",
" [17399.38347881],\n",
" [12059.86297669],\n",
" [17399.38347881],\n",
" [12059.86297669],\n",
" [17399.38347881],\n",
" [12059.86297669],\n",
" [17399.38347881],\n",
" [14395.90319637],\n",
" [ 7054.06250595],\n",
" [ 8388.94263148],\n",
" [ 7054.06250595],\n",
" [ 7054.06250595],\n",
" [ 8388.94263148],\n",
" [12393.58300807],\n",
" [18066.82354158],\n",
" [17232.52346312],\n",
" [24407.50413785],\n",
" [24407.50413785],\n",
" [24407.50413785],\n",
" [14062.18316499],\n",
" [14062.18316499],\n",
" [12226.72299238],\n",
" [12226.72299238],\n",
" [12226.72299238],\n",
" [12226.72299238],\n",
" [12226.72299238],\n",
" [12226.72299238],\n",
" [ 8222.08261579],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [10057.54278839],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 7387.78253733],\n",
" [ 8388.94263148],\n",
" [ 8388.94263148],\n",
" [10391.26281977],\n",
" [10391.26281977],\n",
" [ 8388.94263148],\n",
" [ 8388.94263148],\n",
" [ 8388.94263148],\n",
" [ 8388.94263148],\n",
" [ 8388.94263148],\n",
" [ 8388.94263148],\n",
" [ 8388.94263148],\n",
" [16398.22338467],\n",
" [16398.22338467],\n",
" [16398.22338467],\n",
" [16398.22338467],\n",
" [16398.22338467],\n",
" [16398.22338467],\n",
" [12393.58300807],\n",
" [10391.26281977],\n",
" [12393.58300807],\n",
" [12393.58300807],\n",
" [12393.58300807],\n",
" [20569.72377695],\n",
" [20569.72377695],\n",
" [20569.72377695],\n",
" [18901.12362004],\n",
" [ 8222.08261579],\n",
" [10224.40280408],\n",
" [ 8222.08261579],\n",
" [10224.40280408],\n",
" [10224.40280408],\n",
" [ 8222.08261579],\n",
" [10224.40280408],\n",
" [10224.40280408],\n",
" [10224.40280408],\n",
" [14729.62322775],\n",
" [ 8222.08261579],\n",
" [10224.40280408],\n",
" [15563.92330621],\n",
" [15563.92330621],\n",
" [15563.92330621],\n",
" [15563.92330621],\n",
" [13728.4631336 ],\n",
" [13728.4631336 ],\n",
" [15563.92330621],\n",
" [15563.92330621],\n",
" [20903.44380833],\n",
" [16231.36336897],\n",
" [15563.92330621]])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"X = df[['engine-size']]\n",
"Y = df[['price']]\n",
"lml.fit(X,Y)\n",
"Yhat = lml.predict(X)\n",
"Yhat"
]
},
{
"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": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[166.86001569]])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lml.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([-7963.33890628])"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lml.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# Slope \n",
"lm1.coef_\n",
"# Intercept\n",
"lm1.intercept_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 d): </h1>\n",
"\n",
"<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n",
"</div>"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"# You can type you answer here\n",
"yhat = -7963 + 167x"
]
},
{
"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": 20,
"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": 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": [
"lm.fit(Z, df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the value of the intercept(a)?"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-15806.624626329198"
]
},
"execution_count": 22,
"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": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])"
]
},
"execution_count": 23,
"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": 24,
"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": 24,
"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": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 25,
"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": 26,
"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": 27,
"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, 48270.61032863566)"
]
},
"execution_count": 27,
"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": 28,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 47422.919330307624)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAJNCAYAAABwXMA5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdfXBc133m+efc229oACRAijBlEoqEWGPYTEm2TGuciYvDsZONUpmlMzOMI21t4tp11tzEs/FU1lk7UxVuLWtmyqq4knVqKl4qzmyU7GxkDSebcKaipBxrMIwnUvTmyB5aSKRAskHqpSkSIF76/d6zf9zbQHejQTRe+nbf7u+nCtXdB+jmAUmgnz79O79jrLUCAAAAEA2n2xMAAAAABgkBHAAAAIgQARwAAACIEAEcAAAAiBABHAAAAIgQARwAAACIUKLbE4jabbfdZu+8885uTwMAAAB97vnnn3/bWnuoeXzgAvidd96p5557rtvTAAAAQJ8zxny31TglKAAAAECECOAAAABAhAjgAAAAQIQI4AAAAECECOAAAABAhAjgAAAAQIQI4AAAAECECOAAAABAhAjgAAAAQIQI4AAAAECECOAAAABAhAjgAAAAQIQI4AAAAECECOAAAABAhAjgAAAAQIQI4AAAAECECOAAAABAhAjgAAAAQIQS3Z4AsBszszmdvzSn+YW8JsezOnNiSienJ7o9LQAAgE2xAo7YmpnN6ezFy8otFzU2lFRuuaizFy9rZjbX7akBAABsigCO2Dp/aU5J1yibSsiY4DLpGp2/NNftqQEAAGyKAI7Yml/IayjpNowNJV1dWch3aUYAAABbI4AjtibHsypUvIaxQsXT0fFsl2YEAACwNQI4YuvMiSlVPKt8uSprg8uKZ3XmxFS3pwYAALApAjhi6+T0hM6dOqaJ0YxuFiqaGM3o3KljdEEBAAA9jTaEiLWT0xMEbgAAECusgAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoADAAAAESKAAwAAABEigAMAAAARIoAD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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": 29,
"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": 29,
"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": 30,
"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": [
"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": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"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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Ppl169YB8Je//IVhw4ZRVFTEN77xDSoqKtL5UVVLyzOKiIiI5LtbboGFC6Nts6gI7rkn4S1PP/0048ePp3fv3rRt25YFCxYwePBgnn/+eZ5++mnmzJlD8+bN+fDDD2nbti2/+93vuPvuuykpKUnYbt++fXnjjTdo3LgxL7/8Mt/73vd46qmnarx//PjxfPWrX6WsrIx27doxdepUbrrpprTairds2TKeeOIJZs+eTWFhIddffz2PPvooV155ZUrPJ6OgLiIiIiIZ8fjjj3PLLbcAMHnyZB5//HEGDx7Myy+/zNVXX03z5s0BaNu2ba3aLS8v56qrrmLlypWYGQcOHEh4f5MmTbjggguYNm0aF198MQsXLmTcuHFptRXvlVdeYf78+QwdOhSAvXv30rFjx1p9lkQU1EVERETyXZKR70woKyvj1Vdf5YMPPsDMqKiowMy46667cM6ltFxh48aNqaysBDhsDfLbb7+dM844g+nTp7Nu3bpDJTGJTJkyhZ/+9Kc455g4ceKhHUJTaSu+H/F9cc5x1VVX8Ytf/CLp+6dDNeoiIiIiErlp06Zx5ZVXsn79etatW8fGjRvp0aMHb731FuPGjeOhhx7i008/BeDDDz8EoGXLluzevftQG927d2f+/PkAh5WjlJeX07VrV8BPQE3FGWecwcqVK7nvvvuYMmVKrdrq3r07CxYsAGDBggWsXbsWgLPOOotp06axffv2Q59j/fr1KfUnFQrqIiIiIhK5xx9/nAsvvPCwaxdffDGPPfYY48eP54ILLqCkpISioqJDEzW/8pWvcO211x6aTPrDH/6Qm2++mVGjRtGoUaND7XznO9/htttuY8SIESlP3iwoKODiiy+mrKyM008/vVZtXXzxxXz44YcUFRXx+9//nt69ewPQr18/fvrTnzJu3DgGDhzI2LFj2bJlS61+TomYcy6yxvJJSUmJmzdvXl13Q0RERCQty5Yt46STTqrrbkic6v5NzGy+c67a2bMaURcRERERyUEK6iIiIiIiOUhBXUREREQkBymoi4iIiIjkIAV1EREREZEcpKAuIiIiIpKDFNRF6pmyMrjhBnj+edDqqiIikssaNWpEUVHRoWPdunXMmzePb37zmwDMmjWLt99++9D9Tz/9NEuXLq31+7Ro0eKIa2PGjOHFF1887No999zD9ddfX+u26oqCukg9cuAAXHop3H8/nHMOjBgBL7+swC4iIrnpqKOOYuHChYeO7t27U1JSwr333gtEF9SrM2XKFKZOnXrYtalTpx62K2muU1AXqUduuQVeew0efBAeeAA2boSxY2HMGJg9u657JyIiktysWbM477zzWLduHQ888AC/+c1vKCoq4vXXX2fmzJl8+9vfpqioiNWrV7N69WrGjx/PkCFDGDVqFMuXLwdg7dq1nHrqqQwdOpTbb7+92ve55JJLeOaZZ9i/fz8A69atY/PmzYwcOZJPPvmEs846i8GDBzNgwABmzJhRYz9jbrzxRh5++GEA5s+fz+jRoxkyZAhnn332od1I7733Xvr168fAgQOZPHly6J9V49AtiEhW3H+/P779bfjqV/21q67yof3nP4fTT4cFC2DQoLrtp4iI5J5bboGFC6Nts6gI7rkn8T179+6lqKgIgB49ejB9+vRDr3Xv3p1rr72WFi1a8K1vfQuACy64gPPOO49LLrkEgLPOOosHHniAXr16MWfOHK6//npeffVVbr75Zq677jquvPJK7rvvvmrfu127dgwbNowXXniBiRMnMnXqVC6//HLMjGbNmjF9+nSOOeYYdu7cySmnnMIFF1yAmSX93AcOHOCmm25ixowZdOjQgSeeeILvf//7PPTQQ9x5552sXbuWpk2bsmvXrlR+jAkpqIvUA6++Ct/8Jpx7LvziF59fb9YMbroJrrgCevaE738fnnmm7vopIiISL1b6ko5PPvmEt99+m0svvfTQtdjo+OzZs3nqqacA+PKXv8x3v/vdatuIlb/EgvpDDz0EgHOO733ve7zxxhsUFBSwadMmtm3bxrHHHpu0XytWrOCDDz5g7NixAFRUVNC5c2cABg4cyBVXXMGkSZOYNGlSWp87noK6SI5btQouuQT69IHHHoNGjY68p21buPVWf7z5Jowalf1+iohI7ko28p2LKisrad26dY1BP5XR70mTJvEf//EfLFiwgL179zJ48GAAHn30UXbs2MH8+fMpLCyke/fu7Nu377BnGzduTGVl5aHvY6875+jfvz/vvPPOEe/37LPP8sYbbzBz5kx+8pOfsGTJEho3Tj9uq0ZdJIc5BxdfDAUF8Pe/wzHH1HzvTTdB585w222aXCoiIvVDy5Yt2b17d7XfH3PMMfTo0YO//vWvgA/I77//PgAjRow4NFH00UcfrbH9Fi1a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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": 34,
"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": 35,
"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": 36,
"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": 37,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PlotPolly(p, x, y, 'highway-mpg')"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.polyfit(x, y, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can already see from plotting that this polynomial model performs better than the linear model. This is because the generated polynomial function \"hits\" more of the data points.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #4:</h1>\n",
"<b>Create 11 order polynomial model with the variables x and y from above?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 11 10 9 8 7\n",
"-1.243e-08 x + 4.722e-06 x - 0.0008028 x + 0.08056 x - 5.297 x\n",
" 6 5 4 3 2\n",
" + 239.5 x - 7588 x + 1.684e+05 x - 2.565e+06 x + 2.551e+07 x - 1.491e+08 x + 3.879e+08\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"k=np.polyfit(x,y,11)\n",
"g=np.poly1d(k)\n",
"print(g)"
]
},
{
"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": 39,
"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": 40,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"pr"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1.0000e+00, 1.1100e+02, 2.5480e+03, ..., 1.6900e+04, 3.5100e+03,\n",
" 7.2900e+02],\n",
" [1.0000e+00, 1.1100e+02, 2.5480e+03, ..., 1.6900e+04, 3.5100e+03,\n",
" 7.2900e+02],\n",
" [1.0000e+00, 1.5400e+02, 2.8230e+03, ..., 2.3104e+04, 3.9520e+03,\n",
" 6.7600e+02],\n",
" ...,\n",
" [1.0000e+00, 1.3400e+02, 3.0120e+03, ..., 2.9929e+04, 3.9790e+03,\n",
" 5.2900e+02],\n",
" [1.0000e+00, 1.0600e+02, 3.2170e+03, ..., 2.1025e+04, 3.9150e+03,\n",
" 7.2900e+02],\n",
" [1.0000e+00, 1.1400e+02, 3.0620e+03, ..., 1.9881e+04, 3.5250e+03,\n",
" 6.2500e+02]])"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z_pr=pr.fit_transform(Z)\n",
"Z_pr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original data is of 201 samples and 4 features "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 4)"
]
},
"execution_count": 42,
"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": 43,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 15)"
]
},
"execution_count": 43,
"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": 45,
"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": 46,
"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": 47,
"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": 47,
"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": 48,
"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": 48,
"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": 49,
"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": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ypipe=pipe.predict(Z)\n",
"ypipe[0:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #5:</h1>\n",
"<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.pipeline import Pipeline\n",
"input1 =[('scaler',StandardScaler()),('model',LinearRegression())]\n",
"pp = Pipeline(input1)\n",
"pp.fit(Z,y)\n",
"yy=pp.predict(Z)\n",
"print(yy)"
]
},
{
"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": 50,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.7609686443622008\n"
]
}
],
"source": [
"#highway_mpg_fit\n",
"lm.fit(X, Y)\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(X, Y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The output of the first four predicted value is: [[13728.4631336 ]\n",
" [13728.4631336 ]\n",
" [17399.38347881]\n",
" [10224.40280408]]\n"
]
}
],
"source": [
"Yhat=lm.predict(X)\n",
"print('The output of the first four predicted value is: ', Yhat[0:4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets import the function <b>mean_squared_error</b> from the module <b>metrics</b>"
]
},
{
"cell_type": "code",
"execution_count": 52,
"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": 53,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value is: 15021126.02517414\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": 54,
"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": 55,
"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": 56,
"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": 57,
"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": 58,
"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": 59,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"20474146.426361226"
]
},
"execution_count": 59,
"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": 60,
"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": 61,
"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": 62,
"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": 62,
"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": 63,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[-7796.47889059],\n",
" [-7629.6188749 ],\n",
" [-7462.75885921],\n",
" [-7295.89884352],\n",
" [-7129.03882782]])"
]
},
"execution_count": 63,
"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": 64,
"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/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment