Created
October 21, 2019 00:54
-
-
Save Nutcracker2012/27f5d85f417902f051e52c89422be3a7 to your computer and use it in GitHub Desktop.
Created on Cognitive Class 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", | |
| " <td>0</td>\n", | |
| " <td>3</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>convertible</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>88.6</td>\n", | |
| " <td>0.811148</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>111.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>21</td>\n", | |
| " <td>27</td>\n", | |
| " <td>13495.0</td>\n", | |
| " <td>11.190476</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td>1</td>\n", | |
| " <td>3</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>convertible</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>88.6</td>\n", | |
| " <td>0.811148</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>111.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>21</td>\n", | |
| " <td>27</td>\n", | |
| " <td>16500.0</td>\n", | |
| " <td>11.190476</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td>2</td>\n", | |
| " <td>1</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>hatchback</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>94.5</td>\n", | |
| " <td>0.822681</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>154.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>19</td>\n", | |
| " <td>26</td>\n", | |
| " <td>16500.0</td>\n", | |
| " <td>12.368421</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td>3</td>\n", | |
| " <td>2</td>\n", | |
| " <td>164</td>\n", | |
| " <td>audi</td>\n", | |
| " <td>std</td>\n", | |
| " <td>four</td>\n", | |
| " <td>sedan</td>\n", | |
| " <td>fwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>99.8</td>\n", | |
| " <td>0.848630</td>\n", | |
| " <td>...</td>\n", | |
| " <td>10.0</td>\n", | |
| " <td>102.0</td>\n", | |
| " <td>5500.0</td>\n", | |
| " <td>24</td>\n", | |
| " <td>30</td>\n", | |
| " <td>13950.0</td>\n", | |
| " <td>9.791667</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td>4</td>\n", | |
| " <td>2</td>\n", | |
| " <td>164</td>\n", | |
| " <td>audi</td>\n", | |
| " <td>std</td>\n", | |
| " <td>four</td>\n", | |
| " <td>sedan</td>\n", | |
| " <td>4wd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>99.4</td>\n", | |
| " <td>0.848630</td>\n", | |
| " <td>...</td>\n", | |
| " <td>8.0</td>\n", | |
| " <td>115.0</td>\n", | |
| " <td>5500.0</td>\n", | |
| " <td>18</td>\n", | |
| " <td>22</td>\n", | |
| " <td>17450.0</td>\n", | |
| " <td>13.055556</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "<p>5 rows × 29 columns</p>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " symboling normalized-losses make aspiration num-of-doors \\\n", | |
| "0 3 122 alfa-romero std two \n", | |
| "1 3 122 alfa-romero std two \n", | |
| "2 1 122 alfa-romero std two \n", | |
| "3 2 164 audi std four \n", | |
| "4 2 164 audi std four \n", | |
| "\n", | |
| " body-style drive-wheels engine-location wheel-base length ... \\\n", | |
| "0 convertible rwd front 88.6 0.811148 ... \n", | |
| "1 convertible rwd front 88.6 0.811148 ... \n", | |
| "2 hatchback rwd front 94.5 0.822681 ... \n", | |
| "3 sedan fwd front 99.8 0.848630 ... \n", | |
| "4 sedan 4wd front 99.4 0.848630 ... \n", | |
| "\n", | |
| " compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n", | |
| "0 9.0 111.0 5000.0 21 27 13495.0 \n", | |
| "1 9.0 111.0 5000.0 21 27 16500.0 \n", | |
| "2 9.0 154.0 5000.0 19 26 16500.0 \n", | |
| "3 10.0 102.0 5500.0 24 30 13950.0 \n", | |
| "4 8.0 115.0 5500.0 18 22 17450.0 \n", | |
| "\n", | |
| " city-L/100km horsepower-binned diesel gas \n", | |
| "0 11.190476 Medium 0 1 \n", | |
| "1 11.190476 Medium 0 1 \n", | |
| "2 12.368421 Medium 0 1 \n", | |
| "3 9.791667 Medium 0 1 \n", | |
| "4 13.055556 Medium 0 1 \n", | |
| "\n", | |
| "[5 rows x 29 columns]" | |
| ] | |
| }, | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# path of data \n", | |
| "path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n", | |
| "df = pd.read_csv(path)\n", | |
| "df.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>1. Linear Regression and Multiple Linear Regression</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Linear Regression</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "\n", | |
| "<p>One example of a Data Model that we will be using is</p>\n", | |
| "<b>Simple Linear Regression</b>.\n", | |
| "\n", | |
| "<br>\n", | |
| "<p>Simple Linear Regression is a method to help us understand the relationship between two variables:</p>\n", | |
| "<ul>\n", | |
| " <li>The predictor/independent variable (X)</li>\n", | |
| " <li>The response/dependent variable (that we want to predict)(Y)</li>\n", | |
| "</ul>\n", | |
| "\n", | |
| "<p>The result of Linear Regression is a <b>linear function</b> that predicts the response (dependent) variable as a function of the predictor (independent) variable.</p>\n", | |
| "\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| " Y: Response \\ Variable\\\\\n", | |
| " X: Predictor \\ Variables\n", | |
| "$$\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " <b>Linear function:</b>\n", | |
| "$$\n", | |
| "Yhat = a + b X\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<ul>\n", | |
| " <li>a refers to the <b>intercept</b> of the regression line0, in other words: the value of Y when X is 0</li>\n", | |
| " <li>b refers to the <b>slope</b> of the regression line, in other words: the value with which Y changes when X increases by 1 unit</li>\n", | |
| "</ul>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Lets load the modules for linear regression</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.linear_model import LinearRegression" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Create the linear regression object</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm = LinearRegression()\n", | |
| "lm" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>How could Highway-mpg help us predict car price?</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "For this example, we want to look at how highway-mpg can help us predict car price.\n", | |
| "Using simple linear regression, we will create a linear function with \"highway-mpg\" as the predictor variable and the \"price\" as the response variable." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "X = df[['highway-mpg']]\n", | |
| "Y = df['price']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Fit the linear model using highway-mpg." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(X,Y)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " We can output a prediction " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n", | |
| " 20345.17153508])" | |
| ] | |
| }, | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "Yhat=lm.predict(X)\n", | |
| "Yhat[0:5] " | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>What is the value of the intercept (a)?</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "38423.305858157386" | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.intercept_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>What is the value of the Slope (b)?</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| }, | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-821.73337832])" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>What is the final estimated linear model we get?</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "As we saw above, we should get a final linear model with the structure:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Yhat = a + b X\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Plugging in the actual values we get:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #1 a): </h1>\n", | |
| "\n", | |
| "<b>Create a linear regression object?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm1 = LinearRegression()\n", | |
| "lm1 " | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm1 = LinearRegression()\n", | |
| "lm1 \n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1> Question #1 b): </h1>\n", | |
| "\n", | |
| "<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm1.fit(df[['engine-size']], df[['price']])\n", | |
| "lm1" | |
| ] | |
| }, | |
| { | |
| "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": 13, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([[166.86001569]])" | |
| ] | |
| }, | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm1.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Intercept</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-7963.33890628])" | |
| ] | |
| }, | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm1.intercept_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "# Slope \n", | |
| "lm1.coef_\n", | |
| "# Intercept\n", | |
| "lm1.intercept_\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #1 d): </h1>\n", | |
| "\n", | |
| "<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# You can type you answer here\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "# using X and Y \n", | |
| "Yhat=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": 14, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Fit the linear model using the four above-mentioned variables." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 16, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(Z, df['price'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "What is the value of the intercept(a)?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "-15806.624626329198" | |
| ] | |
| }, | |
| "execution_count": 17, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.intercept_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "What are the values of the coefficients (b1, b2, b3, b4)?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([53.49574423, 4.70770099, 81.53026382, 36.05748882])" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " What is the final estimated linear model that we get?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "As we saw above, we should get a final linear function with the structure:\n", | |
| "\n", | |
| "$$\n", | |
| "Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n", | |
| "$$\n", | |
| "\n", | |
| "What is the linear function we get in this example?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<b>Price</b> = -15678.742628061467 + 52.65851272 x <b>horsepower</b> + 4.69878948 x <b>curb-weight</b> + 81.95906216 x <b>engine-size</b> + 33.58258185 x <b>highway-mpg</b>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1> Question #2 a): </h1>\n", | |
| "Create and train a Multiple Linear Regression model \"lm2\" where the response variable is price, and the predictor variable is 'normalized-losses' and 'highway-mpg'.\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "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": 20, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm2 = LinearRegression()\n", | |
| "D=df[['normalized-losses', 'highway-mpg']]\n", | |
| "lm2.fit(D,df['price'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm2 = LinearRegression()\n", | |
| "lm2.fit(df[['normalized-losses' , 'highway-mpg']],df['price'])\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #2 b): </h1>\n", | |
| "<b>Find the coefficient of the model?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 1.49789586, -820.45434016])" | |
| ] | |
| }, | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm2.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm2.coef_\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>2) Model Evaluation using Visualization</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Now that we've developed some models, how do we evaluate our models and how do we choose the best one? One way to do this is by using visualization." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "import the visualization package: seaborn" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 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": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(0, 48273.65465627627)" | |
| ] | |
| }, | |
| "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+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdf3Db933n+dfn+wVAACQlUrJouRIdmxNflahnJ47iTbcena4/ru60q2T33Na+uyaz55413dw1O730mu5MdXea7U087TWX3E1zctO9Or2dOl51r1V36nTSeLlstnb8K3WyitnaSzuh5B/UD1L8AYAAvt/P/YEvQAAESJAEvsAXeD5mOCA+JKgPJZF44fN9f94fY60VAAAAgHA43Z4AAAAAMEgI4AAAAECICOAAAABAiAjgAAAAQIgI4AAAAECICOAAAABAiGLdnkDYbrnlFnvHHXd0exoAAADocy+99NI1a+2h+vGBC+B33HGHXnzxxW5PAwAAAH3OGPO9RuOUoAAAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACEigAMAAAAhIoADAAAAISKAAwAAACGKdXsCwF5Mzy7o/Myc5hczmhxP68zJKZ06NtHtaQEAADTFCjgia3p2QWcvXtLCSk5jqbgWVnI6e/GSpmcXuj01AACApgjgiKzzM3OKu0bpREzGlG7jrtH5mbluTw0AAKApAjgia34xo1TcrRlLxV1dXsx0aUYAAADbI4AjsibH08oWvJqxbMHT0fF0l2YEAACwPQI4IuvMySkVPKtMvihrS7cFz+rMyaluTw0AAKApAjgi69SxCZ07fVwTo0ndzBY0MZrUudPH6YICAAB6Gm0IEWmnjk0QuAEAQKSwAg4AAACEiAAOAAAAhIgADgAAAISIAA4AAACEiAAOAAAAhIgADgAAAISIAA4AAACEiAAOAAAAhIgADgAAAISIAA4AAACEiAAOAAAAhIgADgAAAISIAA4AAACEiAAOAAAAhIgADgAAAISIAA4AAACEiAAOAAAAhIgADgAAAISIAA4AAACEiAAOAAAAhIgADgAAAISIAA4AAACE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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 \"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": 30, | |
| "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": 35, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "ValueError", | |
| "evalue": "shapes (201,4) and (2,) not aligned: 4 (dim 1) != 2 (dim 0)", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-35-f493eb797774>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mY_hat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
| "\u001b[0;32m~/conda/envs/python/lib/python3.6/site-packages/sklearn/linear_model/base.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 211\u001b[0m \u001b[0mReturns\u001b[0m \u001b[0mpredicted\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 212\u001b[0m \"\"\"\n\u001b[0;32m--> 213\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_decision_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 214\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[0m_preprocess_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstaticmethod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_preprocess_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;32m~/conda/envs/python/lib/python3.6/site-packages/sklearn/linear_model/base.py\u001b[0m in \u001b[0;36m_decision_function\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 196\u001b[0m \u001b[0mX\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcheck_array\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maccept_sparse\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'csr'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'csc'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'coo'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 197\u001b[0m return safe_sparse_dot(X, self.coef_.T,\n\u001b[0;32m--> 198\u001b[0;31m dense_output=True) + self.intercept_\n\u001b[0m\u001b[1;32m 199\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;32m~/conda/envs/python/lib/python3.6/site-packages/sklearn/utils/extmath.py\u001b[0m in \u001b[0;36msafe_sparse_dot\u001b[0;34m(a, b, dense_output)\u001b[0m\n\u001b[1;32m 171\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 172\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 173\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 174\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 175\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;31mValueError\u001b[0m: shapes (201,4) and (2,) not aligned: 4 (dim 1) != 2 (dim 0)" | |
| ] | |
| } | |
| ], | |
| "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": 42, | |
| "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": 43, | |
| "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": 43, | |
| "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": 44, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| " 3 2\n", | |
| "-1.557 x + 204.8 x - 8965 x + 1.379e+05\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZoAAAEWCAYAAABfdFHAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXxU1fn48c+TyR6ygxASEBRQEUQEkWpV3PFbFWq10mq1rf3RWq3avfar1db6rdrWra22traida1WpSoqrVvFhUVUNpUICGFfkpCNJDPz/P64JzCZTCYhySxJnvfrNa/MPfeeO2fuTO4zZ7nniqpijDHGxEpKogtgjDGmb7NAY4wxJqYs0BhjjIkpCzTGGGNiygKNMcaYmLJAY4wxJqYs0PQCInKDiPw90eUIJSIXishLndy2S+UXkZ+KyF/2v3Qd7vePInJdlPVJd7wjEZF1InJqF/PufY8iMlxEakXE55ZfFZFv7Me+LhORrW4fxV0pT3eIyDwRuSTer5vM9vczjDULNHHkTgwN7h9yq4j8TUQGJLpcXaGqD6nq6d3dj4hME5GgOyYtj3+51/g/Vf2G226EiKiIpPZA2b+lqjeGvH5FN9+Dus8zNSQtVUS2iUinLlTriXJ0dd+qul5VB6hqoAv7TgNuA053+9jZnbK6fe7X/4mqnqmqc7r7uj0hESf43vDDyAJN/J2tqgOAo4CjgWsTXJ5ksMmdpFoeZye6QF1QBZwZsvw/QGWCyhJPg4FMYMX+ZhRPe+egDv9POshvkoh9SAmiqhuBecA4ABEZKiJzRWSXiJSLyP+LlE9EnhOR74SlfSAiM91zFZFvichqEakUkT+IiLh1KSJyrYh86n5tPyAi+W5dS43hayKyweX9logc7fZfJSK/D3nNr4rIGyHLd7p8u0VkiYgc391jFPZL7XX3t8r90v1M2LaZ7lfwQLd8rYj4RSTPLf9SRO5wz+93yzl4n8HQkNrUULfLdHd8akRkhYhM7qC4DwIXhyxfDDwQVsavicgqt881IvJNlx6xHO79PyEij7k874rIhHaOVYaI3CEim9zjDpcW7T225I1UWzxYRBaKSLWIPCMiRRFecwzwkVusEpGXXfqxIrLI5V0kIseG5HlVRG4SkQVAPXBQtIMa4f+kTf7wWoSI/L+Q47xSRI5y6UNF5EkR2S4ia0Xkymiv3dNEZKqIvOn+l94XkWkh614VkRtFZIEr90st32W3/mL3f7tTRK4T12wqItOBnwIXuM/2/ZCXPLC9/cWbBZoEEZFheL96l7qkR4AKYChwHvB/InJKhKxzgItC9jMBKAWeD9nmLLxfgROALwJnuPSvusdJeP/gA4Df09oxwGjgAuAO4H+BU4HDgS+KyIntvKVFwJFAEfAw8A8RyWxn2644wf0tcLWet0JXquoeV4YTQ7b/FDguZPm1sDx1eLWQ0BrVJrf6HOBRoACYS9vjFO5p4AQRKRCRAuB44JmwbbbhfTZ5wNeA20XkqA7KMQP4B/uO69PiNVeF+19gKt5nMAGYAlzbwb6juRj4Ot730Q/cFb6Bqn6M970A73M52QWk59z2xXjNas9J676brwCzgVy8z6hdEf5PouYXkfOBG1z58/A+x53i1Xz+BbyP9/9yCnC1iJzBfhLxfrjtZ55SvOPyS7zP8gfAkyIyKGSzL+N9Lw4A0t02iMhY4G7gQqAEyHfvAVV9Afg/4DH32U7oaH+JYIEm/p4WkSrgDbwT3/+5f6bPAj9W1T2q+h7wF7x/qHDPAKNFZLRb/grel6wpZJubVbVKVdcDr+CdfMD7ot6mqmtUtRa4BpgV9kv2RleGl4A64BFV3eZ+Wf4XmBjpTanq31V1p6r6VfW3QAZwSCePyVD3K6/l8cVO5gv3GnCiez9H4J3sTnQB72hX/s56Q1Wfd/0WD+KdvKPZg3ciuwCYhRec9oRuoKrPqeon6nkNeAkvIEWzRFWfUNVmvJN2Jl5ACXch8Av3WW0Hfk7k709nPaiqy12gug7vR4avE/k+B6xW1Qfdd+ER4EMgtDn0flVd4dY3t7OfNv8nncz/DeBWVV3kjnO5qn6K9/kPUtVfqGqTqq4B/oz3WbUhIqUi8qirHS4Vkatd2gS8HxX76yLgefedCqrqfGAxXhBt8TdV/VhVG4DH2fd/ex7wL1V9w/2f/wzoTN9fe/uLu253rJr9NlNV/x2a4JoydqlqTUjyp0Cb5hpVbRSRx4GLROTnwJfwvoihtoQ8r8eruYD36zT0F+CneN+BwSFpW0OeN0RYjtgpKyLfx/snH4r3T5AHdLaqvklVyzq5bTSv4Z2MjwKWAfOB+/BOzOWqumM/9hV+DDNFJFVV/VHyPAD8ChDgx+ErReRM4HpgDN6PvGxXzmg2tDxR1aB4nfpDI2wX6bONtF1nbQh5/imQhvd5bo28ebvlaMlf2s6+29Pm/6ST+YcBn0RIPxD3gyYkzUf7Pz7Ox6tJXoh3gr4cr4lqI95nvL8OBM4XkdCAm4b3Q7BFtP/b0O9BvYh0ZtBFe/uLOws0yWETUCQiuSHBZjjelzqSOXi/st8A6sObkTp4nQNDlofjNYtsBbp8ohevP+bHeM0RK9wJsRLvhNtTOvML7k28WtTngddUdaWIDMf7lf1aO3l6cvry/+I1bSjeZ3NwywoRyQCexGvSeUZVm0XkafYdo/bKMSxkHyl4n1Okpq+Wz7alU354yHZdeY/DQp4PB5qBzgTq8O9YS/4XQpa7e8yj5d9AyHEPS1+rqqMjrIvkLlUNuudL8JoRu2MDXi0xYt9rBzYT0jogIll4zZItkn4Kfms6SwKqugHvJPkr8Tq1jwAuBR5qZ/u3gCDwW7yA01mPAN8VkZHiDRdtaduN9iu9M3LxAtZ2IFVEfoZXo+lJ2/Hec7udx6paj3dSuJx9geVN4Ju0H2i2AsXiBkV0h3r33DgbOEfb3n8jHa85cTvgd7Wb0OHh7ZVjkoic65oDrwYagbcjvPwjwLUiMsh1+v4MaBlI0ZX3eJGIjBWRbOAXwBOdHP78PDBGRL4s3hDvC4CxwLP78drd8RfgByIySTyjRORAYCGwW0R+LCJZIuITkXEicnSknYQEma5Idf/HLY80vM/ibBE5w712pnjDzjvzA+8Jl/dYEUnHaxYN/RG3FRghSTwCL2kL1g99CRiB94vwKeB6147bngeA8ew7mXTGX/EC0+vAWrw+hO9EzdE5L+KNDPoYr5lkD51rHuk0F0RuAha4fpxI/RTgBZQ0vBNLy3Iu+0athe/3Q7yT9Bq33+40N+H6DtoM9XU11Svx2sor8Tpq53aiHM/g9ftU4vW5nNtOv8Yv8dr8P8BrjnvXpXX1PT4I3I/X/JLpyt4h9a6jOQv4PrAT+BFw1n42W3aZqv4D73vyMFCD159S5ILk2XjNYGvxamd/wetY72n34DUztzz+5n5MzsBrftuO9//xQzpxDnbfp+/gDU7ZjPe+tuH96ACviQ+8QQ/v9tzb6DnS9oeX6Q1E5GJgtqp+NtFlMbEhIjcAo1T1oo62Nf2Ha42oAkar6tpEl6czrEbTC7nmjG8D9ya6LMaY2BORs0UkW7zron6DV2tdl9hSdZ4Fml7Gjfvfjtcu+3CCi2OMiY8ZeM3qm/Cuc5sVoR8waVnTmTHGmJiyGo0xxpiYsutowhQVFemwYcM63tAYY8xeH3zwwQ5VHRRpnQWaMMOGDWPevHmJLoYxxvQqpaWl7c5bZ01nxhhjYsoCjTHGmJiyQGOMMSamLNAYY4yJKQs0xhhjYsoCjTHGmJiyQGOMMSamLND0EGmsZsCSP5C2vc0M8cYY06/ZBZs9RVLIW/J7dqek0Tzo8ESXxhhjkobVaHqIpufizy0ldddHiS6KMcYkFQs0Pai56BDSLNAYY0wrFmh6kL9oNKlV68Df2OG2xhjTX1ig6UHNRYcgGiC16pNEF8UYY5KGBZoe5C8+BIC0XR8nuCTGGJM8EhpoRGSdiCwTkfdEZLFLKxKR+SKy2v0tDNn+GhEpF5GP3C2NW9Inuf2Ui8hdIiIuPUNEHnPp74jIiFi+H3/ecNSXYYHGGGNCJEON5iRVPVJVJ7vlnwD/UdXRwH/cMiIyFpgFHA5MB+4WEZ/Lcw8wG+9e2qPdeoBLgUpVHQXcDtwS03eSkkpz4ShSd9qAAGOMaZEMgSbcDGCOez4HmBmS/qiqNqrqWqAcmCIiJUCeqr6lqgo8EJanZV9PAKe01HZixV90iNVojDEmRKIDjQIvicgSEZnt0gar6mYA9/cAl14KbAjJW+HSSt3z8PRWeVTVD1QDxeGFEJHZIrJYRBbv3LmzW2+ouWg0voYdpNTv6NZ+jDGmr0j0zADHqeomETkAmC8iH0bZNlJNRKOkR8vTOkH1XuBegAkTJrRZvz+a3YCA1F0f05Q9sDu7MsaYPiGhNRpV3eT+bgOeAqYAW11zGO7vNrd5BTAsJHsZsMmll0VIb5VHRFKBfGBXLN5LC3+RjTwzxphQCQs0IpIjIrktz4HTgeXAXOASt9klwDPu+VxglhtJNhKv03+ha16rEZGprv/l4rA8Lfs6D3jZ9ePETDCriEDWQAs0xhjjJLLpbDDwlOubTwUeVtUXRGQR8LiIXAqsB84HUNUVIvI4sBLwA5erasDt6zLgfiALmOceAPcBD4pIOV5NZlY83lhz8SE255kxxjgJCzSqugaYECF9J3BKO3luAm6KkL4YGBchfQ8uUMWTv2gMOSsegqAfUhLdDWaMMYmV6FFnfVJz0Rgk0ERq9aeJLooxxiScBZoYaC5qGXlmzWfGGGOBJgb8hQejKWmkb30v0UUxxpiEs0ATC750GsuOJXPdfyC2g9yMMSbpWaCJkYaRp5Nau4m0HSsTXRRjjEkoCzQxsufAk1Dxkbl2PgDLNtfxwKItLNtcl+CSGWNMfNnY2xjRzEKahh5N5tqXeLPsG1z5dDnNASXNt4W7Pj+a8SU5iS6iMcbEhdVoYqhhxGmkVa9lfflymgNKUKE5oCytqEl00YwxJm4s0MTQnpGnogjT9B3SfEKKQJpPmFiWm+iiGWNM3FjTWQwFsw+gefCRjNjxGnd9/hssrahhYlmuNZsZY/oVCzQx1jDyNPLfvpUjc3Yx/uhhHWcwxpg+xprOYmzPiNMAyFrzQoJLYowxiWGBJsYCeWU0lk5lwPv3IXsqE10cY4yJOws0cVD9mWuQplryFv8u0UUxxpi4s0ATB/6iMdSN/RLZqx4jdWe0u1UbY0zfY4EmTmomX0EwI5/8N2/qVfOf2YwGxpjuskATJx/sSuWlQV8nY/NissqfTXRxOmXZ5jqufGo19769mSufWm3BxhjTJRZo4qDlhP2d8oks1dHkvXYd6ZsWJrpYHVpaUWMzGhhjui3hgUZEfCKyVESedctFIjJfRFa7v4Uh214jIuUi8pGInBGSPklElrl1d4mIuPQMEXnMpb8jIiPi/f5g3wnbryn8v6bvsyt9CEUvXEba1qWJKE6nTSzLtRkNjDHdlvBAA1wFrApZ/gnwH1UdDfzHLSMiY4FZwOHAdOBuEfG5PPcAs4HR7jHdpV8KVKrqKOB24JbYvpXIQk/YNb58lh//J4LZAyme903Stq9IRJE6ZXxJDnd9fjSzp5bYRKDGmC5LaKARkTLgc8BfQpJnAHPc8znAzJD0R1W1UVXXAuXAFBEpAfJU9S1VVeCBsDwt+3oCOKWlthNP4SfsQ0YeyM6z/kYwPZfiZy8mY/1r8S5Sp40vyeHio4dYkDHGdFmiazR3AD8CgiFpg1V1M4D7e4BLLwU2hGxX4dJK3fPw9FZ5VNUPVAPF4YUQkdkislhEFu/cubO77ymi8BN2YMBQdpzzEP68Ayl68dvkLHugV41GM8aYzkpYoBGRs4Btqrqks1kipGmU9Gh5Wieo3quqk1V1cnFxmzgUM8EBQ9h5zt/Zc+BJ5L/1K/IX3AjBQNxe3xhj4iGRNZrjgHNEZB3wKHCyiPwd2Oqaw3B/t7ntK4DQWSnLgE0uvSxCeqs8IpIK5AO7YvFmukrTsqk87S5qj/g6OSsfofA/34dAU6KLZYwxPSZhgUZVr1HVMlUdgdfJ/7KqXgTMBS5xm10CPOOezwVmuZFkI/E6/Re65rUaEZnq+l8uDsvTsq/z3GskX/uUpLB76g+pnvpjsta+SPG8byJNtYkulTHG9IhE99FEcjNwmoisBk5zy6jqCuBxYCXwAnC5qra0M12GN6CgHPgEmOfS7wOKRaQc+B5uBFuyqjviq1SedAvpmxdT/NzXkSa7QNIY0/tJMv7AT6QJEybovHnzOt4whjLWvUzR/CtpLJ3KrjPuBl96QstjjDEdKS0tXaKqkyOtS8YaTb/XOOJkqk74BZkVCyh47VrQYMeZokjW+cqStVzGmJ5ld9hMUg2HnIuvfjt5i+4gmD2I3VN/2KX9tEx/0xxQ0nxbkubCy2QtlzGm51mNJonVHjmburFfZsAHfyVzzYtd2keyzleWrOUyxvQ8CzRJImIzkgjVx/6EpgMmUPDatfh2r9/v/SbrfGXJWi5jTM+zwQBhEjEYoHUzkrRpRvLVbGTQP7+AP7eMHTMebjM4YNnmOpZW1DCxLDdi81NH6xMlWctljNl/0QYDWB9NEojUjBR64n2vtoDaoT/gC2uvI++d37D72J/uXdeZvo7xJTlJeSJP1nIZY3qWNZ0lgWjNSC2B5IcfHsyc4HQGLH+Q9I1v7V1vfR3GmGRngSYJRJuOPzSQ3Nw8i10ZZRS8fj3SXA9YX4cxJvlZ01mSaK8ZaWJZLr6ULWhA8adkUD7pZ0x5cza5i+9i92d+sjdI9ca+DuujMaZ/sEDTK+jev5XFR1F32AXkLHuAhoOm0zz4yF7Z12HX0RjTf1jTWZJbWlFDIOiFmkDQW959zA8I5gym4PXreu1Mz9a3ZEz/YYEmyUXqg9H0AVR99mekVZaTs/zBRBexS6xvyZj+w5rOklx7fTCNB57EnuHTyH33bhpGnUUwZ3CCS7p/xpfkcNUJZbxaXsW0UQXWbGZMH2Y1ml4g/DbQLaqPvQYJ+gm+enOvm5xy2eY67ny9gsUbarjz9YpeVXZjzP6xQNOLBfKGs+agixm68QWWvvMyVz61utecsK2Pxpj+wwJNL/dU9hfYqAO5IfV+ggF/rzlhe8O2BQF8KdZHY0xfZoGmlxs/fBC/Cn6Fw1I2cFHqy73shK1hf40xfZEFml5ufEkOZ8/4Mp8OmMg1mf/kiCJ/j+4/VjcnizRs2xjTNyUs0IhIpogsFJH3RWSFiPzcpReJyHwRWe3+FobkuUZEykXkIxE5IyR9kogsc+vuEhFx6Rki8phLf0dERsT7fcbD+KEDyDrjetL8NeQu+UOP7bflosp7397c4/0/NrzZmP4jkTWaRuBkVZ0AHAlMF5GpwE+A/6jqaOA/bhkRGQvMAg4HpgN3i4jP7eseYDYw2j2mu/RLgUpVHQXcDtwSjzeWCP7iQ6g/9HxyVjxCatWaHtlnLDvso83vZozpWxIWaNRT6xbT3EOBGcAclz4HmOmezwAeVdVGVV0LlANTRKQEyFPVt9S7uc4DYXla9vUEcEpLbacvqpn8HTQ1k7y3bu6R/cW61tHesG1jTN+S0D4aEfGJyHvANmC+qr4DDFbVzQDu7wFu81JgQ0j2CpdW6p6Hp7fKo6p+oBoojlCO2SKyWEQW79y5s6feXtwFs4qpmfRtMjf8l4z1r3V7f1brMMb0hIQGGlUNqOqRQBle7WRclM0j1UQ0Snq0POHluFdVJ6vq5OLiNnGoV6k7/EL8+SPIf+vmHpkHzWodxpjuSopRZ6paBbyK17ey1TWH4f5uc5tVAMNCspUBm1x6WYT0VnlEJBXIB3bF5E0kC1861Z/5CanV68hZ8XCiS2OMMQkddTZIRArc8yzgVOBDYC5widvsEuAZ93wuMMuNJBuJ1+m/0DWv1YjIVNf/cnFYnpZ9nQe87Ppx+rTG4SeyZ9jx5C75Ayn1OxJdnHY9vXwHVz9dztPLk7eMxpjuS+SkmiXAHDdyLAV4XFWfFZG3gMdF5FJgPXA+gKquEJHHgZWAH7hcVQNuX5cB9wNZwDz3ALgPeFBEyvFqMrPi8s6SQPVnruGAf5xD7uI7qT7hxkQXp42nl+/g1pe9LreF673RbDPHDUxkkYwxMZKwQKOqHwATI6TvBE5pJ89NwE0R0hcDbfp3VHUPLlD1N4GCkdSNu4icZXOoP2wWzYMOT3SRWnm1vKrNsgUaY/qmDpvORCRHRFLc8zEico6IpMW+aKa7aiZ9m2BWMflv/ByCgY4zxNG0UQVRl40xfUdn+mheBzJFpBTvAsqv4TVTmSSn6bns/syPSd++jOwP/5Ho4rQyc9xAfnTyMKYMz+VHJw+z2owxfVhnms5EVetdn8nvVPVWEVka64KZntFw8OfI/vBJ8hbezp6RpxHMSp7h2zPHDbQAY0w/0JkajYjIZ4ALgedcmt2Zs7cQofqz1yH+BvLe/nWiS2OM6Yc6E2iuAq4BnnIjvw4CXoltsUxP8hccRO0RXyd79TOkb1qY6OLsFauZoY0xySVqzcQNPT5bVc9pSVPVNcCVsS6Y6Vm1R32TrDXzKHjtWraf9xSaltgr/Vtmhm4OKGm+LTbFjTF9WNQajbtOZVKcymJiSFOzqDrxJnw1FeS9c1uii8PSihqa/G5maL/dytmYvqwzfS1LRWQu8A9gbxuHqv4zZqUyMdFUMpm6cV9hwPIHaBh5Gk2lUxNWlrys1L2TzgXdsjGmb+pMH00RsBM4GTjbPc6KZaFMzwrtC6mZcjX+/AMpeO1/kabE9Y3sbvDvnfFU3LIxpm/q8Gekqn4tHgUxsRGpL+SoE3/FwLkXkr/gF1RNuxkScIueiWW5pKduceWyO2wa05d1GGhEJBPvTpWHA5kt6ar69RiWy/SQSHfJHH/0RGomXU7ekt/TNGQS9Yd9Me7larnXzdKKGiaW5dpAAGP6sM40nT0IDAHOAF7Dm4bfem57ifbukll71GXsKTuO/DdvIm3HioSUze51Y0z/0JlAM0pVrwPqVHUO8DlgfGyLZXpKu3fJlBSqTrqVYGYRhfOvRhqr41627lxHY9fgGNN7dGaoT7P7W+XugLkFGBGzEpkeN74kJ2KtIZhVxK5Tb2Pg3Isp+vfV7Jz+J/Clx6VM3bmOZtnmOq7452r8ASXVt4Xfn2vX4BiTzDpTo7lXRAqBa/FuJLYSuDWmpTJx0zx4IlUn3kjGxrcpfOXHcZvlOVLfUWfNW7WL5oCieHnnrerbN001prfrzKizv7inrwMHxbY4JhEaxswkpWEX+e/8mmBmIdXHXdfpkWjLNtd1qUPf6zvq6qiz8Juk9vmbphrTq7UbaETke0C1qt4Xlv4dwKeqd8S6cCZ+6iZ8HV/DTgZ88FeCadnUTPl+h8GmO81f3Rl1duZhxTy3aif+AKT6vOVwTy/fwavlVUwbVWAzRBuTYNFqNF8HjoqQfi+wCOhWoBGRYcADeCPagsC9qnqniBQBj+H1A60DvqiqlS7PNXhDrQPAlar6okufxL5bOT8PXKWqKiIZ7jUm4V10eoGqrutOufuy3cf8AGmuI/f9+/DVb6fqhBuj9tlEHDq9HwGjvb6jzuT7/blj2g1SdptoY5JLtD4aVdWmCImNQE9c4ecHvq+qhwFTgctFZCzwE+A/qjoa70ZrPwFw62bhXc8zHbjbTfoJcA8wGxjtHtNd+qVApaqOAm4HbumBcvddIlR/9np2T76K7NVzKX7hm0hT+30n7Q2djodoQ6Mj3SbaGJM4UQcDiMjgzqR1hapuVtV33fMaYBVQCswA5rjN5gAz3fMZwKOq2qiqa4FyYIqIlAB5qvqWqipeDSY0T8u+ngBOEUnAZfC9iQi1R32Lymm/In3TYgb98zzStyyJuOn4khyuOqGMycNyueqEsqQZ+WW3iTYmuURrOvs18JyIfB9416VNwhtx9pueLISIjAAmAu8Ag1V1M3jBSEQOcJuVAm+HZKtwac3ueXh6S54Nbl9+EakGioEdPVn+vqhhzEwCuWUUvHoNxXO/Qt34S9h99FWQundyCJZtruPO1ytoDijvb6rl4OKspAg2Lc1k1kdjTHJoN9Co6gMish34BTAOb2jPCuB6VZ3XUwUQkQHAk8DVqro7SoUj0gqNkh4tT3gZZuM1vVFaWtomQ3/VVDKZVz/7MIWLfsukZfeTueZFao+8lPpDzoPUjG730XR1xFpn2G2ijUkeUYc3u4DSY0ElnIik4QWZh0JuO7BVREpcbaYE2ObSK4BhIdnLgE0uvSxCemieChFJBfKBNhddqOq9eIMcmDBhgo2VdZZtruPKf22kOXABx6UewV3pz1C44JfkvvtH6g6/kOMKTuBvPunSEOWOLrqMZRAyxsRXZy7YjAnXV3IfsEpVQ+/ENRe4xD2/BHgmJH2WiGSIyEi8Tv+FrpmtRkSmun1eHJanZV/nAS+7fhzTCaE3J1vQfBh/OvAOdpw1B3/RKPIW38nxr3yBxYXX8tDwZ3l06gaOHFAFnTy80S66bBk2fe/bm7nyqdURp5mxKWjix4616a5E3m3qOOArwDIRec+l/RS4GXhcRC4F1gPnA6jqChF5HG9mAj9wubsDKMBl7BveHFoLuw94UETK8Woys2L9pvqSNjcny06jaegUdg6dQkrtZrLWzidz7UtM3foYsvVhWAzBtAEEBgwhkDOYnRSyqTGDwsIiBhUVoqlZaGommpZNSWUNR4iym2y2awG76vcNcGwJcMq+u2+G13Z6622ge1tNrTcfa5M8ol2weZW7ruU4VV3Q0y+sqm/Q/jDpU9rJcxNwU4T0xXj9SOHpe3CByuy/0JuRhd+cLDighLrxF1M3/mLw7yFt18ek7VhBauUn+Oq20lS1iZTKVRxKA7nbG9rs+8cAGfuW92zOIvWxwfjzR3C6fyjbUvJ4T0exRkva3H2zu31DHYlVMOiNJ+1YH2vTP0Sr0XwNuBP4HZEv3DR9XOgJXolyu+XUTJoPOILmA47Ym/TAoi3cu3UzQQWfBLni6Hy+dEQe0tyANNez4KONPLt0HXnUM0iq+NxwP2Myd5NatYYJVW9wVLoX1HZoHjtWTiQr7XT2HHgymlnQzSJXy9QAACAASURBVOlrootlMOiNJ+1YHmvTf0QLNKtEZB0wSEQ+CEkXvIs5j4iczfQVLbdbbhnatz+3W55YlosvZQsaUFJSfIw9sIRg9r6T6lNvp/N6cN/UMR9KHjefdjAAyzdWc8cz/2WCfsRU34ecvudDsl57DZVUGkuPYcroc/jdOcfz7ubGdmsd0Wol0dbFMhiEHhNfSu84adsN6kxPiDa8+UsiMgR4ETgnfkUyyaK7t1v2u85+f6DtAIEddf52l8eV5nPWCVN5tfxQho26hMrDi6ndsYLMNS+SteYFCl/5MdPSC8gt/B+air8MHNxqX9FGtHU02i32v+A17G/y6+pUQca06Gh48xZggoikA2Nc8keq2hwlm+kjuvNr9p4FG1udUu9ZsJG7zxuzd/1Zhxezcmt9q+UWkS8EHUfzoHHUTPkum5a9QuWb93PylkcIbHmMrSNmkH7stwnketdAtYxog30j2lrKHm1dd99zR5ZW1BAIescjEKRXNJ0Z0xM6HHUmIifiTeuyDq8FZZiIXKKqr8e4bCYJdPRrtr1mqE8r97TaLnw52tX7UZuvJIV/Nx7Ovc3fo0S38+20ucxaP5eUDf+i/tDzqJl0BbvqW/8Oar3c8S0GYvUL3vo7TH/VmeHNtwGnq+pHACIyBngEbzoa049F6zj3pbQeUBi+DHBwcRa7G/wcXJzVKr2jE3LL+s2BQfxCv0HZKd9l8qa/k73qcbLKn+ULuRfwNsfTRBoARdn7vuaducVArFh/h+mvOhNo0lqCDICqfuyu6Df9XLSaR0rYVELhy9GCVEcn5PD1o0tyqD7oeuoOv4i8t29hxoa/MC79Oa71f523gocz5oDsVnmj3WIg1qy/w/RHnQk0i0XkPuBBt3whEHk6X9OvRKt5HFk6gJc+qmy1HKqj0V0dnZAjrfcXHsyuM+/lX/96kukb7+KR9Jt4InACSzd/B0Ka5uxkb0x8dSbQXAZcDlyJ10fzOnB3LAtlkke0ocDRah7Zaa1nNwpfjmV/xaqco7mt6VauTP0ns33PMf3T92lacwN7DprecWZjTI/rMNC4G53d5h6mH+nMxYvt1w7C+2RaL7fcy6ZlMEBP1jBa+mF+45/F83osDxfMoejf36XhoBepPu46gllFUfP3tmliekJ/fM8mfhI515lJch3NOQbtn6DOPKzIdborqT7hzMOK2uS7/bUK/AFl6cb9v5dNRzWt7544zAWx46gb+znk/fvIXfIH0jctpPqEX7BnRMRZjnrlNDHd1R/fs4mvhM3ebJJfm0k1w6agiTbL8viSHL545CBK89P54pGD2py4os3e3JGOZnduuQ5n8YYa7ny9gmVbG6md+E22n/sEwZzBFL10BQWv/hRpqm2z70h9Rz0pGWdCjvV7NqbTgUZE7CdOP9MyBQ1EnoIm2gnq6eU7eGjJNiqqm3hoyTaeXh5+U9OOr2dpT0cnxtDbGzT59633F41h+8xHqZn4TbJWP8OgJ84hfdPCVnm9viMhRYjZPGrRbn+QCLF8z8ZAJwKNiBwrIiuBVW55gojYYIB+wJuCxjsBpae2dz1L5BPU40u3tdo2fPnMw4pJ83kBLG0/r2fp6MRY0xRoNStBTVNg30pfOjVHX82Ocx6ClDSKn/0qeW/dAv5GYN8Ah9lTSyI2IXWnRpKsNYeO3rMx3dWZPprbgTPwbiKGqr4vIifEtFQmKXTmepb2OvT3+IOttg1f7s71LB2Va3XYbQnClwGaBx/J9i88Rd7btzJg2f1kVLxB1bSbaR50eLsDHLrbl5HMMwPYkG8TS50aDKCqG6T1BXeB9rY1fUu0E5DXob8BfwCWbqxp1aE/JDedLTX7pn4Zkpu+X/vuTrkKwvqSwpdbDSQ4/gb2HHgyBa9fx8CnL6B24jd5q+QrvLtpT5sg1t2ZnW1mANNfdSbQbBCRYwF1k2teiWtGM/3bvFU7aXY/OZoD3nLLyXNEUSbvbdrXvDSiKDNu5aoK60sKXY44e/PwE9h2/lzyF9xE7rt3U6bPcVfTbO5LOajV7M6dqZE8vXxHxPnbWljNwfRHnRkM8C28CzZLgQrgSLds+r32r5XpTh9Md00bVdDucnuj3TQjn6qTb+W+IdcziCqeTr+O78tD/HvFpr15O+rLeHr5Dm59eQML19dw68sbIgyAMOGScRSe6XmduWBzB960Mz1ORP4KnAVsU9VxLq0IeAwYgTdj9BdVtdKtuwa4FK/p7kpVfdGlTwLuB7KA54GrVFVFJANv5ulJwE7gAlVdF4v30h+NOSCr3eVEzikWbWbo6DM7w7IBx3JnYynXpD7Ct1KfZcf6Jcj6n9E4fFqHr/vsip1tlsNrNXZh5D52/U7/0ZlRZ3NEpCBkudAFiJ5wPxA+L8hPgP+o6mjgP24ZERkLzAIOd3nuFhGfy3MPMBsY7R4t+7wUqFTVUXiDGm7poXIbOh7+PL4kh4uPHpKQk8fMcQO5Y+aoNif60JmcIy2feVgxdSkDuMb///hy87VkZqRT/MJlFL3wLT5ZvYor/vkxf3prM1f88+M2v8LTfRJ1uaXZzsufPMObEyVZR+GZnteZprMjVLWqZcHVLib2xIu7e9qEX6k3A5jjns8BZoakP6qqjaq6FigHpohICZCnqm+pquLVYGZG2NcTwCkSNqrBdF1Hw5+TUehMzpGWgb2X9LwTHMub0x6l+pgfkr55EZ955QJ+KnMopnpvn1SouiZ/1OXuXKTaF9n1O/1HZwYDpIhIYUjzVVEn83XVYFXdDKCqm0XkAJdeCrwdsl2FS2t2z8PTW/JscPvyi0g1UAy0ajwXkdl4NSJKS0sxndPdUVSJaEYKrXVFqoU9tGQrLXeeDij8fekuxp31dRpGn8WH/7yJr9TN5wLfq/w1MJ2VtbOA4Xvzbq9tva/w5Y4uUu1oIEFfE8v57kxy6UzA+C3wpog84ZbPB26KXZHaFakmolHSo+VpnaB6L3AvwIQJE3rPzdyTQFdHUSWqfT704s02F3MCH2+vj7gczD6AvxZcxc8rz+C7qU9wReozNG59Af8bn6d2/CUE8kd0ONLuzMOK+deKnQQUfNJ6gETLQAKAheu9JqS+Hmwi37I7TsEm2EzajpWkb1uGr3YTvppNpDTsgJRU1JeBpmXTXDSa5kHjaRo0Ds0sjE+5+qjODAZ4QEQWAyfjnbjPVdWVMSzTVhEpcbWZEqDlkvIKYFjIdmXAJpdeFiE9NE+FiKQC+bRtqjMJ0N1rUrqqo4s5mwLBdpeLslN5XUu4svk73OX/PDcOepmpHz5J9srHaCz9DFcUn8x3Nh1EA16AOf3Q1hOJfrKzoVVt6ZOdDXvfc6SZFPp6oIn3dyClfhuZa+aTuf4V0rcsJcXv/YhQXwb+AUMJZg+CoJ+UplpSqteRueZFxP0ubSyZQv2h59Ew8jRIjd9Q/b6i3UAjInmquts1lW0BHg5ZV6SqsTphzwUuAW52f58JSX9YRG4DhuJ1+i9U1YCI1IjIVOAd4GLgd2H7egs4D3jZ9eOYBEvUVfLTRhXsrTG0LIfK8KUQej2yt+wJvQ30pyll7D7xl2zN/yk5Kx8ja/XTnLrxlyzKyOTV4JG8EjiSd1ZObRUsXi2vCn0pXi2v2ru+o5kUuisZR7vF4zsgzfVkrnmB7I+fIX3zIgSlueBgGsbMpHHo0TQNnkgw+wCI0HUrTbVerWfzIrJXz6XwlR+RvyCP2vEXU3fE19C0CP17JqJoNZqH8YYeL6F1c5O45YO6++Ii8ggwDRgoIhXA9XgB5nERuRRYj9dUh6quEJHHgZWAH7hcVVvOCJexb3jzPPcAuA94UETK8Woys7pbZtMzEnWV/MxxA9lY3chr5VWcGKEvZHBuGptDZjQYnLvvruWRhmwHyaFm8hXUTPo21/75cU4LvM4pvqWc5Xsbqv5I8+MH0zxoHE2DxvPlQQewYb2wlUKCpLQKcqkprU904csABJpIaax2j91IYzUpTTVIUy3bdlWyfVc1QwcIg7IADYCkgPjYXh9k5UcN7NEs5i/Kofi4sQwfNpxAzmA0PS/iSTYeYvkdSN31sfsBMJeU5lr8+SOoPeoyGg6ajr9oNOD6xOZXMW2Ur833YF9/2UHMnDSF2qMuI33zYnKW/528Jb8n58N/sPvoq2kYfY53nE1UEu0HvhuhNUxV18evSIk1YcIEnTdvXscbml6pdd+QtOkbuuyJj3k/pJ9lwtAc7jlvTKv87Z0YL3l4Fat37AGUw+VTzs1dwYVDNpK2fTm+hn3jT5rUxzYKycwpIDe/CE3LZsGntTQHBUFJp5nsFD8TB/uQptq9wSTF33bOtlBBFZpIJTUtnRRfKqiC+vE3N5NOc+Q86Xn4C0awvHEwb9UOIbNsPP9z4vFoZkHE7ZNa0E/mupfJWfEQGZsXor50GkaeQf1hX6RpyKRWATW0TwzgRycP2xtsoq0DSN+yhLy3biZ9+3Iahx5D5Um3EMwZHIc3uB80SOanr9A0cCzBASVxecnS0tIlqjo50rqofTTuosen8C54NKbX66hfoDpsFFp1R9PXhOQtyctwgUZYoSMoHjiBM6cfBKqk1G3hz8+/QcP2Txku2xgkVRzob2S8Bkip38YwqSMoXnPZHtIgJZ1gWj6aU0IwfQCaPoBgRgHBzHyC6XloRj7BjDyC6bk8vrKBPy6ppk4zSBFh9lElXHz0kL3l+vKDK6morCOXevKkniNy6/n58Vn46raSuns9Wz79iJLaJVwuu+BT4AHw5w2nafCRNA0+iqYhR+EvHJWwmk9HUup3kP3hP8hZ9Ti+ui34Bwxl95TvU3foF9rtxI/WjBltHUDTkEnsmPkY2R89Sd6bN3PAEzOoOvGX7BlxaqfKG+tmTF/1pxS8fh0ZmxcRTMtm95TvUT/2SwmteXVm1NnbInK0qi6KeWmMibGJZbn4UragAcWX0rZfYHhhJusqG1stt2i5Dgb2XQfTqROFCMEBJRSPPan1L+XjhzHUncCufbq8Vd/RlOG53PG5UZ16T2NG1uF/bzUp7fR11DYF8JNKJXlUah51gVT2HDx+7/pLPllBRWMTBdRweMo6Ppu1nq8WbSWjYgHZq+cCEMgsoqnkaBqHTqGpdCr+/JGJDTwaJH3j22R/9CRZa+cjwWb2lB5L9XHXsmf4NEjxRc0era+uo348ACSF+kPPp3HIZApf/iFFL32H2nFfYffUH0FK+6fVmI62VCVn+YPkLrwdfGlUH/tTMta/TsGCX5JV/jxVJ99KIDcxl290JtCcBHxLRNYBdbg+GlU9IpYFMyZ2NOzvPhdOGsyCddUEguBL8Zbb5ou83NGsA9GmxtlU3dhq2/DlaDrq66is90ddrnczo1aRy4LgeFbpkcw4/QhQxVezgfTNS8jY9A7pmxaStfZFAALZB9A49BgaS6fSNPSYmJ3AWl1bdHgxqZWryVrzAlkfP0Nq7SaCGfnUjZ1F3dgvESgY2en9Rvssoq0LFygYyY4ZD5P3zm8YsPxBUqvWUHnKbWhGXsTtYznSLmfZ/eS/fSt7hp9E1fE3EMw5gLrDLyJr9TPkv3Ejwddu5YHB1yRkQEhnAs2ZMS+FMXGytKKGQNALEYEgbf7Rx5fkcPcXIs/RFjrqLDXCRKEdrQfvJBbpxDV2SA4V1U2tlvdHtOuZpGX4TuhyiF31gcjLIgTyhtOQN5yGQz6/N/BkbHzbe1QsILv8XwD4BwylacgkmoYcRdPgifgLD476y74znl6+gztf/oRJKR/DpuVkLX2Pwob1KEJT6THUTPkeDSNOhdSMLu2/vc+io3Vt+NLZfexP8ReNIf+/P2fg07PYNf0eAvkHttk0ViPtMtf9m7y3f03DQdOpPOW3+5rJRGgYM5PaNQsp+nQe96/9Mn/zZcR9Xrlow5sz8WZuHgUsA+5T1fBLnY3pVTrzj97eSbujiUK7M5HoQWEXd4Yvd8fJowt56aPKVsuhwuJQxKucvRVe4KnPG079YV8EVVIry73azuZFZGx8a2/gUV8GzUVjaC4+lPcbBrGgqoDhI0Zz4viDCGYUgC/k/kSqSHM9KQ078NVvJ7XyE9J2fcxJq9/j0ozVZEgzfk3hQ/845LNfZc+IU71rXpJM/aHn4c8bTuH8qxj4zJfYNf2PNB/QuuEnFiPt0nasoODlH9E8aDyV034VsS/mzbSpXCBPcaws59XAUXG7bq1FtJ8cc/Cmd/kvXq1mLHBVPAplTKzEelh1V2dKmFiWS0Zq13/pRutg/sIRg5j/UeXeaTS+cETrk3SaD0InSEgL695od98i+ItG4y8aTd24i1yNp4L0re+RtnMVaTtWklL+Esf6qzkW4H33AIK+TJAUNBhANUiqth4VF0zLoSBzJHMaTufN4FgWBQ/l8uPGMHNscl/E2jR0CjtmPkLx87MpfvarVJ56W5uZv3vynkQpdVspeuHbBDML2HXG71m2PcDSii1tPqvCQ0+gpjyLM32LWKCT4j6vXLRAM1ZVxwOIyH3AwvgUyZjYSsZpc7oTADsq19KKGkS80c4ibZsLp41qXeOZNqqw0/tuRYRA3jAa8obRMPpsAL7x2EdUbN3GgbKNYbKNsXlNXDw+k5TG3WyvbeLl8ir8QWG3DGD6pEMYWlKKv2AkgQFDvUC2fAf15VVc3ovmfwvkj2DHjIcpeuFbFL14BdXHX0/9oef3+OuIv4GiFy9HmmvZec7DvF+d3e5nNa60gJqyaZy1ZQH500cyLon6aPb+xHATUsahOMYkr1hPmdLVANhRuTpqLrzhjBEAvL1uN1NH5O1d7sy+OzIwJ42VDGCZDmCZHkRtUT7nTvSu9X5s0Rbubd5MUCFFICAlXDxsSKv8+9VXkkSC2QPZefYcCv/9XQpe/xm+mo3UTL6q50bqqVLw6k9J27GSXWf8AX/xISxdtCXqZ5U59kyyNs7jKFbSxGd6phydFC3QTBCR3e65AFluuWXUWeRhFcb0UYmaNqcjHZWrM7Wl0OCyP/vuSLRRfMl6PHuKpuWw64w/kP/GjeQu/RO+mo1UnXhT6/6pLhrw7t1krXmB6mN+QOOBJwEdH8/GYZ8l6Mska+18mkrjG2iizgzQH9nMACaaZJwzDGJbru7uO1r+ZD2ePUqVAe/9mbxFt9M4ZBKVp9xGMOeAjvO1I3vFwxQsuJH6MTOpOvH/WtWSOjqehS9dSfq299h64as9fgFntJkBLNCEsUBjjImFzE+ep+C1a9G0bCpP/g1NpVP3ex8D3vszeQtvY8/wk9h12h37XTvKKn+Wwpd/yPYZD9M8uEfuX7lXtEBjs8EZY0wc7Dn4f9jx+ccJZhRQ/Pyl5C6+C/x7OpdZldyFt5G38DbqR53FrtPv7FIT3J7hJ6IpaWSt/fd+5+0OCzTGGBMn/sJR7Pj8YzSMOovcd+9h8GNnkvXx06Dt3xYifcu7DJz7ZXLf+zN1h11A1bSbISWt3e2j0fRcmosPIXXXR119C10Sy1syG2OMCaNpOVSddAv1h55H3tu/pvDVa8hd+if2DDueppKjaS4cha9uC6k1FWSsf52sdf8mkD2IyhN+ScMh53Z75Jo/bzjp25b10LvpHAs0xhiTAE0lR7Nj5qNkfTKP7I+eJHvVPxiw/MFW2wTTctg9+Urqxl/SYzdaC+QNw7fmRQg2d7lmtL8s0BhjTKJICg2jPkfDqM9BoIn07cvwVa8nMKCEQG4ZgQFDuj1nXDh/3nBEA/hqNkWcjy0WLNAYY0wy8KV7N2gbEtvbfwXyhgOQuntD3AKNDQYwxph+xO8CjW93/G6c3C8CjYhMF5GPRKRcRH6S6PIYY0yiBLMHEfRlkmqBpueIiA/4A/tmoP6SiIxNbKmMMSZB3OSnvt0bOt62h/T5QANMAcpVdY2qNgGPAjMSXCZjjEkYf/5wUnd/GrfX6w+BphQIDd0VLm0vEZktIotFZPHOnTvjWjhjjIm3QN5wUndXRL1QtCf1h0AT6eqmVhO8qeq9qjpZVScXF7e9/a4xxvQl/rzhSKCRlLptcXm9/hBoKoBhIctlwKYElcUYYxIukOedEuM1IKA/BJpFwGgRGSki6cAsYG6Cy2SMMQnjz/Oun4lXoOnzF2y6u4NeAbwI+IC/quqKBBfLGGMSJjBgCCqpcRt51ucDDYCqPg88n+hyGGNMUkhJJZA71JrOjDHGxI4//8C4zQ5ggcYYY/qhQO4wUndvgDjcZdkCjTHG9EP+/OGkNNWQ0lgV89eyQGOMMf1QPCfXtEBjjDH90N7bBVRboDHGGBMD/twyFLEajTHGmBhJzSCQMyQuQ5wt0BhjTD8VHDAEXxzmO7NAY4wx/VQwo8BGnRljjImdYGYBKXss0BhjjImRYGYBYoHGGGNMrAQzCkgJ7AH/npi+jgUaY4zpp4IZ+QCkNFbH9HUs0BhjTD8VzCwAiHk/jQUaY4zpp/YGmhiPPLNAY4wx/VQww2o0xhhjYsiazowxxsRUnx4MICLni8gKEQmKyOSwddeISLmIfCQiZ4SkTxKRZW7dXSIiLj1DRB5z6e+IyIiQPJeIyGr3uCRe788YY3qF1EyCvsw+20ezHDgXeD00UUTGArOAw4HpwN0i4nOr7wFmA6PdY7pLvxSoVNVRwO3ALW5fRcD1wDHAFOB6ESmM4XsyxpheR+MwO0BCAo2qrlLVjyKsmgE8qqqNqroWKAemiEgJkKeqb6mqAg8AM0PyzHHPnwBOcbWdM4D5qrpLVSuB+ewLTsYYY4jPNDTJ1kdTCmwIWa5waaXueXh6qzyq6geqgeIo+2pDRGaLyGIRWbxz584eeBvGGNM7xGNizZgFGhH5t4gsj/CYES1bhDSNkt7VPK0TVe9V1cmqOrm4uDhK8Ywxpm+Jx3xnqbHasaqe2oVsFcCwkOUyYJNLL4uQHpqnQkRSgXxgl0ufFpbn1S6UyRhj+qxgRn7fHHUWxVxglhtJNhKv03+hqm4GakRkqut/uRh4JiRPy4iy84CXXT/Oi8DpIlLoBgGc7tKMMcY4XtNZNWjEBp8eEbMaTTQi8nngd8Ag4DkReU9Vz1DVFSLyOLAS8AOXq2rAZbsMuB/IAua5B8B9wIMiUo5Xk5kFoKq7RORGYJHb7hequiv2784YY3qPYGYBogGkqQbNyIvJayQk0KjqU8BT7ay7CbgpQvpiYFyE9D3A+e3s66/AX7tVWGOM6cNC5zsLxCjQJFvTmTHGmDjaOztADAcEWKAxxph+bF+NJnYDAizQGGNMPxaPGZwt0BhjTD+mcbgnjQUaY4zpx4LpeShiNRpjjDExkuJDM/Is0BhjjImdYEY+Yk1nxhhjYiWYWWCjzowxxsROMCPfms6MMcbETqxvFWCBxhhj+rlY3/zMAo0xxvRzwcwCUprrINAUk/1boDHGmH5u7+wAMRoQYIHGGGP6uVjPd2aBxhhj+jmN8QzOFmiMMaafC8Z4vjMLNMYY08/FegZnCzTGGNPP7a3R9KVAIyK/FpEPReQDEXlKRApC1l0jIuUi8pGInBGSPklElrl1d4mIuPQMEXnMpb8jIiNC8lwiIqvd45J4vkdjjOktNDUbTUmL2XxniarRzAfGqeoRwMfANQAiMhaYBRwOTAfuFhGfy3MPMBsY7R7TXfqlQKWqjgJuB25x+yoCrgeOAaYA14tIYezfmjHG9DIi3jQ0fWnUmaq+pKp+t/g2UOaezwAeVdVGVV0LlANTRKQEyFPVt1RVgQeAmSF55rjnTwCnuNrOGcB8Vd2lqpV4wa0lOBljjAkRy9kBkqGP5uvAPPe8FNgQsq7CpZW65+HprfK44FUNFEfZVxsiMltEFovI4p07d3brzRhjTG/kzeAcm0CTGpO9AiLyb2BIhFX/q6rPuG3+F/ADD7Vki7C9Rknvap7Wiar3AvcCTJgwIeI2xhjTlzWWHof4G2Ky75gFGlU9Ndp61zl/FnCKaw4Dr9YxLGSzMmCTSy+LkB6ap0JEUoF8YJdLnxaW59UuvBVjjOnzao/6Vsz2nahRZ9OBHwPnqGp9yKq5wCw3kmwkXqf/QlXdDNSIyFTX/3Ix8ExInpYRZecBL7vA9SJwuogUukEAp7s0Y4wxcRSzGk0Hfg9kAPPdKOW3VfVbqrpCRB4HVuI1qV2uqgGX5zLgfiALr0+npV/nPuBBESnHq8nMAlDVXSJyI7DIbfcLVd0V83dmjDGmFdnXamXA66OZN29exxsaY4zZq7S0dImqTo60LhlGnRljjOnDLNAYY4yJKQs0xhhjYsoCjTHGmJiyQGOMMSambNRZGBHZDnzajV0MBHb0UHF6kpVr/1i59o+Va//0xXIdqKqDIq2wQNPDRGRxe0P8EsnKtX+sXPvHyrV/+lu5rOnMGGNMTFmgMcYYE1MWaHrevYkuQDusXPvHyrV/rFz7p1+Vy/pojDHGxJTVaIwxxsSUBRpjjDExZYGmi0TkryKyTUSWh6TdICIbReQ99/ifBJRrmIi8IiKrRGSFiFzl0otEZL6IrHZ/C5OkXAk9ZiKSKSILReR9V66fu/REH6/2ypXw75grh09ElorIs245occrSrkSfrxEZJ2ILHOvv9ilJfx4tVOumBwv66PpIhE5AagFHlDVcS7tBqBWVX+TwHKVACWq+q6I5AJLgJnAV4FdqnqziPwEKFTVHydBub5IAo+Zu5FejqrWikga8AZwFXAuiT1e7ZVrOgn+jrnyfQ+YDOSp6lkicisJPF5RynUDif+fXAdMVtUdIWkJP17tlOsGYnC8rEbTRar6Ot6N1pKKqm5W1Xfd8xpgFVAKzADmuM3m4J3kk6FcCaWeWreY5h5K4o9Xe+VKOBEpAz4H/CUkOaHHK0q5klXCj1c8WaDpeVeIyAeuaS0hzQctRGQEMBF4BxjsbomN+3tAkpQLEnzMXHPLe8A2YL6qJsXxaqdckPjv2B3Aj4BgSFrCj1c75YLEHy8FXhKRJSIy26Ulw/GKVC6IwfGyQNOz7gEOBo4ENgO/TVRBRGQAIB2dswAAA4xJREFU8CRwtaruTlQ5wkUoV8KPmaoGVPVIoAyYIiLj4l2GSNopV0KPl4icBWxT1SXxfN2ORClXwr9fwHGqehRwJnC5a3ZPBpHKFZPjZYGmB6nqVndyCAJ/BqYkohyuTf9J4CFV/adL3ur6SVr6S7YlQ7mS5Zi5slQBr+L1gyT8eEUqVxIcr+OAc1z7/qPAySLydxJ/vCKWKwmOF6q6yf3dBjzlypDo4xWxXLE6XhZoelDLF8f5PLC8vW1jWAYB7gNWqeptIavmApe455cAzyRDuRJ9zERkkIgUuOdZwKnAhyT+eEUsV6KPl6peo6plqjoCmAW8rKoXkeDj1V65En28RCTHDX5BRHKA010ZEv39iliuWB2v1J7YSX8kIo8A04CBIlIBXA9ME5Ej8do+1wHfTEDRjgO+Aixz7fsAPwVuBh4XkUuB9cD5SVKuLyX4mJUAc0TEh/fD63FVfVZE3iKxx6u9cj2YBN+xSBL9/WrPrQk+XoOBp7zfWaQCD6vqCyKyiMQer/bKFZPvlw1vNsYYE1PWdGaMMSamLNAYY4yJKQs0xhhjYsoCjTHGmJiyQGOMMSamLNAYE0ciUtvxVt3a/1dFZGjI8joRGRjL1zSmIxZojOlbvgoM7WgjY+LJLtg0JsFEZBDwR2C4S7paVRe4KduHAwe5v3eo6l0uz3XAhcAGYAfebRfW4U2R/5CINACfcfv7joicjTcD9Pn/v707ZokjjKIw/N6AsEj0d4StFLQIWAoWwcrSXlKIlb3/QLEIipX2NhpsUkq6JEKs0tqKjSjIFnIt5hvYyKpYzIzC+3S7s/MxUwxn7+5wJjP/tXFeUs2JRureNrCVmbPAEv/X3H8CFqg6pzYiYiwiZsrnpqmemzMDkJmHwG9gOTOnMvOurHFVyhN3gPU2Tkga5kQjdW8e6Jc6EIDJuocKOMnMATCIiEuq6pA54KgOkoj4/sL6dbHqH6pgklpl0Ejd+wB8HppAACjBMxh6657qmg1ep16j3l9qlT+dSd37AazWL0qp4XN+AosR0SvP9/kytO0GmBi9m9QNv91I7Rovbd+1TWAN+BYR51TX5Cnw9akFMvNXRBwDf4ELqv9lrsvmfWD30c0AUqdsb5beoYj4mJm3ETFOFUwrmXnW9XFJozjRSO/TXkT0gR5wYMjoLXOikSQ1ypsBJEmNMmgkSY0yaCRJjTJoJEmNMmgkSY16AAruvsFlno9iAAAAAElFTkSuQmCC\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "f1 = np.polyfit(x, y, 11)\n", | |
| "p1 = np.poly1d(f1)\n", | |
| "print(p)\n", | |
| "PlotPolly(p1,x,y, 'Length')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "# calculate polynomial\n", | |
| "# Here we use a polynomial of the 3rd order (cubic) \n", | |
| "f1 = np.polyfit(x, y, 11)\n", | |
| "p1 = np.poly1d(f1)\n", | |
| "print(p)\n", | |
| "PlotPolly(p1,x,y, 'Length')\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>The analytical expression for Multivariate Polynomial function gets complicated. For example, the expression for a second-order (degree=2)polynomial with two variables is given by:</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Yhat = a + b_1 X_1 +b_2 X_2 +b_3 X_1 X_2+b_4 X_1^2+b_5 X_2^2\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can perform a polynomial transform on multiple features. First, we import the module:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 45, | |
| "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": 46, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)" | |
| ] | |
| }, | |
| "execution_count": 46, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "pr=PolynomialFeatures(degree=2)\n", | |
| "pr" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 47, | |
| "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": 48, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(201, 4)" | |
| ] | |
| }, | |
| "execution_count": 48, | |
| "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": 49, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(201, 15)" | |
| ] | |
| }, | |
| "execution_count": 49, | |
| "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": 50, | |
| "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": 51, | |
| "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": 52, | |
| "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": 52, | |
| "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": 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/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": 54, | |
| "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": 55, | |
| "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": 55, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ypipe=pipe.predict(Z)\n", | |
| "ypipe[0:4]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #5:</h1>\n", | |
| "<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "Input=[('scale',StandardScaler()),('model',LinearRegression())]\n", | |
| "\n", | |
| "pipe=Pipeline(Input)\n", | |
| "\n", | |
| "pipe.fit(Z,y)\n", | |
| "\n", | |
| "ypipe=pipe.predict(Z)\n", | |
| "ypipe[0:10]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "</div>\n", | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "Input=[('scale',StandardScaler()),('model',LinearRegression())]\n", | |
| "\n", | |
| "pipe=Pipeline(Input)\n", | |
| "\n", | |
| "pipe.fit(Z,y)\n", | |
| "\n", | |
| "ypipe=pipe.predict(Z)\n", | |
| "ypipe[0:10]\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h2>Part 4: Measures for In-Sample Evaluation</h2>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>When evaluating our models, not only do we want to visualize the results, but we also want a quantitative measure to determine how accurate the model is.</p>\n", | |
| "\n", | |
| "<p>Two very important measures that are often used in Statistics to determine the accuracy of a model are:</p>\n", | |
| "<ul>\n", | |
| " <li><b>R^2 / R-squared</b></li>\n", | |
| " <li><b>Mean Squared Error (MSE)</b></li>\n", | |
| "</ul>\n", | |
| " \n", | |
| "<b>R-squared</b>\n", | |
| "\n", | |
| "<p>R squared, also known as the coefficient of determination, is a measure to indicate how close the data is to the fitted regression line.</p>\n", | |
| " \n", | |
| "<p>The value of the R-squared is the percentage of variation of the response variable (y) that is explained by a linear model.</p>\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| "<b>Mean Squared Error (MSE)</b>\n", | |
| "\n", | |
| "<p>The Mean Squared Error measures the average of the squares of errors, that is, the difference between actual value (y) and the estimated value (ŷ).</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Model 1: Simple Linear Regression</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the R^2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 56, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| }, | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The R-square is: 0.4965911884339175\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "#highway_mpg_fit\n", | |
| "lm.fit(X, Y)\n", | |
| "# Find the R^2\n", | |
| "print('The R-square is: ', lm.score(X, Y))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\"." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the MSE" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 57, | |
| "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": 58, | |
| "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": 59, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The mean square error of price and predicted value is: 31635042.944639895\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "mse = mean_squared_error(df['price'], Yhat)\n", | |
| "print('The mean square error of price and predicted value is: ', mse)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Model 2: Multiple Linear Regression</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the R^2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 60, | |
| "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": 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.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": 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.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": 67, | |
| "metadata": { | |
| "collapsed": false, | |
| "jupyter": { | |
| "outputs_hidden": false | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "20474146.426361226" | |
| ] | |
| }, | |
| "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.7" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment