Created
October 23, 2020 22:38
-
-
Save theone9807/dbdf939c6de8f359e6e1ebfeaf6a9d54 to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<center>\n", | |
| " <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n", | |
| "</center>\n", | |
| "\n", | |
| "# Model Development\n", | |
| "\n", | |
| "Estimated time needed: **30** minutes\n", | |
| "\n", | |
| "## Objectives\n", | |
| "\n", | |
| "After completing this lab you will be able to:\n", | |
| "\n", | |
| "- Develop prediction models\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Some questions we want to ask in this module\n", | |
| "\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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Setup</h4>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " Import libraries\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "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:\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "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>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": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# path of data \n", | |
| "path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n", | |
| "df = pd.read_csv(path)\n", | |
| "df.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>1. Linear Regression and Multiple Linear Regression</h3>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Linear Regression</h4>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<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" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "$$\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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Lets load the modules for linear regression</h4>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.linear_model import LinearRegression" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Create the linear regression object</h4>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm = LinearRegression()\n", | |
| "lm" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>How could Highway-mpg help us predict car price?</h4>\n" | |
| ] | |
| }, | |
| { | |
| "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.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "X = df[['highway-mpg']]\n", | |
| "Y = df['price']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Fit the linear model using highway-mpg.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(X,Y)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " We can output a prediction \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n", | |
| " 20345.17153508])" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "38423.3058581574" | |
| ] | |
| }, | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.intercept_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>What is the value of the Slope (b)?</h4>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-821.73337832])" | |
| ] | |
| }, | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>What is the final estimated linear model we get?</h3>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "As we saw above, we should get a final linear model with the structure:\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "$$\n", | |
| "Yhat = a + b X\n", | |
| "$$\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Plugging in the actual values we get:\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>\n" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm1 = LinearRegression()\n", | |
| "lm1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm1 = LinearRegression()\n", | |
| "lm1 \n", | |
| "\n", | |
| "-->\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "0 13495.0\n", | |
| "1 16500.0\n", | |
| "2 16500.0\n", | |
| "3 13950.0\n", | |
| "4 17450.0\n", | |
| " ... \n", | |
| "196 16845.0\n", | |
| "197 19045.0\n", | |
| "198 21485.0\n", | |
| "199 22470.0\n", | |
| "200 22625.0\n", | |
| "Name: price, Length: 201, dtype: float64" | |
| ] | |
| }, | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df['price']" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 15, | |
| "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", | |
| "\n", | |
| "lm1.fit(x,y)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "lm1.fit(df[['engine-size']], df[['price']])\n", | |
| "lm1\n", | |
| "\n", | |
| "-->\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #1 c):</h1>\n", | |
| "\n", | |
| "<b>Find the slope and intercept of the model?</b>\n", | |
| "\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Slope</h4>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[-7963.33890628]\n", | |
| "[[166.86001569]]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "print(lm1.intercept_)\n", | |
| "print(lm1.coef_)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Intercept</h4>\n" | |
| ] | |
| }, | |
| { | |
| "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": [ | |
| "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", | |
| "-->\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", | |
| "\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Write your code below and press Shift+Enter to execute \n", | |
| "yhat = -7963.33 +v166.86*x" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "# using X and Y \n", | |
| "Yhat=-7963.34 + 166.86*X\n", | |
| "\n", | |
| "Price=-7963.34 + 166.86*engine-size\n", | |
| "\n", | |
| "-->\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h4>Multiple Linear Regression</h4>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "$$\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", | |
| "$$\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "The equation is given by\n" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "$$\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.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Fit the linear model using the four above-mentioned variables.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(Z, df['price'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "What is the value of the intercept(a)?\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "-15806.62462632922" | |
| ] | |
| }, | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.intercept_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "What are the values of the coefficients (b1, b2, b3, b4)?\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([53.49574423, 4.70770099, 81.53026382, 36.05748882])" | |
| ] | |
| }, | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.coef_" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " What is the final estimated linear model that we get?\n" | |
| ] | |
| }, | |
| { | |
| "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?\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "lm2 = LinearRegression()\n", | |
| "x = df[['normalized-losses', 'highway-mpg']]\n", | |
| "y = df[['price']]\n", | |
| "\n", | |
| "lm2.fit(x, y)" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "-->\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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 27, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([[ 1.49789586, -820.45434016]])" | |
| ] | |
| }, | |
| "execution_count": 27, | |
| "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", | |
| "-->\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>2) Model Evaluation using Visualization</h3>\n" | |
| ] | |
| }, | |
| { | |
| "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.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "import the visualization package: seaborn\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 28, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# import the visualization package: seaborn\n", | |
| "import seaborn as sns\n", | |
| "%matplotlib inline " | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Regression Plot</h3>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " Let's visualize **highway-mpg** as potential predictor variable of price:\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 29, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(0.0, 48274.75798471305)" | |
| ] | |
| }, | |
| "execution_count": 29, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAJNCAYAAABwXMA5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACMqklEQVR4nOzdeXzcZbn//9c9+0z2tE23pLRpC2Xf2gqCpeCGy8HloBaPgoJSF46en0e/ejbOOZzlq1/PxjkqFmV3AUSPoh70qKVUhNIFKFAotE2XpFvSrJPMPnP//piZkrRNMskkM5PJ+/l49JH008zMPdAm77nnuq/LWGsREREREZHCcBR7ASIiIiIi04kCuIiIiIhIASmAi4iIiIgUkAK4iIiIiEgBKYCLiIiIiBSQAriIiIiISAG5ir2AQps5c6ZduHBhsZchIiIiImVu27Ztx6y1s068Pu0C+MKFC9m6dWuxlyEiIiIiZc4Ys/9U11WCIiIiIiJSQArgIiIiIiIFpAAuIiIiIlJACuAiIiIiIgWkAC4iIiIiUkAK4CIiIiIiBaQALiIiIiJSQArgIiIiIiIFpAAuIiIiIlJACuAiIiIiIgWkAC4iIiIiUkAK4CIiIiIiBaQALiIiIiJSQArgIiIiIiIFpAAuIiIiIlJACuAiIiIiIgWkAC4iIiIiUkAK4CIiIiIiBaQALiIiIiJSQArgIiIiIiIFpAAuIiIiIlJACuAiIiIiIgWkAC4iIiIiUkAK4CIiIiIiBaQALiIiIiJSQArgIiIiIiIFpAAuIiIiIlJACuAiIiIiIgXkKvYCpoMNO9tZt7GF1u4QTXUB1q5qZvWyhmIvS0RERESKQDvgk2zDznZufXQH7cEItX437cEItz66gw0724u9NBEREREpAgXwSbZuYwtupyHgcWFM+qPbaVi3saXYSxMRERGRIlAAn2St3SH8bueQa363k7buUJFWJCIiIiLFpAA+yZrqAoTjySHXwvEkjXWBIq1IRERERIpJAXySrV3VTDxpCcUSWJv+GE9a1q5qLvbSRERERKQIFMAn2eplDdx2zdk0VPnoDcdpqPJx2zVnqwuKiIiIyDSlNoQFsHpZgwK3iIiIiADaARcRERERKSgFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAnIVewEik23DznbWbWyhtTtEU12AtauaWb2sodjLEhERkWlKO+BS1jbsbOfWR3fQHoxQ63fTHoxw66M72LCzvdhLExERkWlKAVzK2rqNLbidhoDHhTHpj26nYd3GlmIvTURERKYpBXApa63dIfxu55BrfreTtu5QkVYkIiIi051qwAtANcjF01QXoD0YIeB5/a96OJ6ksS5QxFWJiIjIdKYd8EmmGuTiWruqmXjSEoolsDb9MZ60rF3VXOyliYiIyDSlAD7JVINcXKuXNXDbNWfTUOWjNxynocrHbdecrXcgREREpGhUgjLJWrtD1PrdQ66pBrmwVi9rUOAWERGRkqEd8EnWVBcgHE8OuaYaZBEREZHpSwF8kqkGWUREREQGUwCfZKpBFhEREZHBVANeAKpBFhEREZEs7YCLiIiIiBTQpAdwY4zTGPOcMeYXmd/XG2N+Y4zZlflYN+hr/8IYs9sY86ox5u2Drl9sjHkx82f/aYwxmeteY8xDmevPGGMWTvbzERERERHJRyF2wD8PvDLo918BfmetXQr8LvN7jDFnAWuAs4GrgW8ZY7IzxO8AbgaWZn5dnbl+E9BtrV0C/Dvwtcl9KiIiIiIi+ZnUAG6MaQTeBXx30OX3APdlPr8PeO+g6w9aa6PW2r3AbmClMWYuUG2tfdpaa4H7T7hN9r4eAd6c3R0XERERESlFk70D/h/A/wFSg67NttYeBsh8zJ5OnA+0Dvq6tsy1+ZnPT7w+5DbW2gTQC8yY0GcgIiIiIjKBJi2AG2PeDbRba7flepNTXLMjXB/pNieu5WZjzFZjzNaOjo4clyMiIiIiMvEmcwf8MuAaY8w+4EHgKmPM94CjmbISMh/bM1/fBjQNun0jcChzvfEU14fcxhjjAmqArhMXYq2901q73Fq7fNasWRPz7ERERERExmHSAri19i+stY3W2oWkD1eut9Z+BHgUuCHzZTcAP8t8/iiwJtPZZBHpw5abM2UqQWPMJZn67utPuE32vq7NPMZJO+AiIiIiIqWiGIN4vgo8bIy5CTgAfADAWrvDGPMw8DKQAD5rrU1mbvNp4F7ADzyW+QVwF/CAMWY36Z3vNYV6EiIiIiIi42Gm24bx8uXL7datW4u9DBEREREpc8aYbdba5Sde1yRMEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgBXARERERkQJSABcRERERKSAFcBERERGRAlIAFxEREREpIAVwEREREZECUgAXERERESkgV7EXICIj27CznXUbW2jtDtFUF2DtqmZWL2so9rJERERknLQDLlLCNuxs59ZHd9AejFDrd9MejHDrozvYsLO92EsTERGRcdIOuEw67eCO37qNLbidhoAn/U814HERiiVYt7FF/w1FRESmKO2Ay6TSDm5+WrtD+N3OIdf8bidt3aEirUhERETypQAuk2rwDq4x6Y9up2HdxpZiL21KaKoLEI4nh1wLx5M01gWKtCIRERHJlwK4TCrt4OZn7apm4klLKJbA2vTHeNKydlVzsZcmIiIi46QALpNKO7j5Wb2sgduuOZuGKh+94TgNVT5uu+Zs1X+LiIhMYTqEKZNq7apmbn10B6FYAr/bSTie1A7uGK1e1qDALSIiUka0Ay6TSju4IiIiIkNpB1wmnXZwRURERF6nHXARERERkQLSDvgUoEE2IiIiIuVDO+AlToNsRERERMqLAniJ0yAbERERkfKiAF7iNMhGREREpLwogJc4DbIRERERKS8K4CWuFEaRb9jZznV3buLyr63nujs3qf5cREREJA8K4CWu2INsdAhUREREZGKpDeEUUMxBNoMPgQIEPC5CsQTrNraoFaKIiIjIOGgHXEakQ6AiIiIiE0sBXEakQ6AiIiIiE0sBXEZUCodARURERMqJasCngXxG2a9e1sBtpGvB27pDNI7x9iIiIiIylAJ4mct2MXE7zZAuJrfBmEK4AreIiIjIxFAJSpnTKHsRERGR0qIAXubUxURERESktCiAlzl1MREREREpLQrgZU5dTERERERKiwJ4mSv2KHsRERERGUpdUKYBdTERERERKR3aARcRERERKSAFcBERERGRAlIJyjSQzyRMEREREZlY2gEvc9lJmO3ByJBJmBt2thd7aSIiIiLTknbAy9zgSZgAAY+LUCzBuo0t2gWfIvQOhoiISHnRDniZ0yTMqU3vYIiIiJQfBfAyp0mYU9vgdzCMSX90Ow3rNrYUe2kiIiIyTgrgZU6TMKc2vYMhIiJSfhTAy5wmYU5tegdDRESk/OgQ5jSgSZhT19pVzdz66A5CsQR+t5NwPKl3MERERKY47YCLlDC9gyEiIlJ+tAMuUuL0DoaIiEh50Q64iIiIiEgBKYCLiIiIiBSQAriIiIiISAEpgIuIiIiIFJACuIiIiIhIASmAi4iIiIgUkAK4iIiIiEgBKYCLiIiIiBSQAriIiIiISAFpEqZIiduws511G1to7Q7RVBdg7apmTcYUERGZwrQDLlLCNuxs59ZHd9AejFDrd9MejHDrozvYsLO92EsTERGRcVIAFylh6za24HYaAh4XxqQ/up2GdRtbir00ERERGSeVoMioVAJRPK3dIWr97iHX/G4nbd2hIq1IRERE8qUdcBmRSiCKq6kuQDieHHItHE/SWBco0opEREQkXwrgMiKVQBTX2lXNxJOWUCyBtemP8aRl7armYi9NRERExkkBXEbU2h3C73YOuaYSiMJZvayB2645m4YqH73hOA1VPm675myVAImIiExhqgGXETXVBWgPRgh4Xv+rohKIwlq9rEGBW0REpIxoB1xGpBIIERERkYmlAC4jUgmEiIiIyMRSCYqMSiUQxaU2kCIiIuVFO+AiJUxtIEVERMqPArhICVMbSBERkfKjAC5SwtQGUkREpPwogIuUME3CFBERKT8K4CIlTG0gRUREyo8CuEgJUxtIERGR8qM2hCIlTm0gRUREyot2wEVERERECkg74FL2NMhGRERESol2wKWsaZCNiIiIlBoFcClrGmQjIiIipUYBXMqaBtmIiIhIqVEAl7KmQTYiIiJSahTApaxp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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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 30, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(0.0, 47414.1)" | |
| ] | |
| }, | |
| "execution_count": 30, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 864x720 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 31, | |
| "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": 31, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "df[['peak-rpm','highway-mpg','price']].corr()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "The variable \"highway-mpg\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"peak-rpm\" which is approximate -0.101616. You can verify it using the following command:\n", | |
| "df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n", | |
| "\n", | |
| "-->\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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 32, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAukAAAJNCAYAAACMSevzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABR6UlEQVR4nO3df3xcd33n+/dnfsjS2LKtJJ4k2EoTgYOIu5QWNSW3XlULaQntrqG9YTfeu4V7F1a6QG8oW9iS7uIG3wd3cbsUktKC3MAG2G0oeMtFdAk/gqurZrEDdkIIIkrilQNSiDO2I9uSR/LMnPneP+ZIlhzJHvlIc86ZeT0fD2U0X+lovjoex+/5zud8vuacEwAAAIDoSIQ9AQAAAAALEdIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIiYVNgTiJqrrrrKXX/99WFPAwAAAHXu8OHDJ5xzmxb7GiH9Atdff70OHToU9jQAAABQ58zsJ0t9jXIXAAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABGTCnsCQNgGR3LqHxrV2ERe7W0Z9XV3qKczG/a0AABAA2MlHQ1tcCSnXQPDyk3OaGNLWrnJGe0aGNbgSC7sqQEAgAZGSEdD6x8aVTppyjSlZFa5TSdN/UOjYU8NAAA0MEI6GtrYRF4t6eSCsZZ0UuMT+ZBmBAAAQEhHg2tvy2i66C0Ymy562tKWCWlGAAAAhHQ0uL7uDhU9p3yhJOcqt0XPqa+7I+ypAQCABkZIR0Pr6cxq945tyrY26/R0UdnWZu3esY3uLgAAIFS0YETD6+nMEsoBAECksJIOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiKEFYwQMjuTUPzSqsYm82tsy6uvuoCUgAABAAwttJd3M2s3s783sSTMbNrP3+uNXmNm3zewZ/7Zt3jF3mdkRM3vKzN44b/y1ZvaE/7V7zcz88TVm9jf++CNmdn3Nf9FLGBzJadfAsHKTM9rYklZucka7BoY1OJILe2oAAAAISZjlLiVJf+Cce5Wk10l6j5ndJOmDkr7jnNsq6Tv+fflfu0PSNkm3SfpLM0v6P+tTknolbfU/bvPH3yFpwjn3Ckkfl7SnFr/YcvQPjSqdNGWaUjKr3KaTpv6h0bCnBgAAgJCEFtKdc8875x71P5+U9KSkzZLeLOlz/rd9TtJb/M/fLOmLzrlzzrmjko5IutnMrpW03jl3wDnnJH3+gmNmf9Y+SW+YXWWPirGJvFrSyQVjLemkxifyIc0IAAAAYYvEhaN+GcovSnpE0tXOueelSpCXNFucvVnS2LzDxv2xzf7nF44vOMY5V5J0WtKVq/JLXKb2toymi96Csemipy1tmZBmBAAAgLCFHtLNbJ2k/ybp951zZy72rYuMuYuMX+yYC+fQa2aHzOzQ8ePHLzXlFdXX3aGi55QvlORc5bboOfV1d9R0HgAAAIiOUEO6maVVCej/1Tn3t/7wC34Ji/zb2SsoxyW1zzt8i6Sf+eNbFhlfcIyZpSRtkPTihfNwzu11znU557o2bdq0Er9a1Xo6s9q9Y5uyrc06PV1UtrVZu3dso7sLAABAAwutBaNfG/4ZSU865/5s3pcGJL1d0kf926/OG/9rM/szSS9T5QLR7znnPDObNLPXqVIu8zZJf37Bzzog6XZJ+/269Ujp6cwSygEAADAnzD7pvyrpdyU9YWY/8Mf+SJVw/iUze4ekn0p6qyQ554bN7EuSfqxKZ5j3OOdmi7nfJel+SS2SHvQ/pMqLgC+Y2RFVVtDvWOXfCQAAAAjMIriwHKquri536NChsKcBAACAOmdmh51zXYt9LfQLRwEAAAAsREgHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiwuyTDmAFDI7k1D80qrGJvNrbMurr7mBzLAAAYo6VdCDGBkdy2jUwrNzkjDa2pJWbnNGugWENjuTCnhoAAAiAkA7EWP/QqNJJU6YpJbPKbTpp6h8aDXtqAAAgAEI6EGNjE3m1pJMLxlrSSY1P5EOaEQAAWAmEdCDG2tsymi56C8ami562tGVCmhEAAFgJhHQgxvq6O1T0nPKFkpyr3BY9p77ujrCnBgAAAiCkAzHW05nV7h3blG1t1unporKtzdq9YxvdXQAAiDlaMAIx19OZJZQDAFBnWEkHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAERMKuwJAAhmcCSn/qFRjU3k1d6WUV93h3o6s2FPCwAABMBKOhBjgyM57RoYVm5yRhtb0spNzmjXwLAGR3JhTw0AAARASAdirH9oVOmkKdOUklnlNp009Q+Nhj01AAAQACEdiLGxibxa0skFYy3ppMYn8iHNCAAArARCOhBj7W0ZTRe9BWPTRU9b2jIhzQgAAKwEQjoQY33dHSp6TvlCSc5VboueU193R9hTAwAAARDSgRjr6cxq945tyrY26/R0UdnWZu3esY3uLgAAxBwtGIGY6+nMEsoBAKgzhPQIoM81AAAA5qPcJWT0uQYAAMCFCOkho881AAAALkRIDxl9rgEAAHAhQnrI6HMNAACACxHSQ0afawAAAFyIkB4y+lwDAADgQrRgjAD6XAMAAGA+VtIBAACAiCGkAwAAABFDSAcAAAAiJtSQbmafNbOcmf1o3tjdZvacmf3A//jNeV+7y8yOmNlTZvbGeeOvNbMn/K/da2bmj68xs7/xxx8xs+tr+gsCAAAAlyHslfT7Jd22yPjHnXOv8T++LklmdpOkOyRt84/5SzOb3QXoU5J6JW31P2Z/5jskTTjnXiHp45L2rNYvAgAAAKyUULu7OOeGlrG6/WZJX3TOnZN01MyOSLrZzJ6VtN45d0CSzOzzkt4i6UH/mLv94/dJ+qSZmXPOrdgvgcAGR3LqHxrV2ERe7W0Z9XV30O0GAAA0tLBX0pfye2b2Q78cps0f2yxpbN73jPtjm/3PLxxfcIxzriTptKQrV3PiWJ7BkZx2DQwrNzmjjS1p5SZntGtgWIMjubCnBgAAEJoohvRPSXq5pNdIel7Sx/xxW+R73UXGL3bMAmbWa2aHzOzQ8ePHlz1hXL7+oVGlk6ZMU0pmldt00tQ/NBr21AAAAEITuZDunHvBOec558qS/krSzf6XxiW1z/vWLZJ+5o9vWWR8wTFmlpK0QdKLizzmXudcl3Oua9OmTSv56+ASxibyakknF4y1pJMan8iHNCMAAIDwRS6km9m18+7+tqTZzi8Dku7wO7bcoMoFot9zzj0vadLMXud3dXmbpK/OO+bt/ue3S9pPPXq0tLdlNF30FoxNFz1tacuENKP4GRzJaefeg9q+Z7927j1IqRAAAHUg7BaMD0g6IOmVZjZuZu+Q9Cd+O8UfSvonkt4nSc65YUlfkvRjSd+Q9B7n3Gy6e5ek+yQdkfQ/VbloVJI+I+lK/yLTfyvpg7X5zVCtvu4OFT2nfKEk5yq3Rc+pr7sj7KnFAjX9AADUJ2NheaGuri536NChsKfRUGa7u4xP5LWF7i7LsnPvQeUmZ5RpOt+oKV8oKdvarAd6XxfizAAAwKWY2WHnXNdiXwu1BSMgST2dWUL5ZRqbyGtjS3rBGDX9AADEX+Rq0gFUj5p+AADqEyEdiDFq+gEAqE+EdCDGejqz2r1jm7KtzTo9XVS2tVm7d2yjfAgAgJijJh2IOWr6AQCoP6ykAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiGEzIyDmBkdy6h8a1dhEXu1tGfV1d7C5EQAAMcdKOhBjgyM57RoYVm5yRhtb0spNzmjXwLAGR3JhTw0AAARASAdirH9oVOmkKdOUklnlNp009Q+Nhj01AAAQACEdiLGxibxa0skFYy3ppMYn8iHNCAAArARCOhBj7W0ZTRe9BWPTRU9b2jIhzQgAAKwEQjoQY33dHSp6TvlCSc5VboueU193R9hTAwAAARDSgRjr6cxq945tyrY26/R0UdnWZu3esY3uLgAAxBwtGIGY6+nMEsoBAKgzrKQDAAAAEUNIBwAAACKGkA4AAABEDCEdAAAAiBhCOgAAABAxhHQAAAAgYgjpAAAAQMQQ0gEAAICIYTMjBDY4klP/0KjGJvJqb8uor7uDzXUAAAACYCUdgQyO5LRrYFi5yRltbEkrNzmjXQPDGhzJhT01AACA2CKkI5D+oVGlk6ZMU0pmldt00tQ/NBr21AAAAGKLkI5AxibyakknF4y1pJMan8iHNCMAAID4I6QjkPa2jKaL3oKx6aKnLW2ZkGYEAAAQf4R0BNLX3aGi55QvlORc5bboOfV1d4Q9NQAAgIsaHMlp596D2r5nv3buPRipa+oI6QikpzOr3Tu2KdvarNPTRWVbm7V7xza6uwAAgEiLevMLWjAisJ7OLKEcAADEyvzmF5KUaUopXyipf2g0ErmGlXQAAAA0nKg3vyCkAwAAoOFEvfkFIR0AAAANJ+rNLwjpAAAAaDhRb37BhaMAAABoSFFufkFIBwDgMg2O5NQ/NKqxibza2zLq6+6I7D/4AOKFchcAAC5D1HssA4g3QjoAAJdhfo9ls8ptOmnqHxoNe2oA6gAhHQCAyxD1HssA4o2QDgDAZYh6j2UA8UZIBwDgMkS9xzKAeCOkAwBwGaLeYxlAvNGCsQ7QAgwAwhHlHssA4o2V9JijBRgAAED9YSU95ua3AJOkTFNK+UJJ/UOjVa/usBIPAAAQLaykx1zQFmCsxAMAAEQPIT3mgrYAYzMOAACA6CGkx1zQFmBsxgEAABA9hPSYC9oCjM04AAAAoocLR+tAkBZgfd0d2jUwrHyhpJZ0UtNFj804AAAAQsZKeoNjMw4AAIDoYSUdbMYBAAAQMaykAwAAABFDSAcAAAAihpAOAAAARAwhHQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDE0CcdGhzJqX9oVGMTebW3ZdTX3UHfdAAAgBCxkt7gBkdy2jUwrNzkjDa2pJWbnNGugWENjuTCnhoAAEDDYiW9wfUPjSqdNGWaKk+FTFNK+UJJ/UOjDbOazjsJAAAgagjpDW5sIq+NLekFYy3ppMYn8iHNqLZm30lIJ23BOwm7pdgEdV5kAABQfyh3aXDtbRlNF70FY9NFT1vaMiHNqLbmv5NgVrlNJ039Q6NhT60qgyM5vX/f43psbEIvnJnRY2MTev++xylXAgA0hMGRnHbuPajte/Zr596DdfXvHyG9wfV1d6joOeULJTlXuS16Tn3dHWFPrSbGJvJqSScXjMXpnYSPPvikTuWLcmUpaSZXlk7li/rog0+GPTUAAFZVvV9XR0hvcD2dWe3esU3Z1madni4q29qs3Tu2NUy5RNzfSTh6Mq+ESYmEycyUSJgSVhkHAKCexf3d8EuhJh3q6cw2TCi/UF93h3YNDCtfKKklndR00WuodxIAAIirer+uLtSVdDP7rJnlzOxH88auMLNvm9kz/m3bvK/dZWZHzOwpM3vjvPHXmtkT/tfuNTPzx9eY2d/444+Y2fU1/QUReXF/J6HjqrUqO6nsnJycys6p7CrjAADUs7i/G34pYZe73C/ptgvGPijpO865rZK+49+Xmd0k6Q5J2/xj/tLMZouJPyWpV9JW/2P2Z75D0oRz7hWSPi5pz6r9Joitns6sHuh9nf7hD1+vB3pfF5uALkl/eFun2jJpmaSSV5ZJasuk9Ye3dYY9NQAAVlW9X1cXakh3zg1JevGC4TdL+pz/+eckvWXe+Bedc+ecc0clHZF0s5ldK2m9c+6Ac85J+vwFx8z+rH2S3jC7yg7Ug57OrP709l/QL17Xpms3tOgXr2vTn97+C7F6oQEAwOWI+7vhlxLFmvSrnXPPS5Jz7nkzmz3TmyUdnPd94/5Y0f/8wvHZY8b8n1Uys9OSrpR0YvWmD9RWI19TAABobPX8b2DY5S7LsdgKuLvI+MWOWfiDzXrN7JCZHTp+/HiAKQIAAADBRXEl/QUzu9ZfRb9W0myzy3FJ7fO+b4ukn/njWxYZn3/MuJmlJG3QS8tr5JzbK2mvJHV1db0kxAMAANQjdq2OriiupA9Ierv/+dslfXXe+B1+x5YbVLlA9Ht+acykmb3Orzd/2wXHzP6s2yXt9+vWAQAAGlq9bwYUd2G3YHxA0gFJrzSzcTN7h6SPSvp1M3tG0q/79+WcG5b0JUk/lvQNSe9xzs323XmXpPtUuZj0f0p60B//jKQrzeyIpH8rv1MMAABAo6v3zYDiLtRyF+fcziW+9IYlvv8jkj6yyPghST+/yPiMpLcGmSMAAEA9qvfNgOIuiuUuAAAAWGX1vhlQ3BHSEdjgSE479x7U9j37tXPvQWrZAACIgXrfDCjuCOkIhItOAACIp3rfDCjuotiCETEy/6ITSco0pZQvlNQ/NMpfcgAAIq6eNwOKO1bSEcjYRF4t6eSCMS46AQAACIaQjkC46AQAAGDlEdIRCBedAAAArDxCOgLhohMAAICVx4WjCIyLTgAAAFYWK+kAAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxKTCngAAAEAc3fvQ07rv4aM6W/C0timpd26/QXfeemPY00KdIKQDAAAs070PPa179h9RwqRUQpouerpn/xFJIqhjRVDuAgAAsEz3PXzUD+gJJSzh31bGgZVASAcAAFimswVPCVs4lrDKOLASCOkAAADLtLYpqbJbOFZ2lXFgJVCTDsTc4EhO/UOjGpvIq70to77uDvV0ZsOeFgDUtXduv0H37D+iUrmshFUCetlVxoGVwEo6EGODIzntGhhWbnJGG1vSyk3OaNfAsAZHcmFPDQDq2p233qj3vv4VakknVSpLLemk3vv6V3DRKFYMK+lAjPUPjSqdNGWaKn+VM00p5Qsl9Q+NspoOAKvszltvJJRj1bCSDsTY2EReLemF9Y8t6aTGJ/IhzQgAAKwEQjoQY+1tGU0XF3YSmC562tKWCWlGAABgJRDSgRjr6+5Q0XPKF0pyrnJb9Jz6ujvCnhoARN7gSE479x7U9j37tXPvQa7nQaQQ0oEY6+nMaveObcq2Nuv0dFHZ1mbt3rGNenQAuAQuvEfUceEoEHM9nVlCOQAsExfeI+oI6QAAoOGMTeSVNGn0+JQKXllNyYSuWtfEhfeIDMpdAABAw2ldk9Jzp2ZUKjslE6ZS2em5UzNat4b1S0QDz0QAANBwnHP+J1pwOzcOhIyVdAAA0HCmCp42b2xWKmnynFMqadq8sVlnC96lDwZqgJV0AADQcNrbMspNzqhj07q5sXyhpGxrc4izAs5jJR0AgAbVyH3C2WcCUUdIBwCgATV6n3D2mUDUUe4CAEADok84+0wg2gjpQMwNjuTUPzSqsYm82tsy6uvu4B8dAJc0NpHXxpb0grGWdJI+4UBEVB3SzeznJG11zj1kZi2SUs65ydWbGoBLmX27Op20BW9X75YI6g2CF2nBNPL5m71wcnYlXZKmi562tGVCnBWAWVXVpJvZv5G0T1K/P7RF0v+7SnMCUKX5b1ebVW7TSVP/0GjYU0MNNHpNcVCNfv64cBKItmovHH2PpF+VdEaSnHPPSGqMpQYgwsYm8mpJJxeM8XZ14+BFWjCNfv64cBKItmrLXc455wpmJkkys5TO79EFICS8Xd3YqCkOhvPHhZNAlFW7kv7/mdkfSWoxs1+X9GVJX1u9aQGoBm9XN7b2toymiwt3R+RFWvU4fwCirNqQ/kFJxyU9IalP0tcl/YfVmhSA6vB2dWPjRVownD8AUWbOXbpqxczWSppxznn+/aSkNc65untPsKuryx06dCjsaQBAVWa7k4xP5LWlwbqTrATOH4Awmdlh51zXol+rMqQflHSrc27Kv79O0recc//Lis40AgjpwPI0cgs7AACCuFhIr7bcpXk2oEuS/zlFe0CDa/QWdgAArJZqQ/pZM/ul2Ttm9lpJ06szJQBx0egt7AAAWC3VtmD8fUlfNrOf+fevlfQvVmVGAGKDFnYAAKyOqkK6c+77ZtYp6ZWSTNKIc664qjMDEHn0aQcAYHVctNzFzF7v3/6OpH8m6UZJWyX9M38MQAOjhR0AAKvjUivpvyZpvyoB/UJO0t+u+IwAxEZPZ1a7JVrYAQCwwi4a0p1zf2xmCUkPOue+VKM5AYihSzdzBQAA1bpkdxfnXFnS79VgLgBihhaMAACsjmq7u3zbzN4v6W8knZ0ddM69uCqzAhAL81swSlKmKaV8oaT+odGqS17YDAkAgJeqNqT/a1XezX73BeNcHQY0sKAtGGdX4tNJW7ASv1siqFeJFzkAUJ+qDek3qRLQt6sS1v9B0qdXa1IA4iFoC8b+oVEVPU8np0oqeGU1JRNa35Ja1kp8I+NFDoLiRR4QXdXuOPo5Sa+SdK+kP/c//9xqTQpAPARtwfhMblInJgsqlZ2SCVOp7HRisqBncpOrPPP6wI6vCIJrSoBoq3Yl/ZXOuV+Yd//vzezx1ZgQgPgI2oKxUCpLJiXMJElmUtlcZRyXxI6vCGIlrikBsHqqDemPmdnrnHMHJcnMfkXS/1i9aQGIi57O7GX/g55OmqaLUrnsZCY5v49jU9JWcIb1ix1fEQQv8oBoq7bc5VckfdfMnjWzZyUdkPRrZvaEmf1w1WYHoK7dePV6Xbm2SamkyXNOqaTpyrVN2nr1+rCnFgvs+Iog2tsymi56C8Z4kQdER7Ur6bet6iwANKS+7g7tGhjWNRtSakknNV30CJnLwI6vCGL271++UOLvHxBB5hz7BM7X1dXlDh06FPY0gIYx212CkAnUHn//gHCZ2WHnXNeiXyOkL0RIBwAAQC1cLKRXW5Nec379+xNm9gMzO+SPXWFm3zazZ/zbtnnff5eZHTGzp8zsjfPGX+v/nCNmdq+ZcUUaAAAAIi2yId33T5xzr5n3CuODkr7jnNsq6Tv+fZnZTZLukLRNlfr5vzSzpH/MpyT1Strqf1BfDwAAgEiLeki/0Jt1fhOlz0l6y7zxLzrnzjnnjko6IulmM7tW0nrn3AFXqev5/LxjAAAAgEiKckh3kr5lZofNrNcfu9o597wk+bezV7dsljQ279hxf2yz//mF4wAAAEBkVduCMQy/6pz7mZllJX3bzEYu8r2L1Zm7i4wvPLjyIqBXkq677rrLmSsAAACwYiK7ku6c+5l/m5P0FUk3S3rBL2GRf5vzv31cUvu8w7dI+pk/vmWR8Qsfa69zrss517Vp06aV/lUAAACAZYlkSDeztWbWOvu5pN+Q9CNJA5Le7n/b2yV91f98QNIdZrbGzG5Q5QLR7/klMZNm9jq/q8vb5h0D1IXBkZx27j2o7Xv2a+fegxocyV36IAAAEGlRLXe5WtJX/G6JKUl/7Zz7hpl9X9KXzOwdkn4q6a2S5JwbNrMvSfqxpJKk9zjnZvc6fpek+yW1SHrQ/wDqwuBITrsGhpVOmja2pJWbnNGugWHtltiQBACAGGMzowuwmRHiZOfeg8pNzijTdP71dr5QUra1WQ/0vi7EmQEAgEuJ5WZGAC5tbCKvlnRywVhLOqnxiXxIMwIAACuBkA7EWHtbRtNFb8HYdNHTlrZMSDMCAAArgZAOxFhfd4eKnlO+UJJzldui59TX3RH21AAAQACEdCDGejqz2r1jm7KtzTo9XVS2tVm7d2zjolEAAGIuqt1dAFSppzNLKAcAoM6wkg4AAABEDCEdAAAAiBhCOgAAABAxhHQAAAAgYgjpAAAAQMQQ0gEAAICIoQUjgIY2OJJT/9Coxibyam/LqK+7g5aWAIDQsZIOoGENjuS0a2BYuckZbWxJKzc5o10DwxocyYU9NQBAgyOkA2hY/UOjSidNmaaUzCq36aSpf2g07KkBABocIR1AwxqbyKslnVww1pJOanwiH9KMAACoIKQDaFjtbRlNF70FY9NFT1vaMiHNCACACkI6gIbV192houeUL5TkXOW26Dn1dXeEPTUAQIMjpANoWD2dWe3esU3Z1madni4q29qs3Tu20d0FABA6WjACaGg9nVlCOXCZaGEKrB5W0gEAwLLRwhRYXYR0AACwbLQwBVYXIR0AACwbLUyB1UVNOgAAWLb2toyePTmlM9MlFbyympIJrW9J6for14U9NaAusJIOAACW7ZaOK5SbLKjglZUwqeCVlZss6JaOK8KeGlAXCOkAAGDZDoy+qE3rmtSUTKjspKZkQpvWNenA6IthTw2oC5S7AACAZRubyOuqdWu0qbV5bsw5R006sEJYSQcAAMvW3pbRdNFbMDZd9LSlLRPSjID6QkgHAADL1tfdoaLnlC+U5Fzltug59XV3hD01oC4Q0gEAwLL1dGa1e8c2ZVubdXq6qGxrs3bv2MaOo8AKoSYdAABclp7OLKEcWCWspAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxNAnHUCsDY7k1D80qrGJvNrbMurr7qBvMwAg9lhJBxBbgyM57RoYVm5yRhtb0spNzmjXwLAGR3JhTw0AgEAI6QBiq39oVOmkKdOUklnlNp009Q+Nhj01AAACIaQDiK2xibxa0skFYy3ppMYn8iHNCACAlUFIBxBb7W0ZTRe9BWPTRU9b2jIhzQgAgJVBSAcQyOBITjv3HtT2Pfu1c+/BmtaD93V3qOg55QslOVe5LXpOfd0dNZsDAACrge4uQECN3F1k9sLNdNIWXLi5W6rJOejpzGq3KrXp4xN5bWmw8w8AqF+EdIQuziE37JAatvkXbkpSpimlfKGk/qHRmv3+PZ3ZhjjXS4nz3x8AwNIod0Go4t5Cr9G7i0Thws0wy23CFve/PwCApRHSEaq4h9wohNQwhX3hZqOH1Lj//QEALI2QjlDFPeSGHVLDFvaFm40eUuP+9wcAsDRCOkIV95AbdkgNW09nVrt3bFO2tVmnp4vKtjZr945tNauJbvSQGve/PwCApXHhKELV192hXQPDyhdKakknNV30YhVy6S4S7oWb7W0Z5SZn5i5clRorpMb97w8AYGmEdISqHkJu3LuLxLk7SKOH1Hr4+wMAWJw558KeQ6R0dXW5Q4cOhT0NoCbmt5CcH3JrWbIS1OyLDEIqsHxxfpEO1AMzO+yc61rsa6ykAw0sCn3Og4aEuL+TAYSl0fd5AKKOC0eBBhb2hZeN3kIRCFOjd0cCoo6QDjSwsLuDEBKA8IT9Ih3AxRHSgQYWdgtJQgIQnrBfpAO4OEI6EHODIznt3HtQ2/fs1869B5dVKhJ2n3NCAhCesF+kA7g4urtcgO4uiJO4d2cZHMnpA/se1+RMSaVyWalEQq3NKf3p7b8Qi/kDcUd3JCBcdHcB6lT/0KiKnqeTUyUVvLKakgmtb0ktqztL2C3YnCSZZGaS+fcB1ATdkYDoIqQDMfZMblKn80UlEqZkwlQqO52YLKjoTVZ1fNgt2PqHRrWhJa1rN7TMjdW6BSQAAFFETToQY4VSWTIpYSaTKeGvRhdK5aqOD7u7CheOAgCwOEI6EGPppEmSymUn55zK5UqxSJM/filhh2QuHAUAYHGEdCDGbrx6va5c26RU0uQ5p1TSdOXaJm29en1Vx4cdkukuAQRz70NP69V3f1Mv/6Ov69V3f1P3PvR02FMCsEII6UCM9XV3qCmV1DUbmvXKq1t1zYZmNaWSVYfcsENy2C0ggTi796Gndc/+I5ouekolKi+w79l/hKAO1AlaMF6AFoyIm6At1GjBBsTTq+/+ph/Qz6+3lcpltaST+uHdbwxxZgCqRQtGoI4FbaFGCzYgns4WPCXkdK7kyTnJTEpaZRxA/BHSAYQq7D7tQFytSSaUL3qavUzcOanopEyaSlagHhDSgZiLc8gNu087EGdXrE0rf8p7yQZgV6xNhzIfACuLl9tAjM2G3NzkzIKQOziSC3tqVQm7TzsQa2batC6thL+UnjBp07p0ZfdeALHHSjoQY/NDriRlmlKx2rFzbCKvjS0LV/3YzAi1dO9DT+u+h4/qbMHT2qak3rn9Bt15641hT6sq7W0Z5SZndM2G8y1T84WSsq3NIc4KwEphJR2IsbA3Iwoq7D7taGxxb2EYdgtVAKuLkA7EWBRC7uBITjv3HtT2Pfu1c+/BZZXaEDIQpvsePqqESalEQglL+LeV8ThgnwGgvlHuAsRYX3eHdg0MK18oqSWd1HTRq2nIDXrhZ09nVrsl+rTjsgW5cPpsobKCPl8iZi0MaaEK1C9COhBQmN1Vwg65K1ETH3bIiHN3nEYX9EXi2qakzp4ryel8n3GTtHYN/zQCCB//JwICiEILwTBD7kpc+BlmSI7Cnx8uX9AXiW/o3KSv/OD5ufuzG3C/oXPTqswXAJajIWrSzew2M3vKzI6Y2QfDng/qR6O3EAxaEx92C8lG//OLu6AXTh87U1BbJrWghWFbJqVjZworPVUAWLa6D+lmlpT0F5LeJOkmSTvN7KZwZ4V6EffuKkEFvfAz7JDc6H9+cdfeltHJs+c0enxKI8fOaPT4lE6ePVf1i8Sxibw2b8xo28s26B9t3qBtL9ugzRsz/PkDiIS6D+mSbpZ0xDk36pwrSPqipDeHPCfUiSh0VwlT0O4SYYfkRv/zi7tbOq5QbrKggldWwqSCV1ZusqBbOq6o6nj+/AFEWSOE9M2SxubdH/fHFvWTn/xEX/va1yRJpVJJvb29+vrXvy5JmpmZUW9vr771rW9JkqamptTb26v9+/dLkk6dOqXe3l4NDQ1Jkk6cOKHe3l5997vflSQdO3ZMvb29euSRRyoTGR9Xb2+vDh8+LEl69tln1dvbq8cff1ySdOTIEfX29mp4eFiS9NRTT6m3t1dPPfWUJGl4eFi9vb06cuSIJOnxxx9Xb2+vnn32WUnS4cOH1dvbq/HxcUnSI488ot7eXh07dkyS9N3vfle9vb06ceKEJGloaEi9vb06deqUJGn//v3q7e3V1NSUJOlb3/qWent7NTMzI0n6+te/rt7eXpVKJUnS1772NfX29s6dy6985St697vfPXf/y1/+su688865+w888IDe9773zd3/whe+oA984ANz9++//37dddddc/fvu+8+fehDH5q7/+lPf1of/vCH5+5/8pOf1Ec+8pG5+5/4xCe0Z8+eufsf+9jH9LGPfWzu/p49e/SJT3xi7v5HPvIRffKTn5y7/+EPf1if/vSn5+5/6EMf0n333Td3/6677tLWU4fmVpJf/PvPauLxh+ZWkt/3vvfpgQcemPv+O++8U1/+8pfn7r/73e/WV77ylbn7vb29sXzu9XRm9cFfadGr/ucX9R9/4xr1dGarfu5du6ak6aKnmbEf6eQ3/lzlmSlNFz1tPPV0TZ57s+8ETDz+kF78+8/OvROw9dShyD/37r///rn7H/jAB/SFL3xh7n6jPPcOjL6oq849r3Xf/6w0dUJNyYSumh7Xl+/ZVdX/9/q6OzQ9Nqzcg/fKm55UvlDS9E9+KG+on//v+Xju8W/uLJ57q/fcW0ojhPTF9kd2C77BrNfMDpnZoWKxWKNpoR50ZNfNrSQXvbLWrUnVvE/x4EhOvZ8/pMfGTulPv/lUzeq5V8Lvvu46FT2ncyVPTlLebyH5GzddXZPHn30nYN2alIpeee6dgI7supo8PoIZm8grnVz4v/h00nSuVK7q+J7OrP63m69TUzKhMzOVnTp3/nK7NmbSlz4YAFaZOecu/V0xZma3SLrbOfdG//5dkuSc+4+LfX9XV5c7dOhQDWcIXL753Unm90mP04Yms91d6JOO5XrTJ4b0TG5KyYTJrNKdxSs7bc2u04O/3x329ADgkszssHOua7GvNUILxu9L2mpmN0h6TtIdkv5luFMCVsZK9CkPW9h90hFfc4tMs2tN7oJxAIixug/pzrmSmf2epG9KSkr6rHNuOORpAStiJfqUh43NhHC5pgqeNm9s1ompysWjTcmErlm3Zlk7hvL8AxBVdR/SJck593VJXw97HsBKa2/LKDc5M7eSLsWrOwWbCSGI2ed/x6bz1xDkC5Xa8moMjuT0/n2Pa+pcSV7Z6cTUOb1/3+P6T7f/As8/AKFrhAtHgboVtE952MLuk4546+vu0Onpop7JTWrk2Bk9k5vU6eli1c//jz74pE5MFTRTLKvoOc0UyzoxVdBHH3xylWcOAJfWECvpQJQFebu9pzOr3VKgCy/DfLu/Hsp1EC6TJOfXoTtbtJ3XUkZemFrWOADUEiEdCNFKlHsEufAy7HKTuJfrREEj11T3D41qfUta12xomRuL24XTALAUyl2AEK1EucfgSE479x7U9j37tXPvwWX1SQ+73CTu5TpSsPO/Eo+9a2BYucmZBS+y4tQrP4ixibxKXlmjx6c0cuyMRo9PqeSVeScGQF0gpAMhGpvIqyWdXDC2nHKPoCEt6OMHNbuZULa1Waeni3ObCcVlFTTskBz2i6ywta5JaXxiWvmip5LnlC96Gp+Y1ro1vEkMIP74PxkQoqDlHv1DoyqUPJ2cKs21oGttTlX9dn8Uyk3i3Cc97D71jV7TPzldkDe/JbqTPH+8Gq1rEpo899LdSVvXsH4FIHz8nwgIUdByj6dfOKOTZwsqeU5JM5U8p5NnC3rmhTM1efxGtxLvRAQpl2lvy2i6uLAneCPV9B8/W3zJhaLmj1djY2bNssYBoJYI6UCIgpZ7FP1lxETCZGZKJCqRpeBVt+Ni3MtNwhY0JA+O5PSBfY/rsZ9O6NjpaT320wl9YN/jVQf1lXiRFWZNfVBeuawLn+nOH6/GsdMzyxoHgFqi3AUIWZByj6ZUQtMFT2XnZCY5J8lVxmvx+I2ur7tDuwaGlS+U1JJOarroLSsk7/nGiCbyRSUTplQyIeekiXxRe74xUtWfSdAWnGF395mdw+V2p0kmEiotEsiTieqe/yW3+IvZpcYBoJZYSQdibGu2VVe1NimVMHllp1TCdFVrk7ZmW8OeWkMI+k7E6ImzSpiUMJPJlDBTwirjy3U5sTLsC0+DXnhbLi/+Wy81/hJLfdsyTmac34kAEG2spAMxNruSe82G1GWt5CK4MN+JCLoSHvaFp0EvvE0kTFZ2CzK1+eNVMS0eyKs8PArvRACoX6ykAzFGTXm83XBlRmVXWfl1zqlcdiq7yng1gq6Eh33hadALb9c1JRatSV/XVN0/bUtVtVRb7RL2OxEA6hsr6UDMUVMeXx9806v0fz3wqM4WPJWdlDBpbVNSH3zTq6o6PuhKeF93h96/73E9d2paXtkpmTCtW5PSh37rpmX/LpcjaAvQqcLiF4guNb7Swn4nAkB9YyUdAELUnE6qKZlQKiE1JRNqvmBl+WJWYiXcJMlJzjnJVV3psSKCdqc5V1o8jC81fqGlqmKqrZYJ+50IAPWNkA4AIekfGtX6lrS2Xt2qV127QVuvbtX6lnTV5RJBQ27Qxw8qaLmW2fnb2Y/545dyY3bdon3Wb8yuq+p49hkAsJood0HDC9ICDggiaLlE0BaMUSjXCFKutXn9Go2fPveSGvLN66vbjOiDb3qV3r/vcU2dKy0o96m23Cjo+QeAiyGko6HRnQFhClqTLQULuSvx+GH65798nf7soWcWHa9GT2dW/+n2XwgUsrkmBMBqIaSjoQVtAQcE0dfdoQ/se1zPTUyrVC4rlUiotbl2F272dXfozgce1dS8C1fXNSVr9vhBHRh9UdesX6PJmZIKXllNycr5OzD6ou6s8mcQsgFEFSEdDS0Kb/ejsTlJMsnMJLu8TYku1w/HT80FdEkqO2mq4OmH46diEVzHJvK6at0abWptnhtzzvH3F0Bd4MJRNDS6MyBM/UOj2tCS1tZsqzqvWa+t2VZtqOGFm/c9fFTJhKklnZz7SCZM9z18tCaPHxR/fwHUM0I6GhrdGRCmoJv5BHW24L2k3WDCKuNxwN9fAPWMkI6Gxo6dCFPYK8Frm5JzpS6zyq4yHgf8/QVQz6hJR8PjwjGEpa+7Q7sGhpUvlNSSTmq66NV0Jfid22/QPfuPqFQuK2GVgF52lfG44O8vgHrFSjoAhKSnM6vbf2mzjk+e05PHJnV88pxu/6XNNQudd956o977+leoJZ1UqVwptXnv61+hO2+9sSaPDwBYGivpaHhsZoSwDI7ktO/R57SpdY2u81fS9z36nF69ZWNNgzqhHACih5COhhaFzYwa/UVCI//+UejT38jnHwCijHIXNLT5IcmscptOWs1a4A2O5PT+fY/rsbEJvXBmRo+NTej9+x7X4EiuJo8fttkXSbnJmQUvkhrl9w+7u0ujn38AiDJCOhpa2CHpow8+qVP5olxZSprJlaVT+aI++uCTNXn8sIX9Iils7W0ZnZg6p9HjUxo5dkajx6d0Yupczbq79A+Nquh5OnZ6Rk+9MKljp2dU9LyGOf8AEGWEdDS0sFvgHT2ZV7nsdM4ra6ZU1jmvrHLZ6ejJxtgxMewXSWG7peMKvXDmnM4WKl1dzhY8vXDmnG7puKImj/9MblInJgsqlZ2SCVOp7HRisqBncpM1eXwAwNII6WhoYW+GUiyVVb5grOyPN4KwXyRJlZKPnXsPavue/dq592BNSz2+fHhcF7Qpl/PHqxVk/oVSWWXnVPTKOlcsq+hV7hca5PkHAFFGSEdDC30zFFvmeJ0J+0VS2DXZ4xPTkiSz8x/zxy8l6PzLrizP743uVLn1nOQcIR0AwkZ3FzQ8NkMJT09nVrtVqY0en8hrS427i4TdXeXCVfRLjV8o6Py9JbI4C+kAED5COhCidWtSOnuuJCfJOX81VdLaNY3zVzPMF0ljE3ltbEkvGKtlTXxLOqHpYlnOvXS8GkHnXyov/nJgqXEAQO1Q7gKE6J3bb5DMlEyYmlKVW5nFalv2oO596Gm9+u5v6uV/9HW9+u5v6t6Hnq7ZY4ddE/+uX3u5TOerm2Y/f9evvbyq4wN3hwm6lA8AWDWEdCBEjb4t+70PPa179h/RdNFTKlEJyPfsP1KzoB52Tfydt96o9926Va3NKSUTptbmlN5369aq//xv6bhCx6cKKnhlJUwqeGUdnypU3R0mnVz8n4ClxqMozAt/AWA1Nc576kBENfK27Pc9fFQJk1KJSihMmFQql3Xfw0drck56OrO6ffyU7nv4qM4WPK1tSuqd229YVvlN0B07g/z5Hxh9UdnWJp2ZLqngldWUTGh9S0oHRl/UnVUcn0gsvmSeXGI8aqKwYzAArBZCOhBzcd7W/WyhsoI+X8Iq47UwOJLTvkef06bWNboundR00dO+R5/Tq7dsrOochh0SxybyunLtGl21rnluzDlXdU16whJKWNk/7nx3GbN4rKSHfeEvAKymePyfGKhjQd6uD7uFYFBrm5K68BrFsquM10LQHU/D3jE1aE19UyqhpJnSyYTWpBNKJyv3my585RRRjb4ZFoD6Fo//EwN1KmjIDjskSsFeZLxz+w0qu0qJS9mV/VvV7MLZoCFvbCKvkldecOFmySvXLCQGranfmm3VVa1NSiVMXtkplTBd1dqkrdnWVZ75ygj7wl8AWE2EdCBEQUN22CuJQV9khH3hbNCQt64pqedOzajkOSXNVPKcnjs1U7N3AoJuxtXX3aF0MqlrNjTrlVe36poNzUonkzW7cDaosC/8BYDVRE06Gl6YNd1B+1y3t2WUm5yZq8mVaruSuBI1wWFeONvX3aFdA8PKF0pq8WvSlxPybK6IW+f7KLp54zUQpM982JtJBRX3+QPAxRDS0dDCvvCvvS2joyemNDlzvjtHa3NKN1y1rqrjg4bMoMLeDCiooCFv8lxJmzc264TfBrEpmdA169do6lxpdSe+guK+427c5w8ASyGko6GF3R3ilo4r9MjRk3MXTxY9T9NFT//y5uuqOj7slcSwV/Kl4O+EBAl5s79/x6bzL6ryhZKyrc0XOQoAgEsjpKOhhb0S/OCPjs1VSjidr5p48EfHqi4BCXMlMeyV/LDfCenr7tAH9j2u5yamVSqXlUpU3gn50G/dtOqPDQCob1w4ioYWdneI0RNnZVbpT23S3OejJ87W5PGDCnrhYlBR6G7jJMn8OnTz7wMAEBAr6WhoYa8El51Tqexfc2iVDWVKTjKLT9QLcyU/7HdC+odGtaElrWs3tMyNxW0znXsfevolO6426g64ABAlhHQ0tLBrulMJU9FzldVXt3C8UQSpKQ+7Jj7sFwlB3fvQ07pn/xElTEolKufunv1HJImgDgAhI6Sj4YW5EpxpSupcqSzn5tWkW+123Axb0JrysGvCV+JFQpgtQO97+Kgf0CuVjwmrbCx138NHCekAEDJq0oEQ3Xj1emVb1yjTlPRrq5PKtq7R1qvXhz21mliJmvIwa8KDbqYzOJLT+/c9rsfGJvTCmRk9Njah9+97fFm7tgZxtuBJzulcydNM0dO5UuX+2YJ36YMBAKuKkA6EqK+7Q02phTs+NqXis+NjUEF3TJ2tCd+abVXnNeu1NduqDS3pml04GvTC2Y8++KRO5YtyZSlpJleWTuWL+uiDT1Y9h8GRnHbuPajte/Zr596Dywr4a1IJFcuVayFmr4kolivjAIBwUe4ChCjsmviwBS0XiUJNeJByqaMn80qYlPCvQTCTXNnp6Mnq5h+0XOiKlpTyBe8l10Rc0cI/DQAQNv5PDISskXdMDFpT3t6W0bMnp3Rm+vyOretbUrr+yup2bI27/qFRFUqeTk4t3LG26u4yiYQ2rUvr5Nmiyq5Sk37l2rQswUo6AISNkA4gVEFqym/puELfe/bFymq0SQWvrNxkQTt/+YpVmu3K6rhqrUaOTargna8BN0md11T3IuPpF87ozExJCZmSZip5TifPFlTyzlR1/Ow7GddsOP/OBTumAkA0sFwCIDRBa8oPjL6oTeua1JRMqOykpmRCm9Y16cDoi6s88/OC1IR3XrPuJS9KnKoP6UWvcnQiYTKzubKZglfdS52gF74CAFYPK+kAQhO0pnxsIq+r1q3Rpnkrv865mtWkB60J/87Icc22xHeuUpM+O16NplRC0wVPZecq9exOkquMVyMK10SE2YISAKKMkA4gNEEvHF2JPuVBdtyc30JSkjJNqWXtOHq24CmdNCXsfKguu3LVLRC3ZltfWpO/Nr2smvwwr4kI+iIHAOoZ5S5AyIKUS8Rd0HKLoMfP7rg5XfQW7Lh570NPV3V80BaSa5uSKl9QmVJ21W9m1dfdoXRyYQvPdDI+LTxXok8+ANQrQjoQUJCQPbuSmJucWbCS2ChBPWif8aDHz99xM2EJ/7YyXo32toymiwtXvZezkv/O7Teo7Cq7fJZd2b+tjFcj6O8ftqAvcgCgnlHuAgQQ9O36oOUS9SBouUWQ488WKivo8yVMVZeb9HV3aNfAsPKFklrSSU0XvWWt5N956406emJKAz88pqLnlEyYdrz6mqrLbaTg5y/MmvCVKFcCgHrFSjoQQNC361diJbGRy2WCClpuEnQle3Akp8M/Pa3rr8zo51+2XtdfmdHhn56u2Z9h2O/k0F0GAJbGSjoQQNDuJEFXErnwLph3br9B9+w/olK5rIRVAvpyyk2kYCvZYb+TEvbjR6G7DABEFSEdCCBoyA5aLhF2yIq7lSg3CSLoi7y4P77U2DvuAsDFUO4CBBD07fqezqxu/6XNOj55Tk8em9TxyXO6/Zc2Vx1auPAumLDLTdrbMjoxdU6jx6c0cuyMRo9P6cTUuZrVZAe98BUAsHoI6UAAK1GTvO/R57SpdY1edU2rNrWu0b5Hn6s6JBKyggm7BeAtHVfo+FRBBa9SblPwyjo+VdAtHVfU5PGpCQeA6KLcBQgozJrkoOUyjS7sco8Doy8q29q0cDOilpQOjL6oO2vw+NSEA0B0EdKBEAUNiT2dWd0+fuolO2YSsqoTdgvAsYm8rly7Rleta54bc85REw4AoNwFCFPQcpWg5TKNLuxyD8qVAABLIaQDIQoaEsOuqY67ns6sXnvdBj17Mq8f/eyMnj2Z12uv21CzleWwXyQAAKKLkA6EKOiFp3R3Cebeh57WwA+PKWHSmpQpYdLAD4/p3oeersnjB/3zBwDUL2rSgZAFqQkOu6Y6CoJsa3/fw0eVMCmVqKxXJEwqlcu67+GjNeuVTk04AGAxrKQDMdbo5RJBt7U/W/CUsIVjCauM18rgSE479x7U9j37tXPvQa4nAABIIqQDsdbo5RJBa/LXNiVVdgvHyq4yXgtBX2QAAOoX5S5AzDVyuUTQFpbv3H6D7tl/RKVyZTOhsqt8vHP7Dasx3ZcI2icfAFC/WEkHEFtBWxjeeeuNuvnnNqroOZ0rORU9p5t/bmPN6tG58BcAsJTIhXQzu9vMnjOzH/gfvznva3eZ2REze8rM3jhv/LVm9oT/tXvNzPzxNWb2N/74I2Z2fQi/EoBVErQm/96Hntb3fnJK6aRpTcqUTpq+95NTNevuQp90AMBSIhfSfR93zr3G//i6JJnZTZLukLRN0m2S/tLMZpegPiWpV9JW/+M2f/wdkiacc6+Q9HFJe2r4OwBYZUFr8ud3d0lYwr+tjNdCo1/4CwBYWlRD+mLeLOmLzrlzzrmjko5IutnMrpW03jl3wDnnJH1e0lvmHfM5//N9kt4wu8oOoL64S3/LS4Td3aXRL/wFACwtqheO/p6ZvU3SIUl/4JybkLRZ0sF53zPujxX9zy8cl387JknOuZKZnZZ0paQTqzt9ALUw2x0lnbQF3VF2S1UF3bVNSU0XFwb1WnZ3kRr7wl8AwNJCWUk3s4fM7EeLfLxZldKVl0t6jaTnJX1s9rBFfpS7yPjFjrlwPr1mdsjMDh0/fny5vw6AkARtwfjO7Teo7CobGJVd2b+tXXcXiT7pAIDFhbKS7py7tZrvM7O/kvR3/t1xSe3zvrxF0s/88S2LjM8/ZtzMUpI2SHpxkfnslbRXkrq6ui7nXXMAIQjagvHOW2/U0RNTGvjhMRU9p2TCtOPV19Ssu0vQdwIAAPUrcjXpfo35rN+W9CP/8wFJd/gdW25Q5QLR7znnnpc0aWav8+vN3ybpq/OOebv/+e2S9vt16wDqQHtbRifPntPo8SmNHDuj0eNTOnn2XNXdUQZHcjr809O6/sqMfv5l63X9lRkd/unpmq1mB30nAABQv6JYk/4nZvYaVcpSnpXUJ0nOuWEz+5KkH0sqSXqPc2726q53SbpfUoukB/0PSfqMpC+Y2RFVVtDvqM2vAKAWbum4Qt979kUlrHLBZ8ErKzdZ0M5fvqKq4/uHRlUoeTo5VVLBK6spmVBrc2pZmwkNjuTUPzSqsYm82tsy6uvuqPrYoO8EAADqV+RCunPudy/ytY9I+sgi44ck/fwi4zOS3rqiEwRWWJCQ1+gOjL6oTeuaNDmzMGQfGH1Rd1Zx/NMvnNGZmZISMiXNVPKcTp4tqOSdqerxg5artLdllJucmdtxVKJPOgCgInLlLkAjmQ15ucmZBSGPiwerMzaR11Xr1qhj0zp1XrNeHZvW6ap1a6peiS56leq3RMJkZkr4bV4KXnVVcUHLVeiTDgBYCiEdCBE1ycEE3bGzKZWQnFR2Tk5OZeck549XYWwir5b0wnaNyylXoU86AGApkSt3ARoJNcnB9HV3aNfAsPKFklrSlZ7ny1mJ3ppt1bMnp3Rm+ny5zPq1aV1/5bqqjl+JchX6pAMAFsNKOhCioCvBjS7oSnRfd4fSyaSu2dCsV17dqms2NCudTFYd8ilXAQCsFlbSgRAFXQlGsJXons6sdqtSdjQ+kdeWZV64G/R4AACWYrQNX6irq8sdOnQo7Gmggdz70NO67+GjOlvwtLYpqXduv6Fmm+kAAIDwmNlh51zXYl9jJR0I0eBITvsefU6bWtfoOn8lfd+jz+nVWzayGlsjvEgCAEQRIR0IKEif8/ndXSQp05RSvlBa1mY6uHz3PvS07tl/RAmTUonK9QD37D8iSVUHdfrcAwBWAxeOouENjuS0c+9Bbd+zXzv3HlxWj/Kgfc7HJvIqeeUF29qXvDLdXWrkvoeP+gE9oYQl/NvKeDXocw8AWC2EdDS0oCEraJ/zdU1JPXdqRiXPze14+dypGa1tSl76YAR2tuDJ379oTsIq49Wgzz0AYLUQ0tHQgoasoJvZmJmccyqUyzpXKqtQLss5JzO79MEIbG1TUiXP6VzJ00zR07mSp5Lnqn6RFPTPHwCApRDS0dCChqygfc6PT52rfFLZ6NL/z7xxrKo3dG6S56Syf/7LTvJcZbwa9LkHAKwWQjoaWtCQFXQzm0KprETC1JxOqiWdVHM6qUTCVCiVl/27YPmOnSmoLZOaK3lJmNSWSenYmUJVx7OZEQBgtRDS0dCChqygO16mk6ayc5opepouVkouys6pKUm5Sy2MTeS1eWNG2162Qf9o8wZte9kGbd6YqfqdlKB//gAALIUWjGhoK7FjZJAdLzetW6OJs8UFY64sXbVuzWX9PCxPe1tGucmZuRaY0vLLVYL8+QMAsBRCOhpemCHLzJRImJIJk5nknOSVuXC0Vvq6O7RrYFj5Qkkt/mZSlKsAAKKAchcgRJPnStq8sVmphMkrO6USps0bmzV1rhT21BoC5SoAgKhiJR0I0Wy5RcemdXNj+UJJ2dbmEGfVWChXAQBEESvpQIjoDgIAABbDSjoQopW4cLXRDY7k1D80qrGJvNo5fwCAOkFIB0JGucXlGxzJadfAsNJJ08aWtHKTM9o1MKzdEucUABBrlLsAiK3+oVGlk6ZMU0pmldt00tQ/NBr21AAACISVdCBklGtcvrGJvDa2pBeMtaSTVW9GBABAVBHS0fDCDMmUawSzEpsRAQAQRZS7oKHNhuTc5MyCkDw4kqvJ41OuEQzdcQAA9YqQjoYWdkgem8irJZ1cMEa5RvXYjAgAUK8od0FDC7ummXKN4OiOAwCoR6yko6G1t2U0XfQWjNUyJFOuAQAAFkNIR0MLOyRTrgEAABZDuQsaWhR2/KRcAwAAXIiQjoZHSAYAAFFDuQsAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkAwAAABFDSAcAAAAihhaMQECDIzn1D41qbCKv9hD6rAMAgPpDSAcCGBzJadfAsNJJ08aWtHKTM9o1MKzdEkG9QfAiDQCwGgjpQAD9Q6MqlDydnCqp4JXVlEyotTml/qFRglqNhBmSeZEGAFgt1KQDATz9whmdPFtQyXNKmqnkOZ08W9AzL5wJe2oNYTYk5yZnFoTkwZFcTR6/f2hU6aQp05SSWeU2nTT1D43W5PEBAPWLkA4EUPScJCmRMJmZEgmTJBX8cayusEPy2EReLenkgrGWdFLjE/maPD4AoH4R0oEAmlIJyUll5+TkVHZOcv44Vl3YIbm9LaPpordgbLroaUtbpiaPDwCoXyQJIICt2VZd1dqkVMLklZ1SCdNVrU3amm0Ne2oNIeyQ3NfdoaLnlC+U5Fzltug59XV31OTxAQD1i5AOBNDX3aF0MqlrNjTrlVe36poNzUonk4S0Ggk7JPd0ZrV7xzZlW5t1erqobGuzdu/YxkWjAIDAzDlqZ+fr6upyhw4dCnsaiJHZ7iLjE3ltoQVfzXH+AQBxZWaHnXNdi36NkL4QIR0AAAC1cLGQTrkLAAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIghpAMAAAARkwp7AkDczbYAHJvIq50WgAAAYAUQ0oEABkdy2jUwrHTStLElrdzkjHYNDGu3VLOgzosEAADqD+UuQAD9Q6NKJ02ZppTMKrfppKl/aLQmjz/7IiE3ObPgRcLgSK4mjw8AAFYHIR0IYGwir5Z0csFYSzqp8Yl8TR4/7BcJAABgdRDSgQDa2zKaLnoLxqaLnra0ZWry+GG/SAAAAKuDkA4E0NfdoaLnlC+U5Fzltug59XV31OTxw36RAAAAVgchHQigpzOr3Tu2KdvarNPTRWVbm7V7x7aaXbgZ9osEAACwOujuAgTU05kNrZtKT2dWu1WpTR+fyGsL3V0AAKgLhHQg5sJ8kQAAAFYH5S4AAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxBDSAQAAgIghpAMAAAARQ0gHAAAAIoaQDgAAAEQMIR0AAACImFBCupm91cyGzaxsZl0XfO0uMztiZk+Z2Rvnjb/WzJ7wv3avmZk/vsbM/sYff8TMrp93zNvN7Bn/4+01+wUBAACAAMJaSf+RpN+RNDR/0MxuknSHpG2SbpP0l2aW9L/8KUm9krb6H7f54++QNOGce4Wkj0va4/+sKyT9saRfkXSzpD82s7ZV/J0AAACAFRFKSHfOPemce2qRL71Z0hedc+ecc0clHZF0s5ldK2m9c+6Ac85J+rykt8w75nP+5/skvcFfZX+jpG875150zk1I+rbOB3sAAAAgsqJWk75Z0ti8++P+2Gb/8wvHFxzjnCtJOi3pyov8LAAAACDSUqv1g83sIUnXLPKlf++c++pShy0y5i4yfrnHLHxQs15VSml03XXXLTE1AAAAoDZWLaQ75269jMPGJbXPu79F0s/88S2LjM8/ZtzMUpI2SHrRH++54JjBJea6V9JeSerq6lo0yAMAAAC1smoh/TINSPprM/szSS9T5QLR7znnPDObNLPXSXpE0tsk/fm8Y94u6YCk2yXtd845M/umpP9n3sWivyHprktN4PDhwyfM7CeXOf+rJJ24zGPB+QuK8xcM5y8Yzl8wnL9gOH/BcQ6Dudzz93NLfSGUkG5mv61KyN4k6b+b2Q+cc290zg2b2Zck/VhSSdJ7nHOef9i7JN0vqUXSg/6HJH1G0hfM7IgqK+h3SJJz7kUz+78lfd//vt3OuRcvNTfn3KYAv9ch51zXpb8Ti+H8BcP5C4bzFwznLxjOXzCcv+A4h8GsxvkLJaQ7574i6StLfO0jkj6yyPghST+/yPiMpLcu8bM+K+mzgSYLAAAA1FjUursAAAAADY+QvrL2hj2BmOP8BcP5C4bzFwznLxjOXzCcv+A4h8Gs+Pmzyt5AAAAAAKKClXQAAAAgYgjpl8nMPmtmOTP70byxu83sOTP7gf/xm2HOMarMrN3M/t7MnjSzYTN7rz9+hZl928ye8W/bLvWzGtFFzh/PvyqZWbOZfc/MHvfP4Yf9cZ6DVbjI+eM5WCUzS5rZY2b2d/59nnvLtMg55PlXJTN71sye8M/TIX+M52CVljh/K/78o9zlMplZt6QpSZ93zv28P3a3pCnn3H8Kc25RZ2bXSrrWOfeombVKOizpLZL+d0kvOuc+amYflNTmnPvD8GYaTRc5f/9cPP+qYmYmaa1zbsrM0pIelvReSb8jnoOXdJHzd5t4DlbFzP6tpC5J651z/9TM/kQ895ZlkXN4t3j+VcXMnpXU5Zw7MW+M52CVljh/d2uFn3+spF8m59yQKn3ZsUzOueedc4/6n09KelLSZklvlvQ5/9s+p0rwxAUucv5QJVcx5d9N+x9OPAercpHzhyqY2RZJvyXpvnnDPPeWYYlziGB4DkYMIX3l/Z6Z/dAvh+Gtoksws+sl/aIqO8le7Zx7XqoEUUnZEKcWCxecP4nnX9X8t8p/ICkn6dvOOZ6Dy7DE+ZN4DlbjE5L+naTyvDGee8vzCb30HEo8/6rlJH3LzA6bWa8/xnOweoudP2mFn3+E9JX1KUkvl/QaSc9L+lios4k4M1sn6b9J+n3n3Jmw5xM3i5w/nn/L4JzznHOvkbRF0s1m9pLN0rC0Jc4fz8FLMLN/KinnnDsc9lzi6iLnkOdf9X7VOfdLkt4k6T1+CS+qt9j5W/HnHyF9BTnnXvD/4SpL+itJN4c9p6jy61j/m6T/6pz7W3/4Bb/eerbuOhfW/KJusfPH8+/yOOdOSRpUpZ6a5+AyzT9/PAer8quSdvg1rV+U9Hoz+y/iubcci55Dnn/Vc879zL/NqbID/M3iOVi1xc7fajz/COkraPbJ7fttST9a6nsbmX/R2WckPemc+7N5XxqQ9Hb/87dL+mqt5xYHS50/nn/VM7NNZrbR/7xF0q2SRsRzsCpLnT+eg5fmnLvLObfFOXe9pDsk7XfO/Svx3KvaUueQ5191zGyt33RAZrZW0m+ocq54DlZhqfO3Gs+/VNAf0KjM7AFJPZKuMrNxSX8sqcfMXqNKrdKzkvrCml/E/aqk35X0hF/TKkl/JOmjkr5kZu+Q9FNJbw1nepG31PnbyfOvatdK+pyZJVVZrPiSc+7vzOyAeA5WY6nz9wWeg5eN//8F9yc8/6pytaSvVNZ7lJL01865b5jZ98VzsBpLnb8V//8fLRgBAACAiKHcBQAAAIgYQjoAAAAQMYR0AAAAIGII6QAAAEDEENIBAACAiCGkA0DMmdn1ZvaSnrxmttvMbr3EsXeb2ftXb3YAgMtBn3QAqFPOuV1hzwEAcHlYSQeA+pA0s78ys2Ez+5aZtZjZ/WZ2uySZ2W+a2YiZPWxm95rZ38079iYzGzSzUTO70//+fzfv84+b2X7/8zf429jLzD5lZof8x/zwvK9/ZfYHm9mvm9nfXjhZfwX/c/5cnzWz3zGzPzGzJ8zsG2aW9r/vWTPbY2bf8z9e4Y+/3MwOmtn3/XcMplblrAJASAjpAFAftkr6C+fcNkmnJP2vs18ws2ZJ/ZLe5JzbLmnTBcd2SnqjpJsl/bEfkIck/WP/612S1vnj2yX9gz/+751zXZJeLenXzOzVkvZLepWZzT7G/yHpPy8x55dL+i1Jb5b0XyT9vXPuH0ma9sdnnXHO3Szpk5I+4Y/dI+ke59wvS/rZxU8NAMQPIR0A6sNR59wP/M8PS7p+3tc6JY0654769x+44Nj/7pw755w7ISmnyrbXhyW91sxaJZ2TdECVsP6PdT6k/3Mze1TSY5K2SbrJVbax/oKkf2VmGyXdIunBJeb8oHOuKOkJSUlJ3/DHn7hg/g/Mu73F//wWSV/2P//rJX4+AMQWNekAUB/Ozfvck9Qy774t89iUc65oZs+qshL+XUk/lPRPVFn9ftLMbpD0fkm/7JybMLP7JTX7P+M/S/qapBlJX3bOlczsPZL+jf/135z/uM65spkV/YAvSWUt/PfJLfE5ANQtVtIBoP6NSOows+v9+/+iyuOGVAniQ6qsnv+fkn7gh+n1ks5KOm1mV0t60+xBzrmfqVKC8h8k3e+P/YVz7jX+x3LLU/7FvNsD/ucHdb6k545l/jwAiDxW0gGgzjnnps3s3ZK+YWYnJH2vykP/QdK/l3TAOXfWzGb8MTnnHjezxyQNSxqV9D8uOPa/StrknPvxCvwKa8zsEVUWlnb6Y78v6b+Y2R9I+u+STq/A4wBAZNj5dxcBAPXKzNY556bMzCT9haRnnHMfX8XH+6Skx5xznwn4c56V1OXXy88fz0iads45M7tD0k7n3JuDPBYARAkr6QDQGP6Nmb1dUpMqF3r2r9YDmdlhVUph/mC1HkPSayV90n/RcUrSv17FxwKAmmMlHQAAAIgYLhwFAAAAIoaQDgAAAEQMIR0AAACIGEI6AAAAEDGEdAAAACBiCOkAAABAxPz/snz9YgD7khcAAAAASUVORK5CYII=\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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Multiple Linear Regression</h3>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "First lets make a prediction \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 33, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "Y_hat = lm.predict(Z)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 34, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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IiIiIhG0Y8cOGjRooGAcMDOjQYMGJR7BVzgWERERiTAF4/hQmvdB4VhEREREJEThWERERKQCGjt2LGbGzz//fMDnPvLII2zbtq3U93ruuee46qqr9jqXmZlJixYtyM/P3+t89+7d+f7774u8TmZmJl26dCl1HZGgcCwiIiJSAY0ZM4aBAwfy6quvHvC5ZQ3HRWndujUtW7bk66+/3n3u559/ZvPmzfTt2zei94okhWMRERGRCmbLli188803PPPMM3uF47y8PP74xz/StWtX0tPTeeyxx3j00UdZvnw5gwcPZvDgwQDUrFlz92vefPNNLrjgAgDef/99+vXrR48ePTj66KNZuXJlsXWcddZZe93/1Vdf5ayzziIzM5PDDz+cnj170rNnT7799tvfvHbf0ejjjz+eiRMnAvDZZ59x6KGH0rNnT04//XS2bNlS4u/R/mgpNxEREZFoue46mDEjstfs3h0eeaTYp7zzzjuMGDGC9u3bU79+faZPn07Pnj156qmnyMjI4McffyQpKYl169ZRv359HnroISZMmEDDhg2Lve7AgQOZPHkyZsbTTz/Nfffdx4MPPrjf559xxhn06NGDxx57jKSkJF577TXeeOMNGjduzOeff05KSgoLFy7krLPOYurUqWF9+WvWrOHOO+/kiy++oEaNGtx777089NBD3HbbbWG9/kAUjkVEREQqmDFjxnDdddcBMGrUKMaMGUPPnj354osvuPzyy0lK8hGwfv36JbpuVlYWZ555JitWrGDXrl0HXD/4oIMO4pBDDmHcuHE0adKE5ORkunTpwsaNG7nqqquYMWMGiYmJLFiwIOwaJk+ezE8//cSAAQMA2LVrF4ceemiJvo7iKByLiIiIRMsBRnijYe3atYwfP545c+ZgZuTl5WFm3HfffTjnwlrerPBzCq8TfPXVV3PDDTdw4oknMnHiRO64444DXqugtaJJkyacddZZADz88MM0adKEmTNnkp+fT0pKym9el5SUtNdkvoI6nHMMHTqUMWPGHPDepaGeYxEREZEK5M033+T8889nyZIlZGZmsmzZMtLS0pg0aRLDhg3jiSeeIDc3F4B169YBUKtWLTZv3rz7Gk2aNGHevHnk5+czduzY3ec3btxI8+bNAXj++efDqufUU0/lo48+4rXXXmPUqFG7r9O0aVMSEhJ48cUXycvL+83rWrduzYwZM8jPz2fZsmW7V7jo378/33zzDYsWLQJg27ZtJRp5PhCFYxEREZEKZMyYMYwcOXKvc6eeeiqvvPIKl1xyCa1atSI9PZ1u3brxyiuvAHDppZdyzDHH7J6Qd88993D88cczZMgQmjZtuvs6d9xxB6effjqHH374AfuTC9StW5f+/fvTpEmT3W0YV155Jc8//zz9+/dnwYIF1KhR4zevGzBgAGlpaXTt2pU//vGP9OzZE4BGjRrx3HPPcdZZZ5Genk7//v3DWq4uXOaci9jFyqp3794u3GZsERERkXg0b948OnXqFHQZElLU+2Fm05xzvYt6vkaORURERERCFI5FREREREIUjkVEREREQhSORURERERCFI5FREREREIUjkVEREREQhSORaJp2jS4/HIYOxa2bQu6GhERqSQSExPp3r377iMzM5PDDjsMgMzMzN3rGwPMmDGDjz76qMT3GDRoEPsuwXvHHXdw880373VuxowZxS5td8cdd/DAAw+U+P7RonAsEi15eXDhhfDkk3DKKdCoEZx2GrzyCmzcGHR1IiJSgVWrVo0ZM2bsPlq3bs23334LRC4cF+Wss87itdde2+vcq6++ytlnnx2R68eCwrFItDzzDMye7cPwF1/ABRfAt9/COef4oLzPT9YiIiLRVLNmTQD+/Oc/8/XXX9O9e3fuvfdebrvtNl577TW6d+/Oa6+9xtatW7nooovo06cPPXr04N133wVg+/btjBo1ivT0dM4880y2b9/+m3t06NCBunXrMmXKlN3nXn/9dUaNGsV///tf+vTpQ7du3Tj11FPZVsRvVAuPRq9Zs4bWrVsDkJeXx4033kifPn1IT0/nySefBGDFihUcccQRdO/enS5duvD111+X+fuUVOYriMhvbdoEf/0rDBwIo0aBGRx1FDz2GEyeDPffD/fe6wNzhw5BVysiIlFy3XUwY0Zkr9m9OzzySPHP2b59O927dwcgLS2NsWPH7v7cPffcwwMPPMAHH3wAQJMmTZg6dSr/+te/APjLX/7CkCFDePbZZ9mwYQN9+/bl6KOP5sknn6R69erMmjWLWbNm7d7OeV9nnXUWr776Kv369WPy5Mk0aNCAdu3aUb9+fX73u98BcOutt/LMM89w9dVXh/U1P/PMM9SpU4cffviBnTt3MmDAAIYNG8bbb7/N8OHDueWWW8jLyysycJeUwrFINNx1F6xaBR9+6INxgYQEOOww32rxySfwwAPw3/8GV6eIiFRIBW0VpfHZZ5/x3nvv7e4D3rFjB0uXLuWrr77immuuASA9PZ309PQiXz9q1CgOO+wwHnzwQV599VXOOussAObMmcOtt97Khg0b2LJlC8OHDy9RTbNmzeLNN98EYOPGjSxcuJA+ffpw0UUXkZOTw8knn7z7B4KyUDgWibTFi+Hhh+H886F3kdu2Q+PGcNFF8PTT8Le/QbNmsa1RRERi4kAjvPHIOcdbb71FhyJ+s2mFB3z2o2XLlrRu3Zovv/ySt956i++++w6ACy64gHfeeYdu3brx3HPPMXHixN+8Nikpifz8fMCH8sI1PfbYY0UG6q+++ooPP/yQ8847jxtvvJHzzz8/3C+1SOo5Fom0P/0JkpL86HFx/vAHyM0tn39ziohIuVWrVi02b9683z8PHz6cxx57DOccAD/++CMARxxxBC+//DLgR4FnzZq133ucddZZXH/99bRp04YWLVoAsHnzZpo2bUpOTs7u6+yrdevWTJs2DWD3KHFBTY8//jg5OTkALFiwgK1bt7JkyRIaN27M7373Oy6++GKmT59e4u/HvhSORSLp66/hzTd9QG7evPjnHnwwnHkmPPEEbNgQk/JERETS09NJSkqiW7duPPzwwwwePJiffvpp94S8v/71r+Tk5JCenk6XLl3461//CsAVV1zBli1bSE9P57777qNv3777vcfpp5/O3LlzGTVq1O5z//jHP+jXrx9Dhw6lY8eORb7uj3/8I48//jiHHXYYa9as2X3+kksuoXPnzvTs2ZMuXbpw2WWXkZuby8SJE+nevTs9evTgrbfe4tprry3z98cKfiqIB71793b7rpcnUm7k50PfvrByJcyfD9WrH/g1M2ZAjx5+lFmrV4iIVAjz5s0rdl1fia2i3g8zm+acK7L3USPHIpHy4ot+04977gkvGIOfcjxiBPzzn1DEkjgiIiISWwrHIpGwdSv85S/Qrx+EZuWG7U9/8qPNzz8fndpEREQkbArHIpHwwQewfDncfbdfrq0kjjzSh+r77/cT9EREpNyLp7bVyqw074PCsUgkjB8PderA4YeX/LVmfvR48WJ4663I1yYiIjGVkpLC2rVrFZAD5pxj7dq1pKSklOh1mpAnEgnt20PHjvDee6V7fX4+dO7se5WnTdt74xAR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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(Y_hat, 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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h2>Part 3: Polynomial Regression and Pipelines</h2>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<center><b>Quadratic - 2nd order</b></center>\n", | |
| "$$\n", | |
| "Yhat = a + b_1 X +b_2 X^2 \n", | |
| "$$\n", | |
| "\n", | |
| "<center><b>Cubic - 3rd order</b></center>\n", | |
| "$$\n", | |
| "Yhat = a + b_1 X +b_2 X^2 +b_3 X^3\\\\\n", | |
| "$$\n", | |
| "\n", | |
| "<center><b>Higher order</b>:</center>\n", | |
| "$$\n", | |
| "Y = a + b_1 X +b_2 X^2 +b_3 X^3 ....\\\\\n", | |
| "$$\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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<p>We will use the following function to plot the data:</p>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 35, | |
| "metadata": {}, | |
| "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\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 36, | |
| "metadata": {}, | |
| "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.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 37, | |
| "metadata": {}, | |
| "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 \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 38, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "PlotPolly(p, x, y, 'highway-mpg')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 39, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])" | |
| ] | |
| }, | |
| "execution_count": 39, | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 41, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| " 11 10 9 8 7\n", | |
| "-1.243e-08 x + 4.722e-06 x - 0.0008028 x + 0.08056 x - 5.297 x\n", | |
| " 6 5 4 3 2\n", | |
| " + 239.5 x - 7588 x + 1.684e+05 x - 2.565e+06 x + 2.551e+07 x - 1.491e+08 x + 3.879e+08\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "f = np.polyfit(x, y, 11)\n", | |
| "p = np.poly1d(f)\n", | |
| "print(p)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "# calculate polynomial\n", | |
| "# Here we use a polynomial of the 11rd order (cubic) \n", | |
| "f1 = np.polyfit(x, y, 11)\n", | |
| "p1 = np.poly1d(f1)\n", | |
| "print(p1)\n", | |
| "PlotPolly(p1,x,y, 'Highway MPG')\n", | |
| "\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>\n" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "$$\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can perform a polynomial transform on multiple features. First, we import the module:\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 42, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.preprocessing import PolynomialFeatures" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We create a <b>PolynomialFeatures</b> object of degree 2: \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 43, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)" | |
| ] | |
| }, | |
| "execution_count": 43, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "pr=PolynomialFeatures(degree=2)\n", | |
| "pr" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 44, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "Z_pr=pr.fit_transform(Z)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "The original data is of 201 samples and 4 features \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 45, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(201, 4)" | |
| ] | |
| }, | |
| "execution_count": 45, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "Z.shape" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "after the transformation, there 201 samples and 15 features\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 46, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(201, 15)" | |
| ] | |
| }, | |
| "execution_count": 46, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "Z_pr.shape" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h2>Pipeline</h2>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 47, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.pipeline import Pipeline\n", | |
| "from sklearn.preprocessing import StandardScaler" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We create the pipeline, by creating a list of tuples including the name of the model or estimator and its corresponding constructor.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 48, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "Input=[('scale',StandardScaler()), ('polynomial', PolynomialFeatures(include_bias=False)), ('model',LinearRegression())]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "we input the list as an argument to the pipeline constructor \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 49, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "Pipeline(memory=None,\n", | |
| " steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False))])" | |
| ] | |
| }, | |
| "execution_count": 49, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "pipe=Pipeline(Input)\n", | |
| "pipe" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can normalize the data, perform a transform and fit the model simultaneously. \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 50, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n", | |
| " return self.partial_fit(X, y)\n", | |
| "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n", | |
| " return self.fit(X, y, **fit_params).transform(X)\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "Pipeline(memory=None,\n", | |
| " steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False))])" | |
| ] | |
| }, | |
| "execution_count": 50, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "pipe.fit(Z,y)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " Similarly, we can normalize the data, perform a transform and produce a prediction simultaneously\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 51, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n", | |
| " Xt = transform.transform(Xt)\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([13102.74784201, 13102.74784201, 18225.54572197, 10390.29636555])" | |
| ] | |
| }, | |
| "execution_count": 51, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ypipe=pipe.predict(Z)\n", | |
| "ypipe[0:4]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
| "<h1>Question #5:</h1>\n", | |
| "<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n", | |
| "</div>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Write your code below and press Shift+Enter to execute \n", | |
| "Input= [('scale', StandardScaler()), ('model',LinearRegression())]\n", | |
| "\n", | |
| "pipe= Pipeline(Input)\n", | |
| "pipe.fit(Z,y)\n", | |
| "\n", | |
| "ypipe= pipe.predict(Z)\n", | |
| "ypipe[0:10]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "</div>\n", | |
| "Double-click <b>here</b> for the solution.\n", | |
| "\n", | |
| "<!-- The answer is below:\n", | |
| "\n", | |
| "Input=[('scale',StandardScaler()),('model',LinearRegression())]\n", | |
| "\n", | |
| "pipe=Pipeline(Input)\n", | |
| "\n", | |
| "pipe.fit(Z,y)\n", | |
| "\n", | |
| "ypipe=pipe.predict(Z)\n", | |
| "ypipe[0:10]\n", | |
| "\n", | |
| "-->\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h2>Part 4: Measures for In-Sample Evaluation</h2>\n" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "<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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Model 1: Simple Linear Regression</h3>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the R^2\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 52, | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The R-square is: 0.4965911884339176\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "#highway_mpg_fit\n", | |
| "lm.fit(X, Y)\n", | |
| "# Find the R^2\n", | |
| "print('The R-square is: ', lm.score(X, Y))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\".\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the MSE\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 53, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The output of the first four predicted value is: [16236.50464347 16236.50464347 17058.23802179 13771.3045085 ]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "Yhat=lm.predict(X)\n", | |
| "print('The output of the first four predicted value is: ', Yhat[0:4])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "lets import the function <b>mean_squared_error</b> from the module <b>metrics</b>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 54, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.metrics import mean_squared_error" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "we compare the predicted results with the actual results \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 55, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The mean square error of price and predicted value is: 31635042.944639888\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "mse = mean_squared_error(df['price'], Yhat)\n", | |
| "print('The mean square error of price and predicted value is: ', mse)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Model 2: Multiple Linear Regression</h3>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the R^2\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 56, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The R-square is: 0.8093562806577457\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# fit the model \n", | |
| "lm.fit(Z, df['price'])\n", | |
| "# Find the R^2\n", | |
| "print('The R-square is: ', lm.score(Z, df['price']))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\".\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the MSE\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " we produce a prediction \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 57, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "Y_predict_multifit = lm.predict(Z)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " we compare the predicted results with the actual results \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 58, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The mean square error of price and predicted value using multifit is: 11980366.87072649\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print('The mean square error of price and predicted value using multifit is: ', \\\n", | |
| " mean_squared_error(df['price'], Y_predict_multifit))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Model 3: Polynomial Fit</h3>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's calculate the R^2\n" | |
| ] | |
| }, | |
| { | |
| "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\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 59, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.metrics import r2_score" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We apply the function to get the value of r^2\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 60, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "The R-square value is: 0.7023769093756598\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "r_squared = r2_score(y, p(x))\n", | |
| "print('The R-square value is: ', r_squared)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can say that ~ 67.419 % of the variation of price is explained by this polynomial fit\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>MSE</h3>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can also calculate the MSE: \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 61, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "18703127.63085496" | |
| ] | |
| }, | |
| "execution_count": 61, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "mean_squared_error(df['price'], p(x))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h2>Part 5: Prediction and Decision Making</h2>\n", | |
| "<h3>Prediction</h3>\n", | |
| "\n", | |
| "<p>In the previous section, we trained the model using the method <b>fit</b>. Now we will use the method <b>predict</b> to produce a prediction. Lets import <b>pyplot</b> for plotting; we will also be using some functions from numpy.</p>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 62, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import matplotlib.pyplot as plt\n", | |
| "import numpy as np\n", | |
| "\n", | |
| "%matplotlib inline " | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Create a new input \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 63, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "new_input=np.arange(1, 100, 1).reshape(-1, 1)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| " Fit the model \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 64, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n", | |
| " normalize=False)" | |
| ] | |
| }, | |
| "execution_count": 64, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lm.fit(X, Y)\n", | |
| "lm" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Produce a prediction\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 66, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([37601.57247984, 36779.83910151, 35958.10572319, 35136.37234487,\n", | |
| " 34314.63896655])" | |
| ] | |
| }, | |
| "execution_count": 66, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "yhat=lm.predict(new_input)\n", | |
| "yhat[0:5]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "we can plot the data \n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 67, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "plt.plot(new_input, yhat)\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Decision Making: Determining a Good Model Fit</h3>\n" | |
| ] | |
| }, | |
| { | |
| "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", | |
| "<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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>\n" | |
| ] | |
| }, | |
| { | |
| "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.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "<h2>Conclusion:</h2>\n" | |
| ] | |
| }, | |
| { | |
| "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>\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Thank you for completing this lab!\n", | |
| "\n", | |
| "## Author\n", | |
| "\n", | |
| "<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>\n", | |
| "\n", | |
| "### Other Contributors\n", | |
| "\n", | |
| "<a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>\n", | |
| "\n", | |
| "Bahare Talayian\n", | |
| "\n", | |
| "Eric Xiao\n", | |
| "\n", | |
| "Steven Dong\n", | |
| "\n", | |
| "Parizad\n", | |
| "\n", | |
| "Hima Vasudevan\n", | |
| "\n", | |
| "<a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a>\n", | |
| "\n", | |
| "<a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n", | |
| "\n", | |
| "## Change Log\n", | |
| "\n", | |
| "| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n", | |
| "| ----------------- | ------- | ---------- | --------------------------------------------- |\n", | |
| "| 2020-09-09 | 2.1 | Lakshmi | Fixes made in Polynomial Regression Equations |\n", | |
| "| 2020-08-27 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n", | |
| "\n", | |
| "<hr>\n", | |
| "\n", | |
| "## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\n" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python", | |
| "language": "python", | |
| "name": "conda-env-python-py" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.6.11" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment