Created
February 9, 2019 21:01
-
-
Save aganbal/a09ddbfd0ca82cde953cd37a91060b74 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/DA0101EN_edx_link_Notebook_link_top\">\n", | |
| " <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n", | |
| " </a>\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n", | |
| "\n", | |
| "<h1 align=center><font size=5>Data Analysis with Python</font></h1>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h1>Module 4: Model Development</h1>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Some questions we want to ask in this module\n", | |
| "<ul>\n", | |
| " <li>do I know if the dealer is offering fair value for my trade-in?</li>\n", | |
| " <li>do I know if I put a fair value on my car?</li>\n", | |
| "</ul>\n", | |
| "<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n", | |
| "\n", | |
| "<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Setup</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " Import libraries" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import pandas as pd\n", | |
| "import numpy as np\n", | |
| "import matplotlib.pyplot as plt" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "load data and store in dataframe df:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/edx_DA0101EN_objectstorage\">HERE</a> for free storage." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>symboling</th>\n", | |
| " <th>normalized-losses</th>\n", | |
| " <th>make</th>\n", | |
| " <th>aspiration</th>\n", | |
| " <th>num-of-doors</th>\n", | |
| " <th>body-style</th>\n", | |
| " <th>drive-wheels</th>\n", | |
| " <th>engine-location</th>\n", | |
| " <th>wheel-base</th>\n", | |
| " <th>length</th>\n", | |
| " <th>...</th>\n", | |
| " <th>compression-ratio</th>\n", | |
| " <th>horsepower</th>\n", | |
| " <th>peak-rpm</th>\n", | |
| " <th>city-mpg</th>\n", | |
| " <th>highway-mpg</th>\n", | |
| " <th>price</th>\n", | |
| " <th>city-L/100km</th>\n", | |
| " <th>horsepower-binned</th>\n", | |
| " <th>diesel</th>\n", | |
| " <th>gas</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>3</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>convertible</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>88.6</td>\n", | |
| " <td>0.811148</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>111.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>21</td>\n", | |
| " <td>27</td>\n", | |
| " <td>13495.0</td>\n", | |
| " <td>11.190476</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>3</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>convertible</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>88.6</td>\n", | |
| " <td>0.811148</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>111.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>21</td>\n", | |
| " <td>27</td>\n", | |
| " <td>16500.0</td>\n", | |
| " <td>11.190476</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>1</td>\n", | |
| " <td>122</td>\n", | |
| " <td>alfa-romero</td>\n", | |
| " <td>std</td>\n", | |
| " <td>two</td>\n", | |
| " <td>hatchback</td>\n", | |
| " <td>rwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>94.5</td>\n", | |
| " <td>0.822681</td>\n", | |
| " <td>...</td>\n", | |
| " <td>9.0</td>\n", | |
| " <td>154.0</td>\n", | |
| " <td>5000.0</td>\n", | |
| " <td>19</td>\n", | |
| " <td>26</td>\n", | |
| " <td>16500.0</td>\n", | |
| " <td>12.368421</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>2</td>\n", | |
| " <td>164</td>\n", | |
| " <td>audi</td>\n", | |
| " <td>std</td>\n", | |
| " <td>four</td>\n", | |
| " <td>sedan</td>\n", | |
| " <td>fwd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>99.8</td>\n", | |
| " <td>0.848630</td>\n", | |
| " <td>...</td>\n", | |
| " <td>10.0</td>\n", | |
| " <td>102.0</td>\n", | |
| " <td>5500.0</td>\n", | |
| " <td>24</td>\n", | |
| " <td>30</td>\n", | |
| " <td>13950.0</td>\n", | |
| " <td>9.791667</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>2</td>\n", | |
| " <td>164</td>\n", | |
| " <td>audi</td>\n", | |
| " <td>std</td>\n", | |
| " <td>four</td>\n", | |
| " <td>sedan</td>\n", | |
| " <td>4wd</td>\n", | |
| " <td>front</td>\n", | |
| " <td>99.4</td>\n", | |
| " <td>0.848630</td>\n", | |
| " <td>...</td>\n", | |
| " <td>8.0</td>\n", | |
| " <td>115.0</td>\n", | |
| " <td>5500.0</td>\n", | |
| " <td>18</td>\n", | |
| " <td>22</td>\n", | |
| " <td>17450.0</td>\n", | |
| " <td>13.055556</td>\n", | |
| " <td>Medium</td>\n", | |
| " <td>0</td>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "<p>5 rows × 29 columns</p>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " symboling normalized-losses make aspiration num-of-doors \\\n", | |
| "0 3 122 alfa-romero std two \n", | |
| "1 3 122 alfa-romero std two \n", | |
| "2 1 122 alfa-romero std two \n", | |
| "3 2 164 audi std four \n", | |
| "4 2 164 audi std four \n", | |
| "\n", | |
| " body-style drive-wheels engine-location wheel-base length ... \\\n", | |
| "0 convertible rwd front 88.6 0.811148 ... \n", | |
| "1 convertible rwd front 88.6 0.811148 ... \n", | |
| "2 hatchback rwd front 94.5 0.822681 ... \n", | |
| "3 sedan fwd front 99.8 0.848630 ... \n", | |
| "4 sedan 4wd front 99.4 0.848630 ... \n", | |
| "\n", | |
| " compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n", | |
| "0 9.0 111.0 5000.0 21 27 13495.0 \n", | |
| "1 9.0 111.0 5000.0 21 27 16500.0 \n", | |
| "2 9.0 154.0 5000.0 19 26 16500.0 \n", | |
| "3 10.0 102.0 5500.0 24 30 13950.0 \n", | |
| "4 8.0 115.0 5500.0 18 22 17450.0 \n", | |
| "\n", | |
| " city-L/100km horsepower-binned diesel gas \n", | |
| "0 11.190476 Medium 0 1 \n", | |
| "1 11.190476 Medium 0 1 \n", | |
| "2 12.368421 Medium 0 1 \n", | |
| "3 9.791667 Medium 0 1 \n", | |
| "4 13.055556 Medium 0 1 \n", | |
| "\n", | |
| "[5 rows x 29 columns]" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "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": 4, | |
| "metadata": { | |
| "collapsed": 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": 5, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "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": 6, | |
| "metadata": { | |
| "collapsed": 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": 7, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 7, | |
| "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": 8, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n", | |
| " 20345.17153508])" | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "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": 9, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "38423.305858157386" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "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": 10, | |
| "metadata": { | |
| "collapsed": false, | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-821.73337832])" | |
| ] | |
| }, | |
| "execution_count": 10, | |
| "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": 17, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "#from sklearn.linear_model import LinearRegression\n", | |
| "lm_1 = LinearRegression()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm1 = LinearRegression()\n", | |
| "lm1 \n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1> Question #1 b): </h1>\n", | |
| "\n", | |
| "<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "X = df[['engine-size']]\n", | |
| "Y = df['price']\n", | |
| "lm_1.fit(X,Y)\n", | |
| "lm_1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm1.fit(df[['highway-mpg']], df[['price']])\n", | |
| "lm1\n", | |
| "\n", | |
| "-->\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #1 c):</h1>\n", | |
| "\n", | |
| "<b>Find the slope and intercept of the model?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Slope</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([166.86001569])" | |
| ] | |
| }, | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm_1.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Intercept</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "-7963.338906281049" | |
| ] | |
| }, | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm_1.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", | |
| "price = 166.86001569 - 7963.338906281049 x engine-size" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "# using X and Y \n", | |
| "Yhat=38423.31-821.733*X\n", | |
| "\n", | |
| "Price=38423.31-821.733*engine-size\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Multiple Linear Regression</h4>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>What if we want to predict car price using more than one variable?</p>\n", | |
| "\n", | |
| "<p>If we want to use more variables in our model to predict car price, we can use <b>Multiple Linear Regression</b>.\n", | |
| "Multiple Linear Regression is very similar to Simple Linear Regression, but this method is used to explain the relationship between one continuous response (dependent) variable and <b>two or more</b> predictor (independent) variables.\n", | |
| "Most of the real-world regression models involve multiple predictors. We will illustrate the structure by using four predictor variables, but these results can generalize to any integer:</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Y: Response \\ Variable\\\\\n", | |
| "X_1 :Predictor\\ Variable \\ 1\\\\\n", | |
| "X_2: Predictor\\ Variable \\ 2\\\\\n", | |
| "X_3: Predictor\\ Variable \\ 3\\\\\n", | |
| "X_4: Predictor\\ Variable \\ 4\\\\\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "a: intercept\\\\\n", | |
| "b_1 :coefficients \\ of\\ Variable \\ 1\\\\\n", | |
| "b_2: coefficients \\ of\\ Variable \\ 2\\\\\n", | |
| "b_3: coefficients \\ of\\ Variable \\ 3\\\\\n", | |
| "b_4: coefficients \\ of\\ Variable \\ 4\\\\\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "The equation is given by" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>From the previous section we know that other good predictors of price could be:</p>\n", | |
| "<ul>\n", | |
| " <li>Horsepower</li>\n", | |
| " <li>Curb-weight</li>\n", | |
| " <li>Engine-size</li>\n", | |
| " <li>Highway-mpg</li>\n", | |
| "</ul>\n", | |
| "Let's develop a model using these variables as the predictor variables." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Fit the linear model using the four above-mentioned variables." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(Z, df['price'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "What is the value of the intercept(a)?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "-15806.624626329198" | |
| ] | |
| }, | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.intercept_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "What are the values of the coefficients (b1, b2, b3, b4)?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 24, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([53.49574423, 4.70770099, 81.53026382, 36.05748882])" | |
| ] | |
| }, | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " What is the final estimated linear model that we get?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "As we saw above, we should get a final linear function with the structure:\n", | |
| "\n", | |
| "$$\n", | |
| "Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n", | |
| "$$\n", | |
| "\n", | |
| "What is the linear function we get in this example?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<b>Price</b> = -15678.742628061467 + 52.65851272 x <b>horsepower</b> + 4.69878948 x <b>curb-weight</b> + 81.95906216 x <b>engine-size</b> + 33.58258185 x <b>highway-mpg</b>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1> Question #2 a): </h1>\n", | |
| "Create and train a Multiple Linear Regression model \"lm2\" where the response variable is price, and the predictor variable is 'normalized-losses' and 'highway-mpg'.\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 27, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 27, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "Z2 = df[['normalized-losses', 'highway-mpg']]\n", | |
| "Y2 = df['price']\n", | |
| "lm2 = LinearRegression()\n", | |
| "lm2 = lm.fit(Z2, Y2)\n", | |
| "lm2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm2 = LinearRegression()\n", | |
| "lm2.fit(df[['normalized-losses' , 'highway-mpg']],df['price'])\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #2 b): </h1>\n", | |
| "<b>Find the coefficient of the model?</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 28, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 1.49789586, -820.45434016])" | |
| ] | |
| }, | |
| "execution_count": 28, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm2.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm2.coef_\n", | |
| "\n", | |
| "-->" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>2) Model Evaluation using Visualization</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Now that we've developed some models, how do we evaluate our models and how do we choose the best one? One way to do this is by using visualization." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "import the visualization package: seaborn" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 30, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "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": 32, | |
| "metadata": { | |
| "collapsed": false, | |
| "scrolled": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(0, 48264.63107463288)" | |
| ] | |
| }, | |
| "execution_count": 32, | |
| "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": 33, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(0, 47422.919330307624)" | |
| ] | |
| }, | |
| "execution_count": 33, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 864x720 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "plt.figure(figsize=(width, height))\n", | |
| "sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)\n", | |
| "plt.ylim(0,)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>Comparing the regression plot of \"peak-rpm\" and \"highway-mpg\" we see that the points for \"highway-mpg\" are much closer to the generated line and on the average decrease. The points for \"peak-rpm\" have more spread around the predicted line, and it is much harder to determine if the points are decreasing or increasing as the \"highway-mpg\" increases.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #3:</h1>\n", | |
| "<b>Given the regression plots above is \"peak-rpm\" or \"highway-mpg\" more strongly correlated with \"price\". Use the method \".corr()\" to verify your answer.</b>\n", | |
| "</div>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 43, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>peak-rpm</th>\n", | |
| " <th>highway-mpg</th>\n", | |
| " <th>price</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>peak-rpm</th>\n", | |
| " <td>1.000000</td>\n", | |
| " <td>-0.058598</td>\n", | |
| " <td>-0.101616</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>highway-mpg</th>\n", | |
| " <td>-0.058598</td>\n", | |
| " <td>1.000000</td>\n", | |
| " <td>-0.704692</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>price</th>\n", | |
| " <td>-0.101616</td>\n", | |
| " <td>-0.704692</td>\n", | |
| " <td>1.000000</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " peak-rpm highway-mpg price\n", | |
| "peak-rpm 1.000000 -0.058598 -0.101616\n", | |
| "highway-mpg -0.058598 1.000000 -0.704692\n", | |
| "price -0.101616 -0.704692 1.000000" | |
| ] | |
| }, | |
| "execution_count": 43, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "df[['peak-rpm','highway-mpg','price']].corr()\n" | |
| ] | |
| }, | |
| { | |
| "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": 44, | |
| "metadata": { | |
| "collapsed": false, | |
| "scrolled": 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": 47, | |
| "metadata": { | |
| "collapsed": 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-47-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[0m\n\u001b[0m", | |
| "\u001b[0;32m~/conda/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[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[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[0m\n", | |
| "\u001b[0;32m~/conda/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[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[0m\n", | |
| "\u001b[0;32m~/conda/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[0m\n\u001b[1;32m 172\u001b[0m \u001b[0;32melse\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[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": 48, | |
| "metadata": { | |
| "collapsed": false, | |
| "scrolled": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/home/jupyterlab/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", | |
| " return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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ShARkSyn0C4itZPKa7THNGwInTvXObT/7W/w4otw113Qu3f8r+vd2/e1v/MOfPe7dSpBRESynEK7iNROOsy0g2+RqUN7zL59fqWYgQN9L3tNjR4Nd97pr4d95plalyEiIllOoV1Eaic2057KPe3gQ/vKlbVePH3CBP/55Cc/gXq1/D/mT34CRUVw7bWwaVPtxhARkeym0C4itbNmDbRqBc2aRV1J1bp394urr1xZ45c659dk79ULRoyofQkNGsAjj8COHbWbrRcREVFoF5HaSfXlHmNiK8jUoq99+nT44AO45RZ/g9W66NUL7rgDJk2IYxLTAAAgAElEQVSC556r21giIpJ9FNpFpHbWrk2P0N69u9/Woq/97rv9Wxw7NjGl3Hqrv+nSNdfA1q2JGVNERLKDQruI1M6aNanfzw7QvLlP3jWcaX/nHZg1C266CRo1SkwpDRvCww/D5s1w222JGVNERLKDQruI1Nz+/bBhQ3rMtINvkalhaL/nHjjiCPj2txNbSmGh/yDw17/CG28kdmwREclcCu0iUnPr1vmrNNMptC9b5muOw9atvu/8yiuhZcvEl3PnndChA1x9da0XtRERkSyj0C4iNZcON1Yqq6AAPv/8y7qr8eyzPkxffHE45TRvDvff7y9yHT8+nHOIiEhmUWgXkZpLlzXaY2IXo8bZIjNhgr+R6oknhlfSyJEwapSfdS8uDu88IiKSGRTaRaTm0nGmHeIK7evWwauvwrhxdV/msTp//CPUr+/bZOLs3BERkSyl0C4iNbd2LTRt6m+ulA7atoXWreNa9vHpp32AHjcu/LI6dIDf/hZefhkefzz884mISPpSaBeRmovdWCnsqehEMfMtMnHMtE+YAH37fjk5H7ZrroGBA+H734f165NzThERST8K7SJSc+myRntZcSz7uGoVvPVWcmbZY+rVg4cegi++gOuuS955RUQkvSi0i0jNxWba00lBAWzcWOWtSCdO9NtE3QE1Xt26wc9/DlOmwOTJyT23iIikB4V2EamZ0lL49NP0C+2xFWSq6GufMMG3qnTqlKSayvjhD/1qNd/5Dnz0UfLPLyIiqU2hXURqZvNmOHAAjj026kpqppoVZFas8OumX3RREmsqo2FDP9NfUgIXXgj79kVTh4iIpCaFdhGpmXXr/DbdQnteHjRuXOlM+0sv+e255yavpPI6d4aH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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": 49, | |
| "metadata": { | |
| "collapsed": 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": 50, | |
| "metadata": { | |
| "collapsed": 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": 51, | |
| "metadata": { | |
| "collapsed": 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": 52, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAEWCAYAAACufwpNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzsnXl8VNXZ+L/PTFaSQEgAiQmKSlAQBASUFkWrrUJdQNu6V2vtS7Vate2vVdu+1draxbdWS6221BXrWldcUKlrXVkEWUQFASUSQMKWBbLMPL8/7gkMyWxZJjPJPN/P537mnueec+5z78zc555znvMcUVUMwzAMozPwJVsBwzAMo+dgRsUwDMPoNMyoGIZhGJ2GGRXDMAyj0zCjYhiGYXQaZlQMwzCMTsOMSgogIteJyL+SrUcoInKuiLwYZ9526S8iPxeRO9quXcx6/y4i/xvleMrd73CIyFoR+Wo7y+6+RhHZT0RqRMTv0q+KyPfaUNclIrLR1VHcHn06gojMEZELuvq8qUxbv8OuxIxKJ+IeAjvdn2+jiNwtIvnJ1qs9qOr9qnpCR+sRkWNFJOjuSfP2tDvH71T1ey7fYBFREcnoBN0vVtXfhJy/ooPXoO77zAiRZYjIJhGJa6JXZ+jR3rpV9TNVzVfVQDvqzgT+DJzg6qjqiK6uzjb9T1R1iqre29HzdgbJeJh3l5egZsyodD6nqGo+cDgwHvhlkvVJBda7B1LzdkqyFWoH24ApIemvA1uTpEtXsg+QAyxva0HxiPSMifk/iVHeSFHsC0sQqvo5MAcYASAi+4rIbBHZIiKrROR/wpUTkWdF5IctZEtEZJrbVxG5WERWishWEfmbiIg75hORX4rIp+4tepaI9HHHmlsCF4rIOlf2YhEZ7+rfJiK3hpzzOyLyRkj6L67cDhFZKCJHd/QetXgDe919bnNvsF9qkTfHvd32c+lfikiTiPR26d+KyC1u/x6XzsP7DvYNaSXt66rMcvenWkSWi8i4GOreB5wfkj4fmNVCxwtFZIWrc7WIfN/Jw+rhrv9REXnYlXlPREZFuFfZInKLiKx32y1OFu0am8uGawUeJCLzRGS7iDwlIkVhzjkU+Mglt4nIy07+ZRGZ78rOF5Evh5R5VURuEJE3gTrgwGg3Ncz/pFX5lq0DEfmfkPv8gYgc7uT7ishjIvKFiKwRkcujnbuzEZEJIvKW+y+9LyLHhhx7VUR+IyJvOr1fbP4tu+Pnu/9tlYj8r7iuTxGZDPwcONN9t++HnHL/SPUlEzMqCUJEBuG9zS5yogeBCmBf4JvA70Tk+DBF7wXOC6lnFFAKPBeS52S8t7tRwBnAiU7+Hbd9Be/PnA/cyt4cCZQDZwK3AL8AvgocCpwhIsdEuKT5wGigCHgA+LeI5ETI2x4muc9C15p5O/Sgqu5yOhwTkv9TYGJI+rUWZWrxWhehLaX17vCpwENAITCb1vepJU8Ck0SkUEQKgaOBp1rk2YT33fQGLgRuFpHDY+gxFfg3e+7rk+J1ObXkF8AEvO9gFHAE8MsYdUfjfOC7eL/HJmBGywyq+jHe7wK87+U4Z3yedfmL8brGnpW9x1q+DUwHCvC+o4iE+Z9ELS8i3wKuc/r3xvseq8Rr0TwNvI/3fzkeuFJETqSNiHgvaW0sU4p3X36L913+P+AxEekfku0cvN/FACDL5UFEhgO3AecCJUAfdw2o6vPA74CH3Xc7KlZ9ycaMSufzpIhsA97Ae8j9zv1xjgKuUtVdqroYuAPvz9OSp4ByESl36W/j/aAaQvL8QVW3qepnwCt4DxrwfpR/VtXVqloDXAOc1eIN9TdOhxeBWuBBVd3k3hj/C4wJd1Gq+i9VrVLVJlW9CcgGDo7znuzr3t6atzPiLNeS14Bj3PUchvdgO8YZt/FO/3h5Q1Wfc+MM9+E9qKOxC++hdSZwFp4h2hWaQVWfVdVP1OM14EU84xONhar6qKo24j2gc/CMR0vOBa5339UXwK8J//uJl/tUdZkzSv+L90Lhj6PcScBKVb3P/RYeBD4EQrs071HV5e54Y4R6Wv1P4iz/PeBGVZ3v7vMqVf0U7/vvr6rXq2qDqq4G/on3XbVCREpF5CHX6lskIlc62Si8F4i2ch7wnPtNBVV1LrAAz2A2c7eqfqyqO4FH2PO//SbwtKq+4f7nvwLiGauLVF9S6fCgqNGKaar6n1CB647YoqrVIeJPgVZdLqpaLyKPAOeJyK+Bs/F+dKFsCNmvw2uRgPfWGfpm9yned7xPiGxjyP7OMOmwA6Yi8hO8P/S+eD/43kC8ze31qloWZ95ovIb34D0cWArMBe7EewivUtXNbair5T3MEZEMVW2KUmYW8HtAgKtaHhSRKcC1wFC8F7ZeTs9orGveUdWgeAPu+4bJF+67DZcvXtaF7H8KZOJ9nxvDZ4+oR3P50gh1R6LV/yTO8oOAT8LI98e9vITI/ER+0fgWXgvxXLyH8aV43Uyf433HbWV/4FsiEmpcM/Fe+pqJ9r8N/R3UiUg8DhGR6ksqZlS6hvVAkYgUhBiW/fB+wOG4F+/t+Q2grmVXUIzz7B+S3g+va2Mj0O6HunjjJ1fhdSksdw+/rXgP184injezt/BaR6cBr6nqByKyH97b82sRynRmGO7/4nVPKN53c1DzARHJBh7D65Z5SlUbReRJ9tyjSHoMCqnDh/c9heu+av5umwfM9wvJ155rHBSyvx/QCMRjlFv+xprLPx+S7ug9j1Z+HSH3vYV8jaqWhzkWjhmqGnT7C/G6AjvCOrzWX9ix0hhUEtLqF5FcvK7FZrpVKHnr/uoCVHUd3gPx9+INOB8GXATcHyH/20AQuAnPuMTLg8CPROQA8Vw0m/tio719x0MBnnH6AsgQkV/htVQ6ky/wrjniwK6q1uE9AC5ljxF5C/g+kY3KRqBYnMNCR1BvnYhTgFO19ZoRWXhdgl8ATa7VEuqSHUmPsSJyuuvSuxKoB94Jc/oHgV+KSH83IPsroNnJoT3XeJ6IDBeRXsD1wKNxuhw/BwwVkXPEc6s+ExgOPNOGc3eEO4D/JyJjxWOIiOwPzAN2iMhVIpIrIn4RGSEi48NVEmJQ2kOG+x83b5l438UpInKiO3eOeK7e8bzMPerKfllEsvC6NkNf2DYCg6WbeMJ1CyV7CGcDg/He9J4ArnX9rpGYBYxkz4MjHu7CM0KvA2vw+vx/GLVEfLyA56HzMV5Xxy7i6+KIG2cwbgDedOMu4cYVwDMemXgPkeZ0AXu8x1rW+yHeA3m1q7cjXUa4vv5W7rWuBXo5Xt/2VrxB1Nlx6PEU3jjNVrwxktMjjEP8Fq+Pfglel9p7Ttbea7wPuAevCyXH6R4T9eapnAz8BKgCfgac3Maux3ajqv/G+508AFTjjX8UOYN4Cl5X1hq8VtcdeIPenc3teF3Fzdvd7sVxKl4X2hd4/4+fEscz1v2efojnOFKJd12b8F4wwOumA88h4b3Ou4zEIK1fuIxUQETOB6ar6lHJ1sVIDCJyHTBEVc+LlddIH1wvwzagXFXXJFuftmItlRTEdUn8AJiZbF0Mw0g8InKKiPQSb97Rn/Bao2uTq1X7MKOSYji/+i/w+lEfSLI6hmF0DVPxusbX480jOyvMuF23wLq/DMMwjE7DWiqGYRhGp5F281SKiop00KBBsTMahmEYu1myZMlmVe0fK1/aGZVBgwYxZ86cZKthGIbRrSgtLY0ax60Z6/4yDMMwOg0zKoZhGEanYUbFMAzD6DTMqBiGYRidhhkVwzAMo9Mwo2IYhmF0GmZUOomllbXMmr+BpZW1yVbFMAwjaSTcqLi1BRaJyDMufY+IrBGRxW4b7eQiIjNEZJWILBGRw0PquEBEVrrtghD5WBFZ6srMaM/a0p3B0spaLn9iJTPfqeTyJ1aaYTEMI23pipbKFcCKFrKfqupoty12sil4gdTKgel4axYgIkV4S7QeCRwBXCsifV2Z213e5nKTE3khkVhUUU1jQAkqNAaURRXVsQsZhmH0QBJqVNyqZyfhLZYTi6nALPV4BygUkRLgRGCuqm5R1a1465JPdsd6q+rbLprnLGBaYq4kOmPKCsj0Cz6BTL8wpqwgGWoYhmEknUSHabkFb2W4lk/ZG9yStC8BV6tqPVDK3qsJVjhZNHlFGHkrRGQ6XouG0tKwWTrEyJI8ZpxWzqKKasaUFTCyJK/Tz2EYhtEdSFhLRUROBjap6sIWh64BDgHGA0XAVc1FwlSj7ZC3FqrOVNVxqjquuLg4HvXbzMiSPM4fP9AMimEYaU0iu78mAqeKyFq8tZePE5F/qWql6+KqB+7GGycBr6URGj64DG/BmmjysjDyxBFoSGj1hmEY3Z2EGRVVvUZVy1R1MHAW8LKqnufGQnCeWtOAZa7IbOB85wU2AdiuqpXAC8AJItLXDdCfALzgjlWLyARX1/nAU4m5mCDFs8+jz9u/T0j1hmEYPYVkzFO5X0SW4q3B3A/4rZM/B6wGVgH/xFujHVXdAvwGmO+2650M4BI8J4BVwCdAYmLai49AQRm5K2cjDeYubBiGEYkuWU9FVV8FXnX7x0XIo8ClEY7dBdwVRr4AGNFZekajdviZ9Fr5FLmfPEvdsDO64pSGYRjdDptRHyeNA0bTWHQwvT54CDSsP4BhGEbaY0YlXkSoHX4mWVUryPxiabK1MQzDSEnMqLSBnUNOIZjRi7wPHk62KoZhGCmJGZU2oFn57BxyMjmfPIfUb0+2OoZhGCmHGZU2Ujv8THyBXfRaOTvZqhiGYaQcZlTaSFO/4TT0P8wG7A3DMMJgRqUd1B56NpnbVpO1/t1kq2IYhpFSmFFpBzsPnEIgu5C85Q8kWxXDMIyUwoxKe8jIpu6Qb5Dz6cv4ajYkWxvDMIyUwYxKO6kbdhZokLwV5l5sGIbRjBmVdhLoXUb9fpPo9eGj3TZ68dLKWmbN32DLHxuG0WmYUekAtcPPwb9zMzlr5iZblTaztLKWy59Yycx3Krn8iZVmWAzD6BTMqHSA+kFH0dR7P/KWP9Dt3voXVVTTGFCCCo0BZVFFdbJVMgyjB2BGpSOIj9rhZ5O98T3+/sSL3eqtf0xZAZl+wSeQ6RfGlLVc8dkwDKPtmFHpIHUHn06DL4dz5flu9dY/siSPGaeVM31CCTNOK7dlkA3D6BTMqHQQze7Nhv1O4VTfW/SX7d3qrX9kSR7njx9oBsUwjE4j4UZFRPwiskhEnnHpA0TkXRFZKSIPi0iWk2e79Cp3fHBIHdc4+UcicmKIfLKTrRKRqxN9LZHIGX8BWdLEnwYvsLd+wzDSmq5oqVwBrAhJ/xG4WVXLga3ARU5+EbBVVYcAN7t8iMhwvDXuDwUmA7c5Q+UH/gZMAYYDZ7u8XU5T34PYVTaRo7Y/zch9spKhgmEYRkqQUKMiImXASXjryCMiAhwHPOqy3AtMc/tTXRp3/HiXfyrwkKrWq+oavPXoj3DbKlVdraoNwEMub1KoHXEe/rpN3dK92DAMo7NIdEvlFuBnQNCli4Ftqtrk0hVAqdsvBdYBuOPbXf7d8hZlIslbISLTRWSBiCyoqqrq6DWFpX7QJJp670f+svsSUr9hGEZ3IGFGRUROBjap6sJQcZisGuNYW+WthaozVXWcqo4rLi6OonUHEB+1I84ja+NiMje9n5hzGIZhpDiJbKlMBE4VkbV4XVPH4bVcCkUkw+UpA9a7/QpgEIA73gfYEipvUSaSPGnUDT2dYGY++UvujZ3ZMAyjB5Iwo6Kq16hqmaoOxhtof1lVzwVeAb7psl0APOX2Z7s07vjLqqpOfpbzDjsAKAfmAfOBcudNluXOkdTlGDUrj7phZ5Cz5kX8NUm1b4ZhGEkhGfNUrgJ+LCKr8MZM7nTyO4FiJ/8xcDWAqi4HHgE+AJ4HLlXVgBt3uQx4Ac+77BGXN6nUjjgXgLxl9ydZE8MwjK5HNM2WxB01apTOmTMnoefo+58fkV3xJhvPfQXNtDkrhmF0f0pLSxeq6rhY+WxGfQKoOew7+Bqq6fXRE8lWxTAMo0sxo5IAGgeMomGf0eQtuw+CgWSrYxiG0WWYUUkQNSMvJGPHZ+SsfSnZqhiGYXQZZlQSxK7Bx3uTIZfcCWk2bmUYRvpiRiVR+PzUjLyArE1LyNr4XrK1MQzD6BLMqCSQnQefRiC7kLz370q2KoZhGF2CGZUEohm51B16DrmfvkzGttXJVqdL6W7LKxuG0TmYUUkwtYeei/qzyVtyd0LqT8WH99LKWi5/YmW3Wl7ZMIzOwYxKggnmFlE3dBq9Pn4KX92mTq07VR/eiyqqaQxot1pe2TCMzsGMShdQc9iFoAHyls7q1HpT9eE9pqyATL/gE7rV8sqGYXScjNhZjI4S6LM/uw44kbwPHqJm9HQ0u3en1Os9vDfQGNCUeniPLMljxmnlLKqoZkxZgS2vbBhphBmVLmBpZS2fZ57OdxvnkPfBg9SM+X6n1JvKD++RJXkppY9hGF2DGZUE0zzu0RjIY0jmKI58/15qRl4AGTmdUr89vA3DSCVsTCXBhI573NZ0KtkNW+n10WPJVsswDCMhmFFJMKGD1ot8w9ja9zDy378Lgo1xlU9Fl2HDMIxIJHKN+hwRmSci74vIchH5tZPfIyJrRGSx20Y7uYjIDBFZJSJLROTwkLouEJGVbrsgRD5WRJa6MjNEJNy69Umledxj+oQSZpw2lOD475NRs57cVc/GLJuqLsOGYRiRSOSYSj1wnKrWiEgm8IaINK+O9VNVfbRF/il4SwWXA0cCtwNHikgRcC0wDlBgoYjMVtWtLs904B3gOWAykNgVuNpB6LhHvX6FxqKDyV80k51DTgGfn6WVtWEH28O5DNv4iWEYqUwi16hXVa1xyUy3RQvXOxWY5cq9AxSKSAlwIjBXVbc4QzIXmOyO9VbVt91a9rOAaYm6nk5DhOrDLyZz+xpy1rwYtTVi8z0Mw+huJHRMRUT8IrIY2IRnGN51h25wXVw3i0i2k5UC60KKVzhZNHlFGHk4PaaLyAIRWVBVVdXh6+oouwZ/jcbCAylY9HcWrdsecQLj3l1n5dZKMQwj5UmoUVHVgKqOBsqAI0RkBHANcAgwHigCrnLZw42HaDvk4fSYqarjVHVccXFxG68iAfj81IyeTuaWjzkhc3HU1sjIkjzOHz/QDIphGN2CLvH+UtVtwKvAZFWtdF1c9cDdwBEuWwUwKKRYGbA+hrwsjLxbsHPISTQVlDFi7d1ccXQp4wYVcMWkMjMehmF0axLp/dVfRArdfi7wVeBDNxaC89SaBixzRWYD5zsvsAnAdlWtBF4AThCRviLSFzgBeMEdqxaRCa6u84GnEnU9nY4vg5rR/0PWF8tY9MazLFhXzV9er+gxHl7mCm0Y6Ukivb9KgHtFxI9nvB5R1WdE5GUR6Y/XfbUYuNjlfw74OrAKqAMuBFDVLSLyG2C+y3e9qm5x+5cA9wC5eF5fKef5FY26odOQd27jB8HHmKuH0RigR3h47YkioGT6N9h4kGGkEQkzKqq6BBgTRn5chPwKXBrh2F1Aq+UTVXUBMKJjmiYRfxYVwy5izJLfcaxvCW/7RvcIDy9zhTaM9MVm1CeZvuPPZGfuQG4onM2MaUN6xMPXXKENI32xgJLJxp9F/bhLKP3vteQEFlHP0cnWqMOkcvRkwzASi7VUUoC6odNoyi+hYOGtoNHmh3YfzBXaMNITMyqpgD+LmjEXk7VpCdnrXk+2NoZhGO3GjEqKUDd0Gk0FpRQsmNEjWivmUmwY6YkZlVTBn0X14ZeStfkDctb+J9nadAiLrmwY6YsZlRRiZ/kpNPY5wGutBANA93zjD+dSbBhGemBGJZXwZVA97jIyt64id/Xz3faN31yKDSN9MZfiFGPXgZNpXPQPChb+lcUHjO6WkwjNpdgw0hdrqaQa4qN63OVkbP+Uk/RVe+M3DKNbYS2VFGTX/sfRMOAwhq26g1tPfZSFlY3d6o3fYn8ZRvpiLZVURIQdR/wEf+0Gjtgyu9tNIrSBesNIX2IaFRHJExGf2x8qIqe6NeeNBNKw7xHsGnQ0BYv+gTR0r4eyDdQbRvoST0vldSBHREqBl/BC0t+TSKUMjx3jr8RXv5389+9MSP2Jcle2ZZANI32JZ0xFVLVORC4C/qqqN4rIokQrZkBTv+HUHXQSeUtnUXvoOQR7Dei0uhM97jGyJM+MiWGkIfG0VEREvgScCzzrZDbA30VUj78cCTRSsPC2Tq3Xxj0Mw0gE8RiVK4BrgCdUdbmIHAi8EquQiOSIyDwReV9ElovIr538ABF5V0RWisjDIpLl5NkuvcodHxxS1zVO/pGInBgin+xkq0Tk6rZdevcg0Hs/aoefRa8PHyVj6yedVq+NexiGkQiiGhW3FPApqnqqqv4RQFVXq+rlcdRdDxynqqOA0cBkt/b8H4GbVbUc2Apc5PJfBGxV1SHAzS4fIjIcOAs4FJgM3CYifqfb34ApwHDgbJe3x1Ez9gdoRi69372p0+q0cQ/DMBJBVKOiqgFgbHsqVo8al8x0mwLHAY86+b3ANLc/1aVxx48XEXHyh1S1XlXX4K1hf4TbVjkj1wA85PL2OII5fakZM52cz14ha/28TqvX1jwxDKOziaf7a5GIzBaRb4vI6c1bPJW7FsViYBMwF/gE2KaqTS5LBVDq9kuBdQDu+HagOFTeokwkeTg9povIAhFZUFVVFY/qKUfNiG/TlFdC73f/DzSYbHUMwzDCEo9RKQKq8FoYp7jt5HgqV9WAqo4GyvBaFsPCZXOfEuFYW+Xh9JipquNUdVxxcXFsxVORjByqx19O1hfLyP3kuWRrYxiGEZaYXlyqemFHT6Kq20TkVWACUCgiGa41Ugasd9kqgEFAhYhkAH2ALSHyZkLLRJL3SHaWn0re0lkUvPtndg0+Hs3ITbZKhmEYexHPjPocEblURG4TkbuatzjK9ReRQrefC3wVWIHnOfZNl+0C4Cm3P9ulccdfVlV18rOcd9gBQDkwD5gPlDtvsiy8wfzZ8V12N0V87PjS1WTUVpK35J5ka2MYhtGKeLq/7gMGAicCr+G1COKZ1FACvCIiS/AMwFxVfQa4CvixiKzCGzNpni5+J1Ds5D8GrgZQ1eXAI8AHwPPApa5brQm4DHgBz1g94vL2aBr2PYKdB5xA/uJ/4qvdlGx1DMMw9kI0xnroIrJIVceIyBJVPczF/XpBVY/rGhU7l1GjRumcOXOSrUaH8O9Yx4BHTmLnkJPYduzvk62OYRhpQGlp6UJVHRcrXzwtlUb3uU1ERuCNdQzugG5GBwn0HkTNyPPp9fGTZH6xLNnqhKU7LoNsGEbHiceozBSRvsAv8cYsPgBuTKhWRkxqxlxMILeYPm/dkHIuxksra7ns8Y/5x9uVXPb4x2ZYDCONiGlUVPUOVd2qqq+r6oGqOkBV/94VyhmR0ax8dhzxY7I2LiZ35dPJVmcv5qyoojHg+Xc3Bry0YRjpQUSjIiI/dpGJW8p/KCJXJlYtIx52Dp1GQ//D6P3un5CGmtgFuoyWU4jCTSkyDKMnEq2l8l08z6+WzHTHjGQjPrZP/AX+nZspeO/2ZGuzmynDisj0C4IXrHLKsKJkq2QYRhcRbfKjuphaLYX1LiaXkQI0DjiM2oNPJ2/pLOoO+QZNhQcmWyVGluRx6+nlLKqoZkxZgcUWM4w0IlaU4n3ikRnJpfqIH6OZufR587cQw0W8q7BglYaRnkQzKv8HPCsix4hIgduOBZ4G/tQl2hlxEcwtZse4K8j+/G1yVj+fbHUMw0hjInZ/qeosEfkCuB4YgefMsxy4VlW79+zBHkjd8LPo9dFj9Hn799QPOhrNyk+2SoZhpCGx1lOZo6rHqGqxqvZz+2ZQUhGfn+1HX4uvbjMFC/6abG0Mw0hT4pn8aHQTGgeMom7YGeQt/xcZm1ckWx3DMNIQMyo9jB3jrySY3YfCN36dcjPtDcPo+USb/HiF+5zYdeoYHUVzCtkx4SqyNr1Prw8eSrY6hmGkGdFaKs2Lc1kHfTdjZ/mp1Jd+id7z/oyvdmOy1TEMI42IZlRWiMha4GARWRKyLXVrpBipigjbjr4OCTbR580bkqKCRSk2jPQkolFR1bPxlv9dxZ616ZvXpz8lVsUiMkhEXhGRFSKyPKQ77ToR+VxEFrvt6yFlrhGRVSLykYicGCKf7GSrROTqEPkBIvKuiKwUkYfdCpAGEOi9H9VjLyV37Vxy1r7UpedeWlnL5U+sZOY7lVz+xEozLIaRRsRyKd6gqqOASqDAbetV9dM46m4CfqKqw/CM06UiMtwdu1lVR7vtOQB37CzgUGAycJuI+EXED/wNmAIMB84OqeePrq5yYCvQKgBmOlNz2HdoLBpKnzeuR+p3dNl5F1VU0xhQggqNAWVRRTwLhRqG0ROIZ436Y4CVeA/224CPRWRSrHKqWqmq77n9arwlf0ujFJkKPKSq9aq6Bq+FdITbVqnqaheL7CFgqos/dhzwqCt/LzAtll5phS+TbZN+i2/nZnq/+39ddtoxZQVk+gWfeAElx5QVdNm5DcNILvG4FP8ZOMFNfJyEt1b9zW05iYgMBsYA7zrRZW585i63ABh4BmddSLEKJ4skLwa2ubXqQ+Xhzj9dRBaIyIKqqvRa26NxwEhqDruQvA8fJevzt7vknCNL8rhiUhnjBhVwxaQyi/9lGGlEPEYlU1U/ak6o6sdAZrwnEJF84DHgSlXdAdwOHASMxutWu6k5a5ji2g55a6HqTFUdp6rjiouL41W9x1A99jKa+uxP4eu/QhoTP76xtLKWv7xewYJ11fzl9QobUzGMNCIeo7JARO4UkWPd9k9gYTyVi0gmnkG5X1UfB1DVjaoaUNUg8E+87i3wWhqDQoqXAeujyDcDhSKS0UJutCQjh23H3IC/+nMK5t2S8NPZmIphpC/xGJVL8AJJXg5cgbdG/cWxCrkxjzuBFar65xB5SUi204Blbn82cJaIZIvIAUA5MA+YD5Q7T68svMH82aqqwCvAN135C4Cn4rietKRh4FhqDz2X/OX/Imv9vISey8ZUDCN9EU3Q+hsichTwX2Ap0Bwv5OfA2XhdXwqsBb6vqpWuzC/wVpVswusum+PkXwduAfzAXap6g5MfiDcr+d23AAAgAElEQVRwXwQsAs5T1fpoeo0aNUrnzOk5MTGXVtbGvRiWNNbR/7HTQAN88Y2n0KzEjXW0RS/DMFKf0tLShao6Lla+hBmVVKUnGZXm+SCNASXTL8w4rTzmAzxrw3sUzz6PukO+xfZJv+4iTQ3D6O7Ea1QsoGQ3pj1jFw0DD6f2sAvJ+/ARstf9twu0NAwjnYjbqIiI9WGkGO0du9gx7nIa+x5E4Wu/RHZtS7CWhmGkE/FMfvyyiHyAN3kRERklIrclXDMjJiNL8phxWjnTJ5TE1fW1m4xstn3lj/h2bqHwv9elzLr2hmF0f+JpqdyMN+GxCkBV3wdizqg3uoaRJXmcP35gmwfDG/sdSvX4y8ld8wK5K81pzjCMziGu7i9VXddCFEiALkYXU3PYd6kvGUefN3+Df0fLr7hjWJRiw0hP4jEq60Tky4CKSJaI/D9cV5jRzfH52XbsHwAffV+5CoJNMYvEQ0ejFJtBMozuSzxG5WLgUry4WhV4c0wuTaRSRtcRKChl+9HXkrVxEQXvdc5QWUdm1FvYfMPo3mTEyqCqm4Fzu0AXI0nsHHIy2RVvkv/e36nfdwIN+x4Ru1AUPK+0Dbvnz7RlRv2iimoamhQFGps8g2STJw2j+xCP99e9IlIYku4rInclVi2jq9k+8ZcE+uxP35d/im/X1g7V1W6vNKB3bsbuqKBBlzYMo/sQT/fXYaq6ezKDqm7FC2Nv9CA0M48tx9+Eb9dWCl/9eYfdjNvrlbZjZ9Pu8NPi0oZhdB/iMSq+kDVPEJEi4ug2M7ofTf2Gs2PCT8n57FXylt6TlAHzMWUFZGV4EzqzMiwYpWF0N+IxDjcBb4lI8wqL3wJuSJxKRjKpPfQ8stbPp+Ddm7insRfvBoaS6d/Q5m6s9tLcdRYtGKUFqzSM1CVmS0VVZwHfADYCm4DTVfW+RCtmJAkRth17A9sz9+HP/hkU6o4uXxMlWtfZ0spaLnt8Jf94u5LLHjfvMMNINSIaFRHp7T6LgA3AA8D9wAYnM3oomlXAigk3UkQ1t2T9jWy/pkw31JwVW2gMOO+wgDJnxZZkq2QYRgjRur8eAE7GW+UxdNRWXPrABOplJJnBh4xl1bafMmnJ73jm4FfILTk82So5WjoQWNwyw0glIrZUVPVkt3rjMap6YMh2gKqaQUkD+h55HnVDT+eglXeQvfblZKsDwJRhxWT6vTebTL+XNgwjdYg6puKW7H2iPRWLyCAReUVEVojIchG5wsmLRGSuiKx0n32dXERkhoisEpElInJ4SF0XuPwrReSCEPlYEVnqysxwRtDoLETYdtSvaOh3KH1fuQr/tjXJ1oiRJXncevpQvv+lEm49fagN1BtGihGPS/E7IjK+HXU3AT9R1WHABOBSERkOXA28pKrlwEsuDTAFb136cmA6cDvsHtO5FjgSOAK4NsTF+XaXt7nc5HboaUQjI5utJ8xA/ZkUzf0h0pD8gfH2zoExDCPxxGNUvoJnWD5xLYilIrIkViFVrVTV99x+NV4QylJgKnCvy3YvMM3tTwVmqcc7QKGIlOCF3Z+rqlvcxMu5wGR3rLeqvu1aVLNC6jI6geZ5Kour+7D1+JvI2LaWwleuAg0mWzXDMFKUeOapTOnoSURkMN4s/HeBfVS1EjzDIyIDXLZSIDT+eoWTRZNXhJGHO/90vBYNpaVhsxgtaA7s6MXv2sCM0w5jwpeuos9bv6NpwQyqx1+ZbBUNw0hBIhoVEcnBi1A8BFgK3KmqbY6ZISL5wGPAlaq6I8qwR7gD2g55a6HqTGAmwKhRo8xdKA7CRRoeOe48Mqo+omDRP2gsGsqug76ebDUNw0gxonV/3QuMwzMoU/Bm1rcJEcnEMyj3q+rjTrzRdV3hPjc5eQUwKKR4GbA+hrwsjNzoBLxIw164lN2RhkXYftSvqB84lr6v/pzMTUuTraZhGClGNKMyXFXPU9V/AN8Ejm5Lxc4T605ghar+OeTQbKDZg+sC4KkQ+fnOC2wCsN11k70AnOCiI/cFTgBecMeqRWSCO9f5IXUZcRAttlfESMP+LLZ+7S8EevWj6IUf4K8Jb8efXLaZK59cxZPLNifyEgzDSDGijak0Nu+oalM7vHUnAt8GlorIYif7OfAH4BERuQj4DC+WGMBzwNeBVUAdcKE79xYR+Q0w3+W7XlWbp1FfAtwD5AJz3GbEQesxk9axvUaW5IX1sArmFrNl8t/p9+TZFM25mM1TH0Cz8ncff3LZZm582RsGm/eZF95l2oh+CbwawzBShWhGZZSI7HD7AuS6tOBNYekdrWJVfYPw4x4Ax4fJr0RYUVJV7wJareGiqguAEdH0MMITdsykDS66TX2HsPVrt1A05/v0/c+P2DL5dvB5P6dXV23bK++rq7a1MioWFNIweibRZtT7VbW32wpUNSNkP6pBMVKfMWUF+H2CAH5f+0LM15dNZPtRvyKn4g36vPHr3WuwHDukcK98LdOxlgy2Neq7FrvfRmdi66KkNdriM372tDRO4suj11Ow+B8E8gZSM/ZSDirOxe+DQBD8PjioOHevstGWDI6nW87oPOx+G52NGZU0ZVFFNYGgZ04CQdrU/dXqQTTtexxdt5HeC28l2Ks/i2om7V44UrV13dGWDO5ot1wy6Y5det35fhupSTwz6o0eSFiX4Thp9SD6vIZtk65n16Cj6fPGrzkh472oXWvRlgzuiF7xkKiunlhdeqlKou+3kX5YSyVNGVmSxxWTynh11TaOHVLYprdT70G0wbVU3IPIl8nWr95M8TMXMmrhNRwhP+MthhOua81bMrhF+RC9Yq382F4S2dXTXd/4E3m/jfTEjEqasrSylr+8XkFjQHl/fQ0HFefG/UCJ9CDSzDyqpvyDjEfO5u+Bmzgn8AuWBw9s9YCN9SCL5MrcURL54A9raLsJibrfRnpiRiVN6egDNtKDSHP6svyo2zlo7gXcm/UHzmq8ljFlQ+Mun0gS+eC3N37D8LAxlTQlkX3pH9QVcF7DNTSRwX2ZN7C54uNOqxuij4u0K0qAYRidhqimV3zFUaNG6Zw5NvEeOuat9OSyzbvHY1pObLzyyVXM+6yacqngoazfoP5sAmc8SKB3WYTa2qbznnER2cs4RDuWaJJ5bsPoCkpLSxeq6rhY+aylksa0d7Gr5jAs8z6r5saX17WK79U82XGllnFew8/J99VT/MwFe8UJa29ro3mOS1D3zHGJ51iiCdedaBjpiI2pGG3mkUWbWqVDWyvN+15L5iiq97mb4mcvpPjpC6g6+R4W1xRG9MKK5aEVbY5LtGOJpjsP1BtGZ2JGxUgI00b0221cGulH1dfvpPi571H89Pms3u//aAxIWCeBWA4EzXNcmhfUCZ3jEu1YorGBesPwsO4vo82cMWZA1HQ4GgeMpOrku/A11vKd1T/mIP/GsE4CsRwIxpQVkOH3JlZmhCmbleGVzcro+tZCe7sTDaMnYS0VIyKRBvIPKs7Fh9fF5KN1bK9INPY7lM0n30PxMxfydN4N/OuAGxlUflib5rB4hI9ZZq0Fw0g+1lIxwhIt7Mj9CzcQdPtBl46XpuJDqDplFpl+4btrfsTh/tWt8kR7419UUU1TwMUsC9BqQNxaC4aRXBJmVETkLhHZJCLLQmTXicjnIrLYbV8POXaNiKwSkY9E5MQQ+WQnWyUiV4fIDxCRd0VkpYg8LCJZibqWdCSaN9NnW+v3ytsyDdE9uJqKytl86v0EswoofvY7ZK2fF7deyRyMNwwjNolsqdwDTA4jv1lVR7vtOQARGQ6cBRzqytwmIn4R8QN/A6YAw4GzXV6AP7q6yoGtwEUJvJa0I9rYxn59s/fK2zIdT3DFQO9BbD71fgL5JRQ/9z1yVr8Ql16hg+9dPRhvGEZsEmZUVPV1YEvMjB5TgYdUtV5V1+AtKXyE21ap6mpVbQAeAqa6NemPAx515e8FpnXqBaQ50Wafnzt2ID4XZtgnXjqUeOdsBPMGsPmUf9HYfwR9//Mjei27P6ZeoS0TxVoqhpFqJGNM5TIRWeK6x/o6WSmwLiRPhZNFkhcD21S1qYU8LCIyXUQWiMiCqqqqzrqOHk+08Qm/DxfavnW5toSA0ZxCNp90F7v2P47Ct35Lwbs3gQYj5o8WNt8wjOTT1UblduAgYDRQCdzk5OHWstd2yMOiqjNVdZyqjisuLm6bxj2Y9q4tEjpY3hRhsLxNMbYyctj6tVuoHXYmBe/fQd+XfgJNu8JmTbbbsGEY0enSvgNV3di8LyL/BJ5xyQpgUEjWMqA5pkc4+WagUEQyXGslNL8RBx1ZWyR0sDxSF1SboxD7Mth+1LU09d6P3u/+iX41lWw58W8Ec/d+CTC3YcNIbbq0pSIiJSHJ04Bmz7DZwFkiki0iBwDlwDxgPlDuPL2y8AbzZ6sXBfMV4Juu/AXAU11xDT2FjsSqCu2C8tGJXVAi1I76Llu/dgsZVR/R74kzyKj6sFU2cxs2jNQlkS7FDwJvAweLSIWIXATcKCJLRWQJ8BXgRwCquhx4BPgAeB64VFUDrhVyGfACsAJ4xOUFuAr4sYiswhtjuTNR19IT6Ujo+9AuqMwIXVAdWbZ31wEnUHXKLCTYRL+nzonbMyweErWccCqTjtdsJA8LfZ/GxAp9H+14rGOdEQbeV7eJohcvJ2vT+1SPuZjqsZeBz9/mejpbr+5EOl6zkRgs9L3RIWLNNYk1670jIeib36zf357H5lNmUXvw6RQs+jtFz1+M7NraIQeDdAtPn47XbCQXc/JPU2IN1MeKFhytpdKRWe9h9Zr0WxoHjKLPm7+l8N+n88/qy3gvcGCbHQwSHZ6+I4ueJQoLyW90NWZU0pRYRiPaw2hpZS2XPb6SpoCS4d/Arafv/WDvSAj6SHrVDTuDxuJhZD37Q+73X8fv9RxmBU5spXc0Euk51hFvukRi3nJGV2NGJU2J9QYb7WE0Z8UWGgNeW6QxoMxZsaWVQcrKaN/bcTS9GgeMZOlx98Ocn3Fd5iyODi5DBtzYputus6tznMQy0skkUddsGOEwo5KmxPMGG+lhtKWuIWq6I2/Hscp+WJ3NjQ0/4UL/81yT8QANr5zDrq/9kYbSCXGfIxFYN5NheJhRSWPa/wbbMqBB6wAHHXk7jlb21VXbAOHuwBTmBw9mZsbt7PvshdSM/A47xl8JGdlhyyUa62YyDA/z/jLaQUs39K5zSz92SOHu/WV6IM+Mu4fa4WeTv/Qe+j/xLTI3L49SOjYdmdNhkzINw4yK0Q6KemVFTSeSg4pzdwex9Ptg/wF92X7Ur6ia/A989dvo98SZFMy/BQIN0SsKQzwh+w3DiI4ZFSMikd7apwwrIsPFvs/wCVOGFXWZTosqqgm6IMYa3BPMsn6/SWz61tPsLD+VgkX/oP/j3yBz46I2121zOgyjY5hRMcLiuQ1/zD/eruSyxz9uZVhEFHGfXUm0OTCa3Yf/HvwLHjnwDzTtrKbfU+fS541fI/U7dueJ1r3VkdA1hmF42EC9EZY5K6poDHj7jQEv3TxWsKiimkDQrRPvWgtdNY4QbQ7Mnrki+/EH/+95fOh/2H/FQ+Ss+Q87JvyMeXlf4fInV0WcS2KD7YbRcaylYkQgsodXMt/oo62nEhoeZltTDg/1+R82n/YIgfyB9H3lZwx/5bscFFgTNXxMtMH2J5dt5sonV/Hkss0JvUbD6M5YS8UIy5RhRTzzQRVNQW01bpLMN/po5w7XNdbY71A2T3uYXh89Rr+3buLprF/wcOBYbm76Fr1zB4U9RzieXLaZG1/2FiGd95lnjKaN6NdZl2UYPQYzKkZEoo2bJHOWdqRzf7xpZ/i0+Kg75FvcvXU0hYv+xnn+/3Cq/23eW3MOcshlaEZuzHN682P2TptRiU4qxkIzEo91fxlhCTdukvpEnz8zfPC+/IHvcGLjjbylI5lUeRcDHjyBXsvvj+mCXN4/N2oabN2SUMw9O32xlooRlu4YdmTKsGKeXVFFUwAy/F46lD1dZwPRsmPYLB9SMO9mCt/8LflL7qb68B8wP/943lu/s9XbdW19cK+6WqZTNaBkskjlWGhGYknkyo93icgmEVkWIisSkbkistJ99nVyEZEZIrJKRJaIyOEhZS5w+VeKyAUh8rFuFclVrmzrWCFGu2l+AE+fUNJtHpAjS/K49fShfP9LJdx6+tCI8cyaB+IbBo6l6pT7qJryT4LZhfR97RcMe+YUts+7nx89/kGLt+voraCOriHT0zD37PQlkd1f9wCTW8iuBl5S1XLgJZcGmIK3Ln05MB24HTwjBFwLHAkcAVzbbIhcnukh5Vqey+ggPTHsSCsPLhHqBx3F5tP+zcySX1OlBfw+8w7+k3ElO9+aiTR4hmXogF571dMy3ZE1ZHoi3fGlxOgcEvbLV9XXRWRwC/FU4Fi3fy/wKt5a81OBWeqtbfyOiBSKSInLO1dVtwCIyFxgsoi8CvRW1bedfBYwDbB1gtOYWF1QUT24RHhDxvG7hiEc41vC9/1PM61qJsEHHqR22Bm8t3YCsKeuFz+s2mugviNryPRULOR+etLVA/X7qGolgPsc4OSlwLqQfBVOFk1eEUYeFhGZLiILRGRBVVVVhy/CSE1idUGF8+AKpahXBiC8FhzFOY2/5M9lf6G+9MvkL7mbv2//Pn/LvIUjZQWgrN/RuFfZaPNnID0H8dPxmo3UGagPNx6i7ZCHRVVnAjMBRo0a1bVxRYwuI1YXVHn/3N0tlOZ0KFOGFfP0B1UEgl6wykPHTGRryQn4qz/noxf/ycTNz3BS9jxWBfflo35TkV1laI4XNTna/Jl0HMRPx2s2PLq6pbLRdWvhPjc5eQUQOhOtDFgfQ14WRm6kCMl4S404T8Wxbmt91DSAT7w3Fl/Ia0ugoJQh37iOW4Y/zA0Zl5KV14eTNtzOwH9Nou9/fkT2Z69BMHJ3V2gLqiFNBvEtOGf60tUtldnABcAf3OdTIfLLROQhvEH57apaKSIvAL8LGZw/AbhGVbeISLWITADeBc4H/tqVF2JEJnlvqdE9tL6obYyajhXTbPrRB8HRlwGXsanqQ3p99Di5K58md/Xz1GcXs3HnOOY1fZm755cz47Q93mehLSglPQbxu6NLutE5JNKl+EHgbeBgEakQkYvwjMnXRGQl8DWXBngOWA2sAv4J/ADADdD/BpjvtuubB+2BS4A7XJlPsEH6lCFZb6lThhWT6fdaGplh5qkMKsyOmo7lBhvqOdZUfAg7vvxzNp73Glu+NoO1OcM5U17m8axr+Y/vCvq+80cyNywCDfLO2h171dMy3RMx76/0JZHeX2dHOHR8mLwKXBqhnruAu8LIFwAjOqKjkRiS9ZbaPE8lUmiQbS08slqmo42LRPQc82ex64Cv8VLtGG5/+SNO8C3gJP87HLP5Cfyz/00gtx/nNI0h2zeSN4MjqCOHzS1aSD0V8/5KT3p+O9zocpIdcDLS+WIN1Ecr/8iiTa3SLV2Ka+jFY8FJPBGcxA/HFPCdfh+Ss/Yljl37OpOz5lKvGSwIHkx19pfI3NxEY/EwEIuUZPQszKgYCSEV31Jr6wNR0x3Bcyne0zobvn8JO0uGsHPIyfzppTVUrniTr/gWc7RvKRM33QGP30Ewuw/1A8fSUDKehoFjaex3CPgy23xuC9xopBJmVIweRfQHbOQ1YmIx8cA+rF24aa90KCNL8rhiUhmvrtrGsUMK93Yp3riTlcFDeTt4KABHFtXx9yOryFo/j+zK+eR++jIAQX8OjQNG0th/JA3uM5C/L4hEvC5vhc6VNAWUDP8Gbj3dxi/ADG0yMaNi9BhieZ3lZe/d1dQyHY1YrZyllbXc/No6mgKw6PNqDirO3X3uL2r2Hrv5qK6AneUT2Vl+KgC+mg1kbVpM1ob3yNq4mLxl95Ef9MZdgtl92JpfTuUX/dkaGMQd8wfx/VMmMXyQN294zootNAY837LGgDJnxZa0f4jGMrRPLtu82/jb8gWdjxkVo8cQKzLuooqaFvlrWlYR5Q03eisn2vLLg4tyWLx+z3ydwUU5e5UN5g9kV/5kdh3owtcFGsjc8jGZXywlc/OH1H+2hDNlCbmZLjz/HAjkDaSpcDCnbC2i2N+XdTqAz3Qf6moy2XtqV/o9RKMZWltsLfGYUTF6DLG8zvrlZUZNR2vpDB2w96B+y3Q0o3PJxFIu/vfHu0NBXDIxYkQhD38Wjf1H0Nh/xG69rnziIwYGNjIs43N+NLyO0uDnZGxfy4SdSzk+M2SC6QYI3lNAIL+EQN4+rK7vTeP6LIZqIe9X9GHgjnImDj8AzSkkmNUbfP7ounRLIs9XssXWEo8ZFaPHEMvr7Nyx+/Dm2u27w7CcO3afvY43z3xX9sQOa64jVsDIKcOK3FouSoZ/7+WXP6naudfkx0+qdrapi2pkSR63nHYwiyr2ZUzZJPJK8mh+NF7y6MesWb+R/WQT+8smxvfZzjcPbMJfU4m/dgP7VC3jMv82/M2rdy5zG6AImlVAMLsAzepNMCsfzcwjmJmHZuahmbloRg6a0Qv1Z6EZ2agvC/xZqC8D/Jnep2Sg4vMMlPhAfCg+Z1cFmlelUGX3A15BUNCgt8Hu/b3kGgTVEJmrQ4NEisx0Ye96AhkbCAQFfD7O71tK9merQTI4t18Nsm4LjfhpIIPTS8rwb/OjGTngz3bXm9NurzwbyzGjYvQwonmdjSzJ47ZvRJ7HEi122JiyAjL8G3YbjZatIG+OTHiD9szyvYOYPrO8qs1vx5Gua2N1AzvIZ5nms0wPZGFTJidM3DN96+pnVvPm6i0Us4Ni2cFXSpr4n1HZ+Oq34du1Danfjq+hGl99NdKwA3/tRjIaa5HGWqRpJ9K403ugdyOKgL+GPtnm79mdCkwNnfP6vttaEMzIRTN7eUY2Kx/NzCeY3dszvtm9Ceb0JZhTSDCnL4HcfgR7FbN0ey8uf7oi7eOdmVExehSx3hSjGZ3Y4eu1xWd8dffLy4ia7gh1DcGo6QmDe/P66u1soi+btC+nHDKIneVtMGiqEGhAgg1IUz0SqIdgIxJo9D6DAdAm9+laGhoIaVG0uFe719LzWjAqvt37za0ccPLdx3yoyO59du+7z9ZK79WiEQ1AMAgaQIJNEGxyn41IoMFtu7zra9rlGdOmnUhjHdJYi6+hBmmoJmPHZ/jqd3iGuGlnq7PuAyzw57LBV8QGiuj91iDyBx9IoKCUQEEZTb33I9irf8g96JmYUTF6DB2NOdZyrkloayRWXLBonDt2IG+s2UFQvUCV544d2NZLi0iwxUO7ZfqBhRtbpdvUShKBjGyUbDSrcyMjdOuuoqZd+HZtw7+rCt/OLfh2VvHFxs95Z/lK+utWSnxbOKTmXbIXPrdXsaA/h0DhYJr6DKap8AAa+w6hqW85TYWD2zVHKZRUuZ9mVIweQ0fXRY82JtPR0DN+H2jA++xMhvTLYfH6ur3SoVRWN0RNJ4tuP78mI4dg/kCC+XteEPKHwj5DvAe7r6yAASV5EGjAX7OejB3r8O9YR8aOz8jYtobMzR+Qs+ZFxI0nqS+Tpr4H0Vg8jMZ+w2joN4LGfsMgIyeSBnuRSksNmFExegydEXMsUhdWR0LPdKSVE4tLJpZxyaMf724FXTKxbK/jWX5hZ1D3SqcCPXV+Tavfjz+LQJ/BBPoMbp25qZ6M7WvI3LKSjC0fk1n1IdnrXqfXx08AoJJBY/FQGgeMomHgWBoGjvEmw4ahoy9UnYkZFaPHkOiYY+0NPZPIAJsjS/K4/ZuRnQ8CQY2aTh7RlylICzKyaSo+hKbiQ/bIVPHVfUHWF0vJ3LSUrC/eJ3flU+R98CAATfn70rDvkdTvewT1pV8imOd5MKbSUgNmVIweRSrGHEumscvP9rOlLrBXOhWYMqzYuWBDRphlCtIWEYJ5A9iVdzy7BruA7sEmMrd85EVcWD+fnE9f3t2aaew7hPqyoxg76Gj+OnU4763flfQxFdGW3hk9nFGjRumcObb0itFziDZAGzqDHOBnxw3q1Ml+HZmtnyoDy90ODZKx5WOyK94ip+K/ZFUuRIKNBDPzqR90FLv2P45d+x/b6Y4VpaWlC1V1XKx8SWmpiMhaoBoIAE2qOk5EioCHgcHAWuAMVd0qIgL8Bfg6UAd8R1Xfc/VcAPzSVftbVb23K6/DMJJNrAHa5gd9tAd/ex/usUKedMS924iC+HZ3m9WO+i7SWEfW5++Q8+nL5Hz2Grmrn0d9mdSXTWTngSeya/BX0az8LlMvmd1fX1HVzSHpq4GXVPUPInK1S18FTAHK3XYkcDtwpDNC1wLj8DpkF4rIbFXd2pUXYfQsUvXtOZJe8QzQThvRL2IroiNeQ9EmdaaSN1JPIdJvQDN7UT/4OOoHH8d2DZK58X1y17xAzuoX6fvZq6j/Onbt/xV2DjmZXYOOBn9WQvVMpTGVqcCxbv9e4FU8ozIVmOVWh3xHRApFpMTlndu8vLCIzAUmAw92rdpGTyFVH4TR9OroAG1HvIaixVJLJW+knkDcv03x0ThwDI0Dx7BjwlVkblpMr5XPkLN6DjlrX2LDea+jCTYqyVp2ToEXRWShiEx3sn1UtRLAfQ5w8lJgXUjZCieLJG+FiEwXkQUisqCqqipcFsMI+yBMBaLp1dG14D2jJPiENhulc8fus3veTctYah2p12hNu36bIjTuM4btR/0vG897jc1TH0RzChOua7JaKhNVdb2IDADmisiHUfJGiMMQUd5aqDoTmAneQH1blTXSg1Ryywwlll4dGZvoiGdatFhqyVxSuifS4d+mL5PG/ocmRrkWJMWoqOp697lJRJ4AjgA2ikiJqla67q3mZfYq2HuBiDJgvZMf20L+aoJVN3owqfogTNX5N7HK2kB855Gqv81wdLlREZE8wKeq1W7/BOB6YDZwAfAH9/mUKzIbuExEHsIbqN/uDM8LwO9EpK/LdwJwTRdeitEDSdUHYarqZXQd3aFBFOQAAAgUSURBVOU3kIyWyj7AE56nMBnAA6r6vIjMBx4RkYuAz4BvufzP4bkTr8JzKb4QQFW3iMhv2BPY+vrmQXvDMAwjOXS5UVHV1cCoMPIq4PgwcgUujVDXXcBdna2jYRiG0T6S5f1lGIZh9EDMqBiGYRidhhkVwzAMo9Mwo2IYhmF0GmkXpVhEvgA+bWfxfsDmmLm6HtOrbZhebcP0ahs9Va/9VbV/rExpZ1Q6gogsiCf0c1djerUN06ttmF5tI931su4vwzAMo9Mwo2IYhmF0GmZU2sbMZCsQAdOrbZhebcP0ahtprZeNqRiGYRidhrVUDMMwjE7DjIphGIbRaZhRiYCI3CUim0RkWYjsOhH5XEQWu+3rXazTIBF5RURWiMhyEbnCyYtEZK6IrHSffWPV1UV6JfV+OR1yRGSeiLzvdPu1kx8gIu+6e/awiCR2jdX49bpHRNaE3LPRXamX08EvIotE5BmXTuq9iqJX0u+V02OtiCx1OixwsqT+J6PolfD/pBmVyNyDt+Z9S25W1dFue66LdWoCfqKqw4AJwKUiMhy4GnhJVcuBl1w6FfSC5N4vgHrgOFUdBYwGJovIBOCPTrdyYCtwUYroBfDTkHu2uIv1ArgCWBGSTva9aqalXpD8e9XMV5wOzfNAkv2fjKQXJPg/aUYlAqr6OpBS67OoaqWqvuf2q/H+YKXAVOBel+1eYFqK6JV01KPGJTPdpsBxwKNOnox7FkmvpCIiZcBJwB0uLST5XoXTqxuQ1P9kMjGj0nYuE5Elrnusy5u0zYjIYGAM8C6wj6pWgveABwakiF6QAvfLdZssxluiei7wCbBNVZtclgqSYARb6qWqzffsBnfPbhaR7C5W6xbgZ0DQpYtJgXsVRq9mknmvmlHgRRFZKCLTnSwV/pPh9IIE/yfNqLSN24GD8LorKoGbkqGEiOQDjwFXquqOZOgQjjB6pcT9UtWAqo4GyoAjgGHhsnWtVq31EpEReEtiHwKMB4qAq7pKHxE5GdikqgtDxWGydum9iqAXJPFetWCiqh4OTMHr+p2UJD1aEk6vhP8nzai0AVXd6B4EQeCfeA+oLkVEMvEe3Per6uNOvFFEStzxErw336TrlQr3KxRV3Qa8ijfuUygizSuflgHrU0Cvya4rUVW1Hribrr1nE4FTRWQt8BBet9ctJP9etdJLRP6V5Hu1G1Vd7z43Af+/vfsLkaoM4zj+/aWEokmEiwQRFgSmIVQWWBsZmlF3kml/TLOSRKKLkqKMtqKgq4xIRKJ/mG0YtJVF0sW6rbZG+a80FYK1IrpJsMUsrfTp4n3XPQ6zOuaZnTV/n6sz75wz55mXPfPse2b3edpyHA2/JqvFNRDXpJPKSej9IclmADv627dO5xfwGrArIl4sPPURMC9vzwM+HAxxNXq+cgxNks7N28OBaaTvfNYBM/NujZizanHtLnwQiXQffsDmLCIej4gLImIscDvQHhF30eC56ieuOY2cq16SRkg6p3cbmJ7jaPQ1WTWugbgmB7xH/elCUiswBRgt6WegBZiS/2wxgB+ABwY4rGuBu4Ht+V48wBPAC8BqSfcBPwG3DZK47mjwfAGcD7wlaQjpl6jVEfGxpJ3Au5KeA7aSkuJgiKtdUhPpttM2YOEAx1XNYzR2rvqzahDM1RigLeU1hgLvRMRaSV/T2Guyv7hW1vuadJkWMzMrjW9/mZlZaZxUzMysNE4qZmZWGicVMzMrjZOKmZmVxknFjFReRoWK1IXxZyVNO8GxT0taXL/ozE4f/j8Vs+OIiKcaHYPZ6cQrFbM+QyS9qtTf5DNJw5V6dswEkHSLpN2SNkh6WbmvRzZeUoekbkkP5f0fLWwvldSet6dKejtvL5e0Scf2VJkqqa33hSXdKOl9Kki6R9IHktYo9RV5UNLDSj1HvpR0Xt6vQ9JLkrok7ZB0dR5vUur1sUXSCkk/Shpdl5m1M4aTilmfS4BlETEB+A24tfcJScOAFcDNEdEMNFUcOw64iVRLqSXXQusErsvPTwJG5vFmYH0eX5J7XUwErpc0EWgHLs3/LQ4wn1TbqprLgDvzeZ8H/oiIy4GNwNzCfiMi4hpgEfB6HmshlTy5glQb6sITzI/ZCTmpmPXZU2j0tBkYW3huHNAdEXvy49aKYz+JiEMRsZdUPHBMfo0rcw2mQ6QP+kmkRNObVGZJ2kIqfzIBGB+pzMVKYE6uDzYZ+LSfmNdFxP6I+BXoAdbk8e0V8bfC0T5Bo/LrNpMKNBIRa0kNuMxOib9TMetzqLB9GBheeFytBPzxjh0aEX/nyrrzgS7gW+AGUunxXZIuAhYDV0XEPklvAsPya7xBShAHgfci4h9JM0irC4D7q5z3SOHxEY69vivrMUUN78nspHmlYlab3cDFSk3IAGbXeFwnKXF0klYnC4FteTUyCjgA9EgaQ+p7ARwtW/4L8CSptTUR0VZoA7vpJOOfDSCpGeiJiB5gAzArj08HGtZ0zv4/vFIxq0FE/ClpEbBW0l7gqxoPXQ8sATZGxAFJB/MYEfGNpK3Ad0A38EXFsauApojYWcJb2Cepi5TI7s1jzwCtkmYDn5OaNu0v4Vx2BnOVYrMaSRoZEb/n/h3LgO8jYmkdz/cKsDUiTqnUvKQOYHHl6kap/e7hfGttMrA8d6I0+8+8UjGr3QJJ84CzSV+sr6jXiSRtJt0ae6Re5yD9tddqSWcBfwEL6nguO0N4pWJmZqXxF/VmZlYaJxUzMyuNk4qZmZXGScXMzErjpGJmZqX5F4cIWVA9gfGjAAAAAElFTkSuQmCC\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": 53, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])" | |
| ] | |
| }, | |
| "execution_count": 53, | |
| "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": 57, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| " 11 10 9 8 7\n", | |
| "-1.243e-08 x + 4.722e-06 x - 0.0008028 x + 0.08056 x - 5.297 x\n", | |
| " 6 5 4 3 2\n", | |
| " + 239.5 x - 7588 x + 1.684e+05 x - 2.565e+06 x + 2.551e+07 x - 1.491e+08 x + 3.879e+08\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "f1 = np.polyfit(x, y, 11)\n", | |
| "p1 = np.poly1d(f1)\n", | |
| "print(p1)\n", | |
| "\n", | |
| "#PlotPolly(p1, x, y, 'highway-mpg')\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": 58, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "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": 59, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)" | |
| ] | |
| }, | |
| "execution_count": 59, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "pr=PolynomialFeatures(degree=2)\n", | |
| "pr" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 60, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "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": 61, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(201, 4)" | |
| ] | |
| }, | |
| "execution_count": 61, | |
| "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": 62, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(201, 15)" | |
| ] | |
| }, | |
| "execution_count": 62, | |
| "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": 1, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "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": 2, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "NameError", | |
| "evalue": "name 'PolynomialFeatures' is not defined", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-2-71794ed1efe5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mInput\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'scale'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mStandardScaler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'polynomial'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mPolynomialFeatures\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minclude_bias\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'model'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mLinearRegression\u001b[0m\u001b[0;34m(\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[0m", | |
| "\u001b[0;31mNameError\u001b[0m: name 'PolynomialFeatures' is not defined" | |
| ] | |
| } | |
| ], | |
| "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": 3, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "NameError", | |
| "evalue": "name 'Input' is not defined", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-3-c2581bbd93ce>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpipe\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mPipeline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mInput\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mpipe\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;31mNameError\u001b[0m: name 'Input' is not defined" | |
| ] | |
| } | |
| ], | |
| "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": 66, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/home/jupyterlab/conda/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/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": 66, | |
| "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": 67, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/home/jupyterlab/conda/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": 67, | |
| "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" | |
| ] | |
| }, | |
| { | |
| "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": 4, | |
| "metadata": { | |
| "collapsed": false, | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "NameError", | |
| "evalue": "name 'lm' is not defined", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-4-6496cd09c7d1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#highway_mpg_fit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mlm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;31m# Find the R^2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'The R-square is: '\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscore\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;31mNameError\u001b[0m: name 'lm' is not defined" | |
| ] | |
| } | |
| ], | |
| "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": 5, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "NameError", | |
| "evalue": "name 'lm' is not defined", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-5-4d6ef30e8d0b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mYhat\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[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'The output of the first four predicted value is: '\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mYhat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;31mNameError\u001b[0m: name 'lm' is not defined" | |
| ] | |
| } | |
| ], | |
| "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": 6, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "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": 7, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "NameError", | |
| "evalue": "name 'df' is not defined", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-7-11329c0aef92>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmean_squared_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'price'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mYhat\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'The mean square error of price and predicted value is: '\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;31mNameError\u001b[0m: name 'df' is not defined" | |
| ] | |
| } | |
| ], | |
| "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": null, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "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": null, | |
| "metadata": { | |
| "collapsed": 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": null, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "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": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "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": null, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "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": null, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "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": 8, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "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": 9, | |
| "metadata": { | |
| "collapsed": 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": 10, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "NameError", | |
| "evalue": "name 'lm' is not defined", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-10-12524a9989c9>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mlm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;31mNameError\u001b[0m: name 'lm' is not defined" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(X, Y)\n", | |
| "lm" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Produce a prediction" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "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": null, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "plt.plot(new_input, yhat)\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Decision Making: Determining a Good Model Fit</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>Now that we have visualized the different models, and generated the R-squared and MSE values for the fits, how do we determine a good model fit?\n", | |
| "<ul>\n", | |
| " <li><i>What is a good R-squared value?</i></li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| "\n", | |
| "<p>When comparing models, <b>the model with the higher R-squared value is a better fit</b> for the data.\n", | |
| "<ul>\n", | |
| " <li><i>What is a good MSE?</i></li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| "\n", | |
| "<p>When comparing models, <b>the model with the smallest MSE value is a better fit</b> for the data.</p>\n", | |
| "\n", | |
| "\n", | |
| "<h4>Let's take a look at the values for the different models.</h4>\n", | |
| "<p>Simple Linear Regression: Using Highway-mpg as a Predictor Variable of Price.\n", | |
| "<ul>\n", | |
| " <li>R-squared: 0.49659118843391759</li>\n", | |
| " <li>MSE: 3.16 x10^7</li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| " \n", | |
| "<p>Multiple Linear Regression: Using Horsepower, Curb-weight, Engine-size, and Highway-mpg as Predictor Variables of Price.\n", | |
| "<ul>\n", | |
| " <li>R-squared: 0.80896354913783497</li>\n", | |
| " <li>MSE: 1.2 x10^7</li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| " \n", | |
| "<p>Polynomial Fit: Using Highway-mpg as a Predictor Variable of Price.\n", | |
| "<ul>\n", | |
| " <li>R-squared: 0.6741946663906514</li>\n", | |
| " <li>MSE: 2.05 x 10^7</li>\n", | |
| "</ul>\n", | |
| "</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>Usually, the more variables you have, the better your model is at predicting, but this is not always true. Sometimes you may not have enough data, you may run into numerical problems, or many of the variables may not be useful and or even act as noise. As a result, you should always check the MSE and R^2.</p>\n", | |
| "\n", | |
| "<p>So to be able to compare the results of the MLR vs SLR models, we look at a combination of both the R-squared and MSE to make the best conclusion about the fit of the model.\n", | |
| "<ul>\n", | |
| " <li><b>MSE</b>The MSE of SLR is 3.16x10^7 while MLR has an MSE of 1.2 x10^7. The MSE of MLR is much smaller.</li>\n", | |
| " <li><b>R-squared</b>: In this case, we can also see that there is a big difference between the R-squared of the SLR and the R-squared of the MLR. The R-squared for the SLR (~0.497) is very small compared to the R-squared for the MLR (~0.809).</li>\n", | |
| "</ul>\n", | |
| "</p>\n", | |
| "\n", | |
| "This R-squared in combination with the MSE show that MLR seems like the better model fit in this case, compared to SLR." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<ul>\n", | |
| " <li><b>MSE</b>: We can see that Polynomial Fit brought down the MSE, since this MSE is smaller than the one from the SLR.</li> \n", | |
| " <li><b>R-squared</b>: The R-squared for the Polyfit is larger than the R-squared for the SLR, so the Polynomial Fit also brought up the R-squared quite a bit.</li>\n", | |
| "</ul>\n", | |
| "<p>Since the Polynomial Fit resulted in a lower MSE and a higher R-squared, we can conclude that this was a better fit model than the simple linear regression for predicting Price with Highway-mpg as a predictor variable.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<ul>\n", | |
| " <li><b>MSE</b>: The MSE for the MLR is smaller than the MSE for the Polynomial Fit.</li>\n", | |
| " <li><b>R-squared</b>: The R-squared for the MLR is also much larger than for the Polynomial Fit.</li>\n", | |
| "</ul>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h2>Conclusion:</h2>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>Comparing these three models, we conclude that <b>the MLR model is the best model</b> to be able to predict price from our dataset. This result makes sense, since we have 27 variables in total, and we know that more than one of those variables are potential predictors of the final car price.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h1>Thank you for completing this notebook</h1>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n", | |
| "\n", | |
| " <p><a href=\"https://cocl.us/DA0101EN_edx_link_Notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>About the Authors:</h3>\n", | |
| "\n", | |
| "This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n", | |
| "\n", | |
| "<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<hr>\n", | |
| "<p>Copyright © 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 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "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.6" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment