Skip to content

Instantly share code, notes, and snippets.

@kdbaseball8
Created June 28, 2019 16:42
Show Gist options
  • Select an option

  • Save kdbaseball8/f39b2ccdca7ba3f75b270caa3655c991 to your computer and use it in GitHub Desktop.

Select an option

Save kdbaseball8/f39b2ccdca7ba3f75b270caa3655c991 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/corsera_da0101en_notebook_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 4: Model Development</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some questions we want to ask in this module\n",
"<ul>\n",
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n",
" <li>do I know if I put a fair value on my car?</li>\n",
"</ul>\n",
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n",
"\n",
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>hatchback</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# path of data \n",
"path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>1. Linear Regression and Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<p>One example of a Data Model that we will be using is</p>\n",
"<b>Simple Linear Regression</b>.\n",
"\n",
"<br>\n",
"<p>Simple Linear Regression is a method to help us understand the relationship between two variables:</p>\n",
"<ul>\n",
" <li>The predictor/independent variable (X)</li>\n",
" <li>The response/dependent variable (that we want to predict)(Y)</li>\n",
"</ul>\n",
"\n",
"<p>The result of Linear Regression is a <b>linear function</b> that predicts the response (dependent) variable as a function of the predictor (independent) variable.</p>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
" Y: Response \\ Variable\\\\\n",
" X: Predictor \\ Variables\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <b>Linear function:</b>\n",
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li>a refers to the <b>intercept</b> of the regression line0, in other words: the value of Y when X is 0</li>\n",
" <li>b refers to the <b>slope</b> of the regression line, in other words: the value with which Y changes when X increases by 1 unit</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Lets load the modules for linear regression</h4>"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Create the linear regression object</h4>"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm = LinearRegression()\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How could Highway-mpg help us predict car price?</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For this example, we want to look at how highway-mpg can help us predict car price.\n",
"Using simple linear regression, we will create a linear function with \"highway-mpg\" as the predictor variable and the \"price\" as the response variable."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"X = df[['highway-mpg']]\n",
"Y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using highway-mpg."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(X,Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can output a prediction "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n",
" 20345.17153508])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Yhat=lm.predict(X)\n",
"Yhat[0:5] "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the intercept (a)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"38423.305858157386"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the Slope (b)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([-821.73337832])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What is the final estimated linear model we get?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear model with the structure:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plugging in the actual values we get:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 a): </h1>\n",
"\n",
"<b>Create a linear regression object?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm1 = LinearRegression()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1 = LinearRegression()\n",
"lm1 \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1 b): </h1>\n",
"\n",
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"X = df[['engine-size']]\n",
"Y = df[['price']]\n",
"\n",
"lm1.fit(X,Y)\n",
"lm1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1.fit(df[['highway-mpg']], df[['price']])\n",
"lm1\n",
"\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 c):</h1>\n",
"\n",
"<b>Find the slope and intercept of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Slope</h4>"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[166.86001569]])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm1.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-7963.33890628])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm1.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# Slope \n",
"lm1.coef_\n",
"# Intercept\n",
"lm1.intercept_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 d): </h1>\n",
"\n",
"<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Y = 166x + -7963\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# using X and Y \n",
"Yhat=-7963.34 + 166.86*X\n",
"\n",
"Price=-7963.34 + 166.86*engine-size\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Multiple Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>What if we want to predict car price using more than one variable?</p>\n",
"\n",
"<p>If we want to use more variables in our model to predict car price, we can use <b>Multiple Linear Regression</b>.\n",
"Multiple Linear Regression is very similar to Simple Linear Regression, but this method is used to explain the relationship between one continuous response (dependent) variable and <b>two or more</b> predictor (independent) variables.\n",
"Most of the real-world regression models involve multiple predictors. We will illustrate the structure by using four predictor variables, but these results can generalize to any integer:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Y: Response \\ Variable\\\\\n",
"X_1 :Predictor\\ Variable \\ 1\\\\\n",
"X_2: Predictor\\ Variable \\ 2\\\\\n",
"X_3: Predictor\\ Variable \\ 3\\\\\n",
"X_4: Predictor\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"a: intercept\\\\\n",
"b_1 :coefficients \\ of\\ Variable \\ 1\\\\\n",
"b_2: coefficients \\ of\\ Variable \\ 2\\\\\n",
"b_3: coefficients \\ of\\ Variable \\ 3\\\\\n",
"b_4: coefficients \\ of\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The equation is given by"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>From the previous section we know that other good predictors of price could be:</p>\n",
"<ul>\n",
" <li>Horsepower</li>\n",
" <li>Curb-weight</li>\n",
" <li>Engine-size</li>\n",
" <li>Highway-mpg</li>\n",
"</ul>\n",
"Let's develop a model using these variables as the predictor variables."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using the four above-mentioned variables."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lm.fit(Z, df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the value of the intercept(a)?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What are the values of the coefficients (b1, b2, b3, b4)?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" What is the final estimated linear model that we get?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear function with the structure:\n",
"\n",
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$\n",
"\n",
"What is the linear function we get in this example?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Price</b> = -15678.742628061467 + 52.65851272 x <b>horsepower</b> + 4.69878948 x <b>curb-weight</b> + 81.95906216 x <b>engine-size</b> + 33.58258185 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2 a): </h1>\n",
"Create and train a Multiple Linear Regression model \"lm2\" where the response variable is price, and the predictor variable is 'normalized-losses' and 'highway-mpg'.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"U = df[['normalized-losses' , 'highway-mpg']]\n",
"\n",
"lm.fit(U , df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm2 = LinearRegression()\n",
"lm2.fit(df[['normalized-losses' , 'highway-mpg']],df['price'])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #2 b): </h1>\n",
"<b>Find the coefficient of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm2.coef_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>2) Model Evaluation using Visualization</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we've developed some models, how do we evaluate our models and how do we choose the best one? One way to do this is by using visualization."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"import the visualization package: seaborn"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# import the visualization package: seaborn\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Regression Plot</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When it comes to simple linear regression, an excellent way to visualize the fit of our model is by using <b>regression plots</b>.</p>\n",
"\n",
"<p>This plot will show a combination of a scattered data points (a <b>scatter plot</b>), as well as the fitted <b>linear regression</b> line going through the data. This will give us a reasonable estimate of the relationship between the two variables, the strength of the correlation, as well as the direction (positive or negative correlation).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's visualize Horsepower as potential predictor variable of price:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"text/plain": [
"(0, 48272.56162528287)"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 12\n",
"height = 10\n",
"plt.figure(figsize=(width, height))\n",
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see from this plot that price is negatively correlated to highway-mpg, since the regression slope is negative.\n",
"One thing to keep in mind when looking at a regression plot is to pay attention to how scattered the data points are around the regression line. This will give you a good indication of the variance of the data, and whether a linear model would be the best fit or not. If the data is too far off from the line, this linear model might not be the best model for this data. Let's compare this plot to the regression plot of \"peak-rpm\".</p>"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 47422.919330307624)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing the regression plot of \"peak-rpm\" and \"highway-mpg\" we see that the points for \"highway-mpg\" are much closer to the generated line and on the average decrease. The points for \"peak-rpm\" have more spread around the predicted line, and it is much harder to determine if the points are decreasing or increasing as the \"highway-mpg\" increases.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #3:</h1>\n",
"<b>Given the regression plots above is \"peak-rpm\" or \"highway-mpg\" more strongly correlated with \"price\". Use the method \".corr()\" to verify your answer.</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"peak rpm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The variable \"peak-rpm\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"highway-mpg\" which is approximate -0.101616. You can verify it using the following command:\n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Residual Plot</h3>\n",
"\n",
"<p>A good way to visualize the variance of the data is to use a residual plot.</p>\n",
"\n",
"<p>What is a <b>residual</b>?</p>\n",
"\n",
"<p>The difference between the observed value (y) and the predicted value (Yhat) is called the residual (e). When we look at a regression plot, the residual is the distance from the data point to the fitted regression line.</p>\n",
"\n",
"<p>So what is a <b>residual plot</b>?</p>\n",
"\n",
"<p>A residual plot is a graph that shows the residuals on the vertical y-axis and the independent variable on the horizontal x-axis.</p>\n",
"\n",
"<p>What do we pay attention to when looking at a residual plot?</p>\n",
"\n",
"<p>We look at the spread of the residuals:</p>\n",
"\n",
"<p>- If the points in a residual plot are <b>randomly spread out around the x-axis</b>, then a <b>linear model is appropriate</b> for the data. Why is that? Randomly spread out residuals means that the variance is constant, and thus the linear model is a good fit for this data.</p>"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 12\n",
"height = 10\n",
"plt.figure(figsize=(width, height))\n",
"sns.residplot(df['highway-mpg'], df['price'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>What is this plot telling us?</i>\n",
"\n",
"<p>We can see from this residual plot that the residuals are not randomly spread around the x-axis, which leads us to believe that maybe a non-linear model is more appropriate for this data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>How do we visualize a model for Multiple Linear Regression? This gets a bit more complicated because you can't visualize it with regression or residual plot.</p>\n",
"\n",
"<p>One way to look at the fit of the model is by looking at the <b>distribution plot</b>: We can look at the distribution of the fitted values that result from the model and compare it to the distribution of the actual values.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First lets make a prediction "
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Z' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-24-f493eb797774>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mY_hat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'Z' is not defined"
]
}
],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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ShARkSyn0C4itZPKa7THNGwInTvXObT/7W/w4otw113Qu3f8r+vd2/e1v/MOfPe7dSpBRESynEK7iNROOsy0g2+RqUN7zL59fqWYgQN9L3tNjR4Nd97pr4d95plalyEiIllOoV1Eaic2057KPe3gQ/vKlbVePH3CBP/55Cc/gXq1/D/mT34CRUVw7bWwaVPtxhARkeym0C4itbNmDbRqBc2aRV1J1bp394urr1xZ45c659dk79ULRoyofQkNGsAjj8COHbWbrRcREVFoF5HaSfXlHmNiK8jUoq99+nT44AO45RZ/g9W66NUL7rgDJk2IYxLTAAAgAElEQVSC556r21giIpJ9FNpFpHbWrk2P0N69u9/Woq/97rv9Wxw7NjGl3Hqrv+nSNdfA1q2JGVNERLKDQruI1M6aNanfzw7QvLlP3jWcaX/nHZg1C266CRo1SkwpDRvCww/D5s1w222JGVNERLKDQruI1Nz+/bBhQ3rMtINvkalhaL/nHjjiCPj2txNbSmGh/yDw17/CG28kdmwREclcCu0iUnPr1vmrNNMptC9b5muOw9atvu/8yiuhZcvEl3PnndChA1x9da0XtRERkSyj0C4iNZcON1Yqq6AAPv/8y7qr8eyzPkxffHE45TRvDvff7y9yHT8+nHOIiEhmUWgXkZpLlzXaY2IXo8bZIjNhgr+R6oknhlfSyJEwapSfdS8uDu88IiKSGRTaRaTm0nGmHeIK7evWwauvwrhxdV/msTp//CPUr+/bZOLs3BERkSyl0C4iNbd2LTRt6m+ulA7atoXWreNa9vHpp32AHjcu/LI6dIDf/hZefhkefzz884mISPpSaBeRmovdWCnsqehEMfMtMnHMtE+YAH37fjk5H7ZrroGBA+H734f165NzThERST8K7SJSc+myRntZcSz7uGoVvPVWcmbZY+rVg4cegi++gOuuS955RUQkvSi0i0jNxWba00lBAWzcWOWtSCdO9NtE3QE1Xt26wc9/DlOmwOTJyT23iIikB4V2EamZ0lL49NP0C+2xFWSq6GufMMG3qnTqlKSayvjhD/1qNd/5Dnz0UfLPLyIiqU2hXURqZvNmOHAAjj026kpqppoVZFas8OumX3RREmsqo2FDP9NfUgIXXgj79kVTh4iIpCaFdhGpmXXr/DbdQnteHjRuXOlM+0sv+e255yavpPI6d4aH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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"\n",
"\n",
"ax1 = sns.distplot(df['price'], hist=False, color=\"r\", label=\"Actual Value\")\n",
"sns.distplot(Yhat, hist=False, color=\"b\", label=\"Fitted Values\" , ax=ax1)\n",
"\n",
"\n",
"plt.title('Actual vs Fitted Values for Price')\n",
"plt.xlabel('Price (in dollars)')\n",
"plt.ylabel('Proportion of Cars')\n",
"\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see that the fitted values are reasonably close to the actual values, since the two distributions overlap a bit. However, there is definitely some room for improvement.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 3: Polynomial Regression and Pipelines</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><b>Polynomial regression</b> is a particular case of the general linear regression model or multiple linear regression models.</p> \n",
"<p>We get non-linear relationships by squaring or setting higher-order terms of the predictor variables.</p>\n",
"\n",
"<p>There are different orders of polynomial regression:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center><b>Quadratic - 2nd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 \n",
"$$\n",
"\n",
"\n",
"<center><b>Cubic - 3rd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 +b_3 X^3\\\\\n",
"$$\n",
"\n",
"\n",
"<center><b>Higher order</b>:</center>\n",
"$$\n",
"Y = a + b_1 X^2 +b_2 X^2 +b_3 X^3 ....\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We saw earlier that a linear model did not provide the best fit while using highway-mpg as the predictor variable. Let's see if we can try fitting a polynomial model to the data instead.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We will use the following function to plot the data:</p>"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def PlotPolly(model, independent_variable, dependent_variabble, Name):\n",
" x_new = np.linspace(15, 55, 100)\n",
" y_new = model(x_new)\n",
"\n",
" plt.plot(independent_variable, dependent_variabble, '.', x_new, y_new, '-')\n",
" plt.title('Polynomial Fit with Matplotlib for Price ~ Length')\n",
" ax = plt.gca()\n",
" ax.set_facecolor((0.898, 0.898, 0.898))\n",
" fig = plt.gcf()\n",
" plt.xlabel(Name)\n",
" plt.ylabel('Price of Cars')\n",
"\n",
" plt.show()\n",
" plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets get the variables"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = df['highway-mpg']\n",
"y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's fit the polynomial using the function <b>polyfit</b>, then use the function <b>poly1d</b> to display the polynomial function."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3 2\n",
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\n"
]
}
],
"source": [
"# Here we use a polynomial of the 3rd order (cubic) \n",
"f = np.polyfit(x, y, 3)\n",
"p = np.poly1d(f)\n",
"print(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's plot the function "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PlotPolly(p, x, y, 'highway-mpg')"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.polyfit(x, y, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can already see from plotting that this polynomial model performs better than the linear model. This is because the generated polynomial function \"hits\" more of the data points.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #4:</h1>\n",
"<b>Create 11 order polynomial model with the variables x and y from above?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"f = np.polyfit(x, y, 11)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# calculate polynomial\n",
"# Here we use a polynomial of the 11rd order (cubic) \n",
"f1 = np.polyfit(x, y, 11)\n",
"p1 = np.poly1d(f1)\n",
"print(p)\n",
"PlotPolly(p1,x,y, 'Highway MPG')\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The analytical expression for Multivariate Polynomial function gets complicated. For example, the expression for a second-order (degree=2)polynomial with two variables is given by:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 +b_2 X_2 +b_3 X_1 X_2+b_4 X_1^2+b_5 X_2^2\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can perform a polynomial transform on multiple features. First, we import the module:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.preprocessing import PolynomialFeatures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create a <b>PolynomialFeatures</b> object of degree 2: "
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"pr"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": true
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Z' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-45-cc0a37916af1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mZ_pr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mpr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit_transform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'Z' is not defined"
]
}
],
"source": [
"Z_pr=pr.fit_transform(Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original data is of 201 samples and 4 features "
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Z' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-46-a7c081438512>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mZ\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'Z' is not defined"
]
}
],
"source": [
"Z.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"after the transformation, there 201 samples and 15 features"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Z_pr' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-47-ef9efd2d646f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mZ_pr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'Z_pr' is not defined"
]
}
],
"source": [
"Z_pr.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Pipeline</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Data Pipelines simplify the steps of processing the data. We use the module <b>Pipeline</b> to create a pipeline. We also use <b>StandardScaler</b> as a step in our pipeline.</p>"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create the pipeline, by creating a list of tuples including the name of the model or estimator and its corresponding constructor."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Input=[('scale',StandardScaler()), ('polynomial', PolynomialFeatures(include_bias=False)), ('model',LinearRegression())]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we input the list as an argument to the pipeline constructor "
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe=Pipeline(Input)\n",
"pipe"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can normalize the data, perform a transform and fit the model simultaneously. "
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Z' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-51-e6630a583109>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpipe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'Z' is not defined"
]
}
],
"source": [
"pipe.fit(Z,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Similarly, we can normalize the data, perform a transform and produce a prediction simultaneously"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Z' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-52-6a957783f163>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mypipe\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mpipe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mypipe\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'Z' is not defined"
]
}
],
"source": [
"ypipe=pipe.predict(Z)\n",
"ypipe[0:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #5:</h1>\n",
"<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"Input=[('scale',StandardScaler()),('model',LinearRegression())]\n",
"\n",
"pipe=Pipeline(Input)\n",
"\n",
"pipe.fit(Z,y)\n",
"\n",
"ypipe=pipe.predict(Z)\n",
"ypipe[0:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"</div>\n",
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"Input=[('scale',StandardScaler()),('model',LinearRegression())]\n",
"\n",
"pipe=Pipeline(Input)\n",
"\n",
"pipe.fit(Z,y)\n",
"\n",
"ypipe=pipe.predict(Z)\n",
"ypipe[0:10]\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 4: Measures for In-Sample Evaluation</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When evaluating our models, not only do we want to visualize the results, but we also want a quantitative measure to determine how accurate the model is.</p>\n",
"\n",
"<p>Two very important measures that are often used in Statistics to determine the accuracy of a model are:</p>\n",
"<ul>\n",
" <li><b>R^2 / R-squared</b></li>\n",
" <li><b>Mean Squared Error (MSE)</b></li>\n",
"</ul>\n",
" \n",
"<b>R-squared</b>\n",
"\n",
"<p>R squared, also known as the coefficient of determination, is a measure to indicate how close the data is to the fitted regression line.</p>\n",
" \n",
"<p>The value of the R-squared is the percentage of variation of the response variable (y) that is explained by a linear model.</p>\n",
"\n",
"\n",
"\n",
"<b>Mean Squared Error (MSE)</b>\n",
"\n",
"<p>The Mean Squared Error measures the average of the squares of errors, that is, the difference between actual value (y) and the estimated value (ŷ).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 1: Simple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.7609686443622008\n"
]
}
],
"source": [
"#highway_mpg_fit\n",
"lm.fit(X, Y)\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(X, Y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The output of the first four predicted value is: [[13728.4631336 ]\n",
" [13728.4631336 ]\n",
" [17399.38347881]\n",
" [10224.40280408]]\n"
]
}
],
"source": [
"Yhat=lm.predict(X)\n",
"print('The output of the first four predicted value is: ', Yhat[0:4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets import the function <b>mean_squared_error</b> from the module <b>metrics</b>"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.metrics import mean_squared_error"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value is: 15021126.02517414\n"
]
}
],
"source": [
"mse = mean_squared_error(df['price'], Yhat)\n",
"print('The mean square error of price and predicted value is: ', mse)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 2: Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# fit the model \n",
"lm.fit(Z, df['price'])\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(Z, df['price']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we produce a prediction "
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Z' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-58-83d74563157c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mY_predict_multifit\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'Z' is not defined"
]
}
],
"source": [
"Y_predict_multifit = lm.predict(Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'Y_predict_multifit' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-59-e0f4ee3cd870>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m print('The mean square error of price and predicted value using multifit is: ', \\\n\u001b[0;32m----> 2\u001b[0;31m mean_squared_error(df['price'], Y_predict_multifit))\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'Y_predict_multifit' is not defined"
]
}
],
"source": [
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Y_predict_multifit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 3: Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let’s import the function <b>r2_score</b> from the module <b>metrics</b> as we are using a different function"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.metrics import r2_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We apply the function to get the value of r^2"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square value is: 0.6741946663906517\n"
]
}
],
"source": [
"r_squared = r2_score(y, p(x))\n",
"print('The R-square value is: ', r_squared)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 67.419 % of the variation of price is explained by this polynomial fit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>MSE</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also calculate the MSE: "
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"20474146.426361226"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_squared_error(df['price'], p(x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 5: Prediction and Decision Making</h2>\n",
"<h3>Prediction</h3>\n",
"\n",
"<p>In the previous section, we trained the model using the method <b>fit</b>. Now we will use the method <b>predict</b> to produce a prediction. Lets import <b>pyplot</b> for plotting; we will also be using some functions from numpy.</p>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a new input "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"new_input=np.arange(1, 100, 1).reshape(-1, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Fit the model "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lm.fit(X, Y)\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Produce a prediction"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"yhat=lm.predict(new_input)\n",
"yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can plot the data "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"plt.plot(new_input, yhat)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Decision Making: Determining a Good Model Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Now that we have visualized the different models, and generated the R-squared and MSE values for the fits, how do we determine a good model fit?\n",
"<ul>\n",
" <li><i>What is a good R-squared value?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the higher R-squared value is a better fit</b> for the data.\n",
"<ul>\n",
" <li><i>What is a good MSE?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the smallest MSE value is a better fit</b> for the data.</p>\n",
"\n",
"\n",
"<h4>Let's take a look at the values for the different models.</h4>\n",
"<p>Simple Linear Regression: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.49659118843391759</li>\n",
" <li>MSE: 3.16 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Multiple Linear Regression: Using Horsepower, Curb-weight, Engine-size, and Highway-mpg as Predictor Variables of Price.\n",
"<ul>\n",
" <li>R-squared: 0.80896354913783497</li>\n",
" <li>MSE: 1.2 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Polynomial Fit: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.6741946663906514</li>\n",
" <li>MSE: 2.05 x 10^7</li>\n",
"</ul>\n",
"</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Usually, the more variables you have, the better your model is at predicting, but this is not always true. Sometimes you may not have enough data, you may run into numerical problems, or many of the variables may not be useful and or even act as noise. As a result, you should always check the MSE and R^2.</p>\n",
"\n",
"<p>So to be able to compare the results of the MLR vs SLR models, we look at a combination of both the R-squared and MSE to make the best conclusion about the fit of the model.\n",
"<ul>\n",
" <li><b>MSE</b>The MSE of SLR is 3.16x10^7 while MLR has an MSE of 1.2 x10^7. The MSE of MLR is much smaller.</li>\n",
" <li><b>R-squared</b>: In this case, we can also see that there is a big difference between the R-squared of the SLR and the R-squared of the MLR. The R-squared for the SLR (~0.497) is very small compared to the R-squared for the MLR (~0.809).</li>\n",
"</ul>\n",
"</p>\n",
"\n",
"This R-squared in combination with the MSE show that MLR seems like the better model fit in this case, compared to SLR."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: We can see that Polynomial Fit brought down the MSE, since this MSE is smaller than the one from the SLR.</li> \n",
" <li><b>R-squared</b>: The R-squared for the Polyfit is larger than the R-squared for the SLR, so the Polynomial Fit also brought up the R-squared quite a bit.</li>\n",
"</ul>\n",
"<p>Since the Polynomial Fit resulted in a lower MSE and a higher R-squared, we can conclude that this was a better fit model than the simple linear regression for predicting Price with Highway-mpg as a predictor variable.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: The MSE for the MLR is smaller than the MSE for the Polynomial Fit.</li>\n",
" <li><b>R-squared</b>: The R-squared for the MLR is also much larger than for the Polynomial Fit.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Conclusion:</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing these three models, we conclude that <b>the MLR model is the best model</b> to be able to predict price from our dataset. This result makes sense, since we have 27 variables in total, and we know that more than one of those variables are potential predictors of the final car price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment