Created
April 14, 2020 22:23
-
-
Save Arroak/2d505d7d891468b06b1761468dd6bd53 to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n", | |
| " <a href=\"https://cocl.us/skills_network_DA0101EN_top\">\n", | |
| " <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n", | |
| " </a>\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n", | |
| "\n", | |
| "<h1 align=center><font size=5>Data Analysis with Python</font></h1>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h1>Module 4: Model Development</h1>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Some questions we want to ask in this module\n", | |
| "<ul>\n", | |
| " <li>do I know if the dealer is offering fair value for my trade-in?</li>\n", | |
| " <li>do I know if I put a fair value on my car?</li>\n", | |
| "</ul>\n", | |
| "<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n", | |
| "\n", | |
| "<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Setup</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " Import libraries" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import pandas as pd\n", | |
| "import numpy as np\n", | |
| "import matplotlib.pyplot as plt" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "load data and store in dataframe df:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/da0101en_object_storage_skills_network\">HERE</a> for free storage." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>symboling</th>\n", | |
| " <th>normalized-losses</th>\n", | |
| " <th>make</th>\n", | |
| " <th>aspiration</th>\n", | |
| " <th>num-of-doors</th>\n", | |
| " <th>body-style</th>\n", | |
| " <th>drive-wheels</th>\n", | |
| " <th>engine-location</th>\n", | |
| " <th>wheel-base</th>\n", | |
| " <th>length</th>\n", | |
| " <th>...</th>\n", | |
| " <th>compression-ratio</th>\n", | |
| " <th>horsepower</th>\n", | |
| " <th>peak-rpm</th>\n", | |
| " <th>city-mpg</th>\n", | |
| " <th>highway-mpg</th>\n", | |
| " <th>price</th>\n", | |
| " <th>city-L/100km</th>\n", | |
| " <th>horsepower-binned</th>\n", | |
| " <th>diesel</th>\n", | |
| " <th>gas</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>3</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>convertible</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>88.6</td>\n", | |
| " <td>0.811148</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>111.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>21</td>\n", | |
| " <td>27</td>\n", | |
| " <td>13495.0</td>\n", | |
| " <td>11.190476</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>3</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>convertible</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>88.6</td>\n", | |
| " <td>0.811148</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>111.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>21</td>\n", | |
| " <td>27</td>\n", | |
| " <td>16500.0</td>\n", | |
| " <td>11.190476</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>1</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>hatchback</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>94.5</td>\n", | |
| " <td>0.822681</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>154.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>19</td>\n", | |
| " <td>26</td>\n", | |
| " <td>16500.0</td>\n", | |
| " <td>12.368421</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>2</td>\n", | |
| " <td>164</td>\n", | |
| " <td>audi</td>\n", | |
| " <td>std</td>\n", | |
| " <td>four</td>\n", | |
| " <td>sedan</td>\n", | |
| " <td>fwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>99.8</td>\n", | |
| " <td>0.848630</td>\n", | |
| " <td>...</td>\n", | |
| " <td>10.0</td>\n", | |
| " <td>102.0</td>\n", | |
| " <td>5500.0</td>\n", | |
| " <td>24</td>\n", | |
| " <td>30</td>\n", | |
| " <td>13950.0</td>\n", | |
| " <td>9.791667</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>2</td>\n", | |
| " <td>164</td>\n", | |
| " <td>audi</td>\n", | |
| " <td>std</td>\n", | |
| " <td>four</td>\n", | |
| " <td>sedan</td>\n", | |
| " <td>4wd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>99.4</td>\n", | |
| " <td>0.848630</td>\n", | |
| " <td>...</td>\n", | |
| " <td>8.0</td>\n", | |
| " <td>115.0</td>\n", | |
| " <td>5500.0</td>\n", | |
| " <td>18</td>\n", | |
| " <td>22</td>\n", | |
| " <td>17450.0</td>\n", | |
| " <td>13.055556</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "<p>5 rows × 29 columns</p>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " symboling normalized-losses make aspiration num-of-doors \\\n", | |
| "0 3 122 alfa-romero std two \n", | |
| "1 3 122 alfa-romero std two \n", | |
| "2 1 122 alfa-romero std two \n", | |
| "3 2 164 audi std four \n", | |
| "4 2 164 audi std four \n", | |
| "\n", | |
| " body-style drive-wheels engine-location wheel-base length ... \\\n", | |
| "0 convertible rwd front 88.6 0.811148 ... \n", | |
| "1 convertible rwd front 88.6 0.811148 ... \n", | |
| "2 hatchback rwd front 94.5 0.822681 ... \n", | |
| "3 sedan fwd front 99.8 0.848630 ... \n", | |
| "4 sedan 4wd front 99.4 0.848630 ... \n", | |
| "\n", | |
| " compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n", | |
| "0 9.0 111.0 5000.0 21 27 13495.0 \n", | |
| "1 9.0 111.0 5000.0 21 27 16500.0 \n", | |
| "2 9.0 154.0 5000.0 19 26 16500.0 \n", | |
| "3 10.0 102.0 5500.0 24 30 13950.0 \n", | |
| "4 8.0 115.0 5500.0 18 22 17450.0 \n", | |
| "\n", | |
| " city-L/100km horsepower-binned diesel gas \n", | |
| "0 11.190476 Medium 0 1 \n", | |
| "1 11.190476 Medium 0 1 \n", | |
| "2 12.368421 Medium 0 1 \n", | |
| "3 9.791667 Medium 0 1 \n", | |
| "4 13.055556 Medium 0 1 \n", | |
| "\n", | |
| "[5 rows x 29 columns]" | |
| ] | |
| }, | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# path of data \n", | |
| "path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n", | |
| "df = pd.read_csv(path)\n", | |
| "df.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>1. Linear Regression and Multiple Linear Regression</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Linear Regression</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "\n", | |
| "<p>One example of a Data Model that we will be using is</p>\n", | |
| "<b>Simple Linear Regression</b>.\n", | |
| "\n", | |
| "<br>\n", | |
| "<p>Simple Linear Regression is a method to help us understand the relationship between two variables:</p>\n", | |
| "<ul>\n", | |
| " <li>The predictor/independent variable (X)</li>\n", | |
| " <li>The response/dependent variable (that we want to predict)(Y)</li>\n", | |
| "</ul>\n", | |
| "\n", | |
| "<p>The result of Linear Regression is a <b>linear function</b> that predicts the response (dependent) variable as a function of the predictor (independent) variable.</p>\n", | |
| "\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| " Y: Response \\ Variable\\\\\n", | |
| " X: Predictor \\ Variables\n", | |
| "$$\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " <b>Linear function:</b>\n", | |
| "$$\n", | |
| "Yhat = a + b X\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<ul>\n", | |
| " <li>a refers to the <b>intercept</b> of the regression line0, in other words: the value of Y when X is 0</li>\n", | |
| " <li>b refers to the <b>slope</b> of the regression line, in other words: the value with which Y changes when X increases by 1 unit</li>\n", | |
| "</ul>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Lets load the modules for linear regression</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.linear_model import LinearRegression" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Create the linear regression object</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm = LinearRegression()\n", | |
| "lm" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>How could Highway-mpg help us predict car price?</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "For this example, we want to look at how highway-mpg can help us predict car price.\n", | |
| "Using simple linear regression, we will create a linear function with \"highway-mpg\" as the predictor variable and the \"price\" as the response variable." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "X = df[['highway-mpg']]\n", | |
| "Y = df['price']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Fit the linear model using highway-mpg." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(X,Y)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " We can output a prediction " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n", | |
| " 20345.17153508])" | |
| ] | |
| }, | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "Yhat=lm.predict(X)\n", | |
| "Yhat[0:5] " | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>What is the value of the intercept (a)?</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "38423.3058581574" | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.intercept_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>What is the value of the Slope (b)?</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| }, | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-821.73337832])" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>What is the final estimated linear model we get?</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "As we saw above, we should get a final linear model with the structure:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Yhat = a + b X\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Plugging in the actual values we get:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #1 a): </h1>\n", | |
| "\n", | |
| "<b>Create a linear regression object?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "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": 14, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm = LinearRegression()\n", | |
| "lm" | |
| ] | |
| }, | |
| { | |
| "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": 17, | |
| "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": 17, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm.fit(df[['engine-size']],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[['engine-size']], df[['price']])\n", | |
| "lm1\n", | |
| "\n", | |
| "-->\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #1 c):</h1>\n", | |
| "\n", | |
| "<b>Find the slope and intercept of the model?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Slope</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([[166.86001569]])" | |
| ] | |
| }, | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Intercept</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-7963.33890628])" | |
| ] | |
| }, | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm.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", | |
| "yhat = -7963.33890628 +166.86001569 * x" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "# using X and Y \n", | |
| "Yhat=38423.31-821.733*X\n", | |
| "\n", | |
| "Price=38423.31-821.733*engine-size\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Multiple Linear Regression</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>What if we want to predict car price using more than one variable?</p>\n", | |
| "\n", | |
| "<p>If we want to use more variables in our model to predict car price, we can use <b>Multiple Linear Regression</b>.\n", | |
| "Multiple Linear Regression is very similar to Simple Linear Regression, but this method is used to explain the relationship between one continuous response (dependent) variable and <b>two or more</b> predictor (independent) variables.\n", | |
| "Most of the real-world regression models involve multiple predictors. We will illustrate the structure by using four predictor variables, but these results can generalize to any integer:</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Y: Response \\ Variable\\\\\n", | |
| "X_1 :Predictor\\ Variable \\ 1\\\\\n", | |
| "X_2: Predictor\\ Variable \\ 2\\\\\n", | |
| "X_3: Predictor\\ Variable \\ 3\\\\\n", | |
| "X_4: Predictor\\ Variable \\ 4\\\\\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "a: intercept\\\\\n", | |
| "b_1 :coefficients \\ of\\ Variable \\ 1\\\\\n", | |
| "b_2: coefficients \\ of\\ Variable \\ 2\\\\\n", | |
| "b_3: coefficients \\ of\\ Variable \\ 3\\\\\n", | |
| "b_4: coefficients \\ of\\ Variable \\ 4\\\\\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "The equation is given by" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>From the previous section we know that other good predictors of price could be:</p>\n", | |
| "<ul>\n", | |
| " <li>Horsepower</li>\n", | |
| " <li>Curb-weight</li>\n", | |
| " <li>Engine-size</li>\n", | |
| " <li>Highway-mpg</li>\n", | |
| "</ul>\n", | |
| "Let's develop a model using these variables as the predictor variables." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "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": 22, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(Z, df['price'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "What is the value of the intercept(a)?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "-15806.62462632922" | |
| ] | |
| }, | |
| "execution_count": 23, | |
| "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": 24, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([53.49574423, 4.70770099, 81.53026382, 36.05748882])" | |
| ] | |
| }, | |
| "execution_count": 24, | |
| "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": 27, | |
| "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": 27, | |
| "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": 28, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([[ 1.49789586, -820.45434016]])" | |
| ] | |
| }, | |
| "execution_count": 28, | |
| "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": 29, | |
| "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": 30, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(0, 48275.220634967)" | |
| ] | |
| }, | |
| "execution_count": 30, | |
| "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": 31, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(0, 47422.919330307624)" | |
| ] | |
| }, | |
| "execution_count": 31, | |
| "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": 34, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>peak-rpm</th>\n", | |
| " <th>highway-mpg</th>\n", | |
| " <th>price</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>peak-rpm</th>\n", | |
| " <td>1.000000</td>\n", | |
| " <td>-0.058598</td>\n", | |
| " <td>-0.101616</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>highway-mpg</th>\n", | |
| " <td>-0.058598</td>\n", | |
| " <td>1.000000</td>\n", | |
| " <td>-0.704692</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>price</th>\n", | |
| " <td>-0.101616</td>\n", | |
| " <td>-0.704692</td>\n", | |
| " <td>1.000000</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " peak-rpm highway-mpg price\n", | |
| "peak-rpm 1.000000 -0.058598 -0.101616\n", | |
| "highway-mpg -0.058598 1.000000 -0.704692\n", | |
| "price -0.101616 -0.704692 1.000000" | |
| ] | |
| }, | |
| "execution_count": 34, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "df[['peak-rpm',\"highway-mpg\",'price']].corr()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "The variable \"peak-rpm\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"highway-mpg\" which is approximate -0.101616. You can verify it using the following command:\n", | |
| "df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Residual Plot</h3>\n", | |
| "\n", | |
| "<p>A good way to visualize the variance of the data is to use a residual plot.</p>\n", | |
| "\n", | |
| "<p>What is a <b>residual</b>?</p>\n", | |
| "\n", | |
| "<p>The difference between the observed value (y) and the predicted value (Yhat) is called the residual (e). When we look at a regression plot, the residual is the distance from the data point to the fitted regression line.</p>\n", | |
| "\n", | |
| "<p>So what is a <b>residual plot</b>?</p>\n", | |
| "\n", | |
| "<p>A residual plot is a graph that shows the residuals on the vertical y-axis and the independent variable on the horizontal x-axis.</p>\n", | |
| "\n", | |
| "<p>What do we pay attention to when looking at a residual plot?</p>\n", | |
| "\n", | |
| "<p>We look at the spread of the residuals:</p>\n", | |
| "\n", | |
| "<p>- If the points in a residual plot are <b>randomly spread out around the x-axis</b>, then a <b>linear model is appropriate</b> for the data. Why is that? Randomly spread out residuals means that the variance is constant, and thus the linear model is a good fit for this data.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 35, | |
| "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": 36, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "Y_hat = lm.predict(Z)" | |
| ] | |
| }, | |
| { | |
| "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 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": 38, | |
| "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": 39, | |
| "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": 40, | |
| "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": 41, | |
| "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": 42, | |
| "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": 42, | |
| "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": 43, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "f = np.polyfit(x,y,11)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "# calculate polynomial\n", | |
| "# Here we use a polynomial of the 3rd order (cubic) \n", | |
| "f1 = np.polyfit(x, y, 11)\n", | |
| "p1 = np.poly1d(f1)\n", | |
| "print(p)\n", | |
| "PlotPolly(p1,x,y, 'Length')\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>The analytical expression for Multivariate Polynomial function gets complicated. For example, the expression for a second-order (degree=2)polynomial with two variables is given by:</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Yhat = a + b_1 X_1 +b_2 X_2 +b_3 X_1 X_2+b_4 X_1^2+b_5 X_2^2\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can perform a polynomial transform on multiple features. First, we import the module:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 44, | |
| "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": 45, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)" | |
| ] | |
| }, | |
| "execution_count": 45, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "pr=PolynomialFeatures(degree=2)\n", | |
| "pr" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 46, | |
| "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": 47, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(201, 4)" | |
| ] | |
| }, | |
| "execution_count": 47, | |
| "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": 48, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(201, 15)" | |
| ] | |
| }, | |
| "execution_count": 48, | |
| "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": 49, | |
| "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": 50, | |
| "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": 51, | |
| "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": 51, | |
| "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": 53, | |
| "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": 53, | |
| "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": 54, | |
| "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": 54, | |
| "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": 57, | |
| "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" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "Pipeline(memory=None,\n", | |
| " steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False))])" | |
| ] | |
| }, | |
| "execution_count": 57, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "input1 = [('scale', StandardScaler()),('model',LinearRegression())]\n", | |
| "pipe = Pipeline(input1)\n", | |
| "pipe.fit(Z,y)" | |
| ] | |
| }, | |
| { | |
| "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": 58, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| }, | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The R-square is: 0.4965911884339176\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "#highway_mpg_fit\n", | |
| "lm.fit(X, Y)\n", | |
| "# Find the R^2\n", | |
| "print('The R-square is: ', lm.score(X, Y))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\"." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the MSE" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 59, | |
| "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": 60, | |
| "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": 61, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The mean square error of price and predicted value is: 31635042.944639888\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "mse = mean_squared_error(df['price'], Yhat)\n", | |
| "print('The mean square error of price and predicted value is: ', mse)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Model 2: Multiple Linear Regression</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the R^2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 62, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The R-square is: 0.8093562806577457\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# fit the model \n", | |
| "lm.fit(Z, df['price'])\n", | |
| "# Find the R^2\n", | |
| "print('The R-square is: ', lm.score(Z, df['price']))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the MSE" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " we produce a prediction " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 63, | |
| "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": 64, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The mean square error of price and predicted value using multifit is: 11980366.87072649\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print('The mean square error of price and predicted value using multifit is: ', \\\n", | |
| " mean_squared_error(df['price'], Y_predict_multifit))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Model 3: Polynomial Fit</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the R^2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "let’s import the function <b>r2_score</b> from the module <b>metrics</b> as we are using a different function" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 65, | |
| "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": 66, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The R-square value is: 0.674194666390652\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": 67, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "20474146.426361218" | |
| ] | |
| }, | |
| "execution_count": 67, | |
| "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": 68, | |
| "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": 69, | |
| "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": 70, | |
| "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": 70, | |
| "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": 71, | |
| "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": 71, | |
| "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": 72, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "plt.plot(new_input, yhat)\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Decision Making: Determining a Good Model Fit</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>Now that we have visualized the different models, and generated the R-squared and MSE values for the fits, how do we determine a good model fit?\n", | |
| "<ul>\n", | |
| " <li><i>What is a good R-squared value?</i></li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| "\n", | |
| "<p>When comparing models, <b>the model with the higher R-squared value is a better fit</b> for the data.\n", | |
| "<ul>\n", | |
| " <li><i>What is a good MSE?</i></li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| "\n", | |
| "<p>When comparing models, <b>the model with the smallest MSE value is a better fit</b> for the data.</p>\n", | |
| "\n", | |
| "\n", | |
| "<h4>Let's take a look at the values for the different models.</h4>\n", | |
| "<p>Simple Linear Regression: Using Highway-mpg as a Predictor Variable of Price.\n", | |
| "<ul>\n", | |
| " <li>R-squared: 0.49659118843391759</li>\n", | |
| " <li>MSE: 3.16 x10^7</li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| " \n", | |
| "<p>Multiple Linear Regression: Using Horsepower, Curb-weight, Engine-size, and Highway-mpg as Predictor Variables of Price.\n", | |
| "<ul>\n", | |
| " <li>R-squared: 0.80896354913783497</li>\n", | |
| " <li>MSE: 1.2 x10^7</li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| " \n", | |
| "<p>Polynomial Fit: Using Highway-mpg as a Predictor Variable of Price.\n", | |
| "<ul>\n", | |
| " <li>R-squared: 0.6741946663906514</li>\n", | |
| " <li>MSE: 2.05 x 10^7</li>\n", | |
| "</ul>\n", | |
| "</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>Usually, the more variables you have, the better your model is at predicting, but this is not always true. Sometimes you may not have enough data, you may run into numerical problems, or many of the variables may not be useful and or even act as noise. As a result, you should always check the MSE and R^2.</p>\n", | |
| "\n", | |
| "<p>So to be able to compare the results of the MLR vs SLR models, we look at a combination of both the R-squared and MSE to make the best conclusion about the fit of the model.\n", | |
| "<ul>\n", | |
| " <li><b>MSE</b>The MSE of SLR is 3.16x10^7 while MLR has an MSE of 1.2 x10^7. The MSE of MLR is much smaller.</li>\n", | |
| " <li><b>R-squared</b>: In this case, we can also see that there is a big difference between the R-squared of the SLR and the R-squared of the MLR. The R-squared for the SLR (~0.497) is very small compared to the R-squared for the MLR (~0.809).</li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| "\n", | |
| "This R-squared in combination with the MSE show that MLR seems like the better model fit in this case, compared to SLR." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<ul>\n", | |
| " <li><b>MSE</b>: We can see that Polynomial Fit brought down the MSE, since this MSE is smaller than the one from the SLR.</li> \n", | |
| " <li><b>R-squared</b>: The R-squared for the Polyfit is larger than the R-squared for the SLR, so the Polynomial Fit also brought up the R-squared quite a bit.</li>\n", | |
| "</ul>\n", | |
| "<p>Since the Polynomial Fit resulted in a lower MSE and a higher R-squared, we can conclude that this was a better fit model than the simple linear regression for predicting Price with Highway-mpg as a predictor variable.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<ul>\n", | |
| " <li><b>MSE</b>: The MSE for the MLR is smaller than the MSE for the Polynomial Fit.</li>\n", | |
| " <li><b>R-squared</b>: The R-squared for the MLR is also much larger than for the Polynomial Fit.</li>\n", | |
| "</ul>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h2>Conclusion:</h2>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>Comparing these three models, we conclude that <b>the MLR model is the best model</b> to be able to predict price from our dataset. This result makes sense, since we have 27 variables in total, and we know that more than one of those variables are potential predictors of the final car price.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h1>Thank you for completing this notebook</h1>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n", | |
| "\n", | |
| " <p><a href=\"https://cocl.us/skills_network_DA0101EN_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>About the Authors:</h3>\n", | |
| "\n", | |
| "This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n", | |
| "\n", | |
| "<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<hr>\n", | |
| "<p>Copyright © 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.10" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment