Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save samruddhikhandale/9cbcf22a0ce8d2e223661673ffd5826f to your computer and use it in GitHub Desktop.
Save samruddhikhandale/9cbcf22a0ce8d2e223661673ffd5826f 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/skills_network_DA0101EN_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 4: Model Development</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some questions we want to ask in this module\n",
"<ul>\n",
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n",
" <li>do I know if I put a fair value on my car?</li>\n",
"</ul>\n",
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n",
"\n",
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 20,
"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/da0101en_object_storage_skills_network\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": 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": [
"from sklearn.linear_model import LinearRegression\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Create the linear regression object</h4>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lm.fit(X,Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can output a prediction "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the Slope (b)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"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": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"import pandas as pd\n",
"# 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()\n",
"lm = LinearRegression()\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1 = LinearRegression()\n",
"lm1 \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1 b): </h1>\n",
"\n",
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"X = df[['engine-size']]\n",
"Y = df['price']\n",
"lm.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",
"\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": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([166.86001569])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-7963.33890628])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# Slope \n",
"lm1.coef_\n",
"# Intercept\n",
"lm1.intercept_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 d): </h1>\n",
"\n",
"<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# You can type you answer here\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# using X and Y \n",
"Yhat=38423.31-821.733*X\n",
"\n",
"Price=38423.31-821.733*engine-size\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Multiple Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>What if we want to predict car price using more than one variable?</p>\n",
"\n",
"<p>If we want to use more variables in our model to predict car price, we can use <b>Multiple Linear Regression</b>.\n",
"Multiple Linear Regression is very similar to Simple Linear Regression, but this method is used to explain the relationship between one continuous response (dependent) variable and <b>two or more</b> predictor (independent) variables.\n",
"Most of the real-world regression models involve multiple predictors. We will illustrate the structure by using four predictor variables, but these results can generalize to any integer:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Y: Response \\ Variable\\\\\n",
"X_1 :Predictor\\ Variable \\ 1\\\\\n",
"X_2: Predictor\\ Variable \\ 2\\\\\n",
"X_3: Predictor\\ Variable \\ 3\\\\\n",
"X_4: Predictor\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"a: intercept\\\\\n",
"b_1 :coefficients \\ of\\ Variable \\ 1\\\\\n",
"b_2: coefficients \\ of\\ Variable \\ 2\\\\\n",
"b_3: coefficients \\ of\\ Variable \\ 3\\\\\n",
"b_4: coefficients \\ of\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The equation is given by"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>From the previous section we know that other good predictors of price could be:</p>\n",
"<ul>\n",
" <li>Horsepower</li>\n",
" <li>Curb-weight</li>\n",
" <li>Engine-size</li>\n",
" <li>Highway-mpg</li>\n",
"</ul>\n",
"Let's develop a model using these variables as the predictor variables."
]
},
{
"cell_type": "code",
"execution_count": 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": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"import pandas as pd\n",
"# 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",
"lm2 = LinearRegression()\n",
"Z = df[['normalized-losses', 'highway-mpg']]\n",
"lm2.fit(Z,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": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm2.coef_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>2) Model Evaluation using Visualization</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we've developed some models, how do we evaluate our models and how do we choose the best one? One way to do this is by using visualization."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"import the visualization package: seaborn"
]
},
{
"cell_type": "code",
"execution_count": 19,
"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, 48273.30648666074)"
]
},
"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": 23,
"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": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[[\"peak-rpm\", \"highway-mpg\",\"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The variable \"peak-rpm\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"highway-mpg\" which is approximate -0.101616. You can verify it using the following command:\n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Residual Plot</h3>\n",
"\n",
"<p>A good way to visualize the variance of the data is to use a residual plot.</p>\n",
"\n",
"<p>What is a <b>residual</b>?</p>\n",
"\n",
"<p>The difference between the observed value (y) and the predicted value (Yhat) is called the residual (e). When we look at a regression plot, the residual is the distance from the data point to the fitted regression line.</p>\n",
"\n",
"<p>So what is a <b>residual plot</b>?</p>\n",
"\n",
"<p>A residual plot is a graph that shows the residuals on the vertical y-axis and the independent variable on the horizontal x-axis.</p>\n",
"\n",
"<p>What do we pay attention to when looking at a residual plot?</p>\n",
"\n",
"<p>We look at the spread of the residuals:</p>\n",
"\n",
"<p>- If the points in a residual plot are <b>randomly spread out around the x-axis</b>, then a <b>linear model is appropriate</b> for the data. Why is that? Randomly spread out residuals means that the variance is constant, and thus the linear model is a good fit for this data.</p>"
]
},
{
"cell_type": "code",
"execution_count": 24,
"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": 28,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Yhat = lm2.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"image/png": "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\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": 31,
"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() #return axis\n",
" ax.set_facecolor((0.898, 0.898, 0.898))\n",
" fig = plt.gcf() #returns figure handle\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": 32,
"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": 33,
"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": 34,
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": 37,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 11 10 9 8 7\n",
"-1.243e-08 x + 4.722e-06 x - 0.0008028 x + 0.08056 x - 5.297 x\n",
" 6 5 4 3 2\n",
" + 239.5 x - 7588 x + 1.684e+05 x - 2.565e+06 x + 2.551e+07 x - 1.491e+08 x + 3.879e+08\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ0AAAEWCAYAAAC9qEq5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8VNX5+PHPM5OVLISELRAWFbQgyKKilbq3ClaFWq1arba1X9p+tWprF61t7Wb3Vmu1fkvViv5cayvQKiouaNUii6BsKlERwk5CICRkmZnn98c9gUkymawzd0Ke9+uVV+aeuz1zk7nP3HPOPVdUFWOMMSYZAn4HYIwxpvewpGOMMSZpLOkYY4xJGks6xhhjksaSjjHGmKSxpGOMMSZpLOn0ACLyYxH5f37HEU1ELhOR59q5bKfiF5Hvi8g9HY+uze3+n4j8MM78lDvesYjIBhH5ZCfXPfAeRWS4iOwTkaCbXiQiX+nAtr4uItvdNoo6E09XiMgCEbky2ftNZR39GyaTJZ0kcieJ/e7DuV1E/iYiuX7H1Rmq+pCqntXV7YjIaSISccek8edfbh+/UNWvuOVGioiKSFo3xP41Vf1Z1P7Luvge1P0906LK0kRkh4i060a47oijs9tW1Y2qmquq4U5sOx34A3CW20Z5V2J12+zQ50RVp6vqnK7utzv4cbLvKV+SGlnSSb7zVDUXmAwcD/zA53hSwRZ3wmr8Oc/vgDqhEpgeNX0OsNunWJJpEJAFrOnoiuJp7RzU5uekjfVNirI/mE9UdTOwABgHICJDRGS+iFSISKmI/E+s9UTkKRH5RrOyt0VkpnutIvI1EVkvIrtF5C4RETcvICI/EJGP3LfwB0Skr5vXeCXxJRHZ5Nb9mogc77ZfKSJ3Ru3ziyLyatT0H916e0VkuYic3NVj1Owb3Cvud6X7BvzxZstmuW/H/d30D0QkJCL5bvrnInK7e32/m87B+xsMibrKGuI2meGOT5WIrBGR49oI90HgiqjpK4AHmsX4JRFZ57b5gYh81ZXHjMO9/ydE5DG3zpsiMqGVY5UpIreLyBb3c7sri/ceG9eNdRV5hIgsEZE9IjJPRApj7PNI4F03WSkiL7ryk0RkqVt3qYicFLXOIhG5VUReA2qAw+Md1BifkxbrN7+6EJH/iTrOa0VksisfIiL/EJGdIvKhiFwbb9/dTUROFJHX3WfpLRE5LWreIhH5mYi85uJ+rvF/2c2/wn1uy0Xkh+KqVkVkGvB94GL3t30rapcjWtuenyzp+EREhuF9G17hih4ByoAhwIXAL0TkzBirzgEuj9rOBGAo8HTUMufifTucAHwOONuVf9H9nI73Yc8F7qSpE4DRwMXA7cDNwCeBo4HPiciprbylpcBEoBB4GPi7iGS1smxnnOJ+F7irof9Gz1TVWhfDqVHLfwRMjZp+udk61XhXJ9FXWlvc7POBR4ECYD4tj1Nzc4FTRKRARAqAk4F5zZbZgfe3yQe+BNwmIpPbiGMG8HcOHte54lVpNXczcCLe32ACMAX4QRvbjucK4Mt4/48h4I7mC6jqe3j/F+D9Xc5wyekpt3wRXtXbU9K0recLwCwgD+9v1KoYn5O464vIRcCPXfz5eH/HcvGuiP4FvIX3eTkTuF5EzqaDRLwvcR1cZyjecfk53t/y28A/RGRA1GKfx/u/GAhkuGUQkbHAn4HLgGKgr3sPqOozwC+Ax9zfdkJb2/ObJZ3kmysilcCreCfBX7gP1ieA76lqraquBO7B+3A1Nw8YLSKj3fQX8P7h6qOW+ZWqVqrqRuAlvBMReP+0f1DVD1R1H3ATcEmzb7g/czE8B1QDj6jqDveN8z/ApFhvSlX/n6qWq2pIVX8PZAJHtfOYDHHf/hp/PtfO9Zp7GTjVvZ9j8E58p7rkd7yLv71eVdWnXTvHg3gn8nhq8U5qFwOX4CWq2ugFVPUpVX1fPS8Dz+Elp3iWq+oTqtqAdwLPwksuzV0G/NT9rXYCPyH2/097Paiqq13S+iHeF45gO9b7NLBeVR90/wuPAO8A0VWm96vqGje/oZXttPictHP9rwC/UdWl7jiXqupHeH//Aar6U1WtV9UPgL/i/a1aEJGhIvKou2pcISLXu7IJeF8wOupy4Gn3PxVR1YXAMryE2uhvqvqequ4HHufg5/ZC4F+q+qr7nP8IaE9bYWvb81WXG2VNh81U1eejC1x1R4WqVkUVfwS0qNJR1ToReRy4XER+AlyK908ZbVvU6xq8KxrwvrVGfzP8CO9/YFBU2fao1/tjTMds0BWRG/A+8EPwPhD5QHsv57eoakk7l43nZbwT82RgFbAQuBfvJF2qqrs6sK3mxzBLRNJUNRRnnQeAXwICfK/5TBGZDtwCHIn3ha+PizOeTY0vVDUiXoeAITGWi/W3jbVce22Kev0RkI7399wee/FW42hcf2gr225Ni89JO9cfBrwfo3wE7stNVFmQ1r+IXIR3hXkZ3sn6arxqrM14f+OOGgFcJCLRyTcd70tho3if2+j/gxoRaU+Hjda25ytLOqlhC1AoInlRiWc43j94LHPwvn2/CtQ0r2pqYz8joqaH41WdbAc6fdIXr/3me3hVFmvcyXE33sm3u7Tnm93reFdXnwFeVtW1IjIc79v3y62s053DrP8Hr/pD8f42RzTOEJFM4B941T7zVLVBROZy8Bi1FsewqG0E8P5OsarHGv+2jQ36w6OW68x7HBb1ejjQALQnaTf/H2tc/5mo6a4e83jrbyLquDcr/1BVR8eYF8sdqhpxr5fjVTV2xSa8q8eYbbVt2EpUrYGIZONVXTbqUY8KsOq1FKCqm/BOmL8Ur0H8GOAq4KFWlv8vEAF+j5d82usR4Jsicph4XVAb64LjfXtvjzy85LUTSBORH+Fd6XSnnXjvudWGZ1WtwTtBXM3BJPM68FVaTzrbgSJxHSq6Qr3nhJwHnK8tnxmSgVfluBMIuaue6C7nrcVxrIhc4KoMrwfqgMUxdv8I8AMRGeAajH8ENHbC6Mx7vFxExopIH+CnwBPt7FL9NHCkiHxevG7jFwNjgX93YN9dcQ/wbRE5VjyjRGQEsATYKyLfE5FsEQmKyDgROT7WRqISTmekuc9x40863t/iPBE52+07S7yu7O35sveEW/ckEcnAqzqN/kK3HRgpPaQnX48Ispe4FBiJ903xSeAWV+/bmgeA8Rw8sbTHfXhJ6hXgQ7w2h2/EXaN9nsXrYfQeXlVKLe2rQmk3l1BuBV5z7T6x2jXASy7peCeZxuk8DvZ+a77dd/BO2B+47XalSgrX1tCi+7C7gr0Wr259N14j7/x2xDEPr51oN14bzQWttIP8HK+N4G28Krs3XVln3+ODwP14VTRZLvY2qXefzrnADUA58F3g3A5WbXaaqv4d7//kYaAKr/2l0CXM8/Cqyj7Eu2q7B69RvrvdjVcV3fjzN/fFcgZeFd1OvM/Hd2jHOdj9P30Dr2PLVrz3tQPvCwh41YDgdZh4s/veRmJIyy9kpicQkSuAWar6Cb9jMYkhIj8GRqnq5W0ta3oPV0tRCYxW1Q/9jqej7EqnB3JVHv8LzPY7FmNM4onIeSLSR7z7rn6HdzW7wd+oOseSTg/j7ivYiVeP+7DP4RhjkmMGXtX7Frz76C6J0W7YI1j1mjHGmKSxKx1jjDFJY/fpNFNYWKjDhg1re0FjjDEHvP3227tUdUBby1nSaWbYsGEsWLDA7zCMMaZHGTp0aNxx9BpZ9ZoxxpiksaRjjDEmaSzpGGOMSRpLOsYYY5LGko4xxpiksaRjjDEmaSzpGGOMSRpLOt0kc+PL5K78q99hGGNMSrOk000yNy8mb/ldEGnPc66MMaZ3sqTTTRqKjkLCdQT3bvQ7FGOMSVmWdLpJQ+GRAKRXvOtzJMYYk7os6XSTUMERqARJL7ekY4wxrbGk013SMgn1HUlaxXt+R2KMMSnLkk43ChUeSbolHWOMaZWvSUdENojIKhFZKSLLXFmhiCwUkfXudz9XLiJyh4iUisjbIjI5ajtXuuXXi8iVUeXHuu2XunUlke+noego0qrKkPp9idyNMcb0WKlwpXO6qk5U1ePc9I3AC6o6GnjBTQNMx3s2+GhgFnA3eEkKuAU4AZgC3NKYqNwys6LWm5bIN9LYmSCtYn0id2OMMT1WKiSd5mYAc9zrOcDMqPIH1LMYKBCRYuBsYKGqVqjqbmAhMM3Ny1fV/6qqAg9EbSshQkVHAdaDzRhjWuN30lHgORFZLiKzXNkgVd0K4H4PdOVDgU1R65a5snjlZTHKWxCRWSKyTESWlZeXd/rNhHOKiWTkWdIxxphW+P246qmqukVEBgILReSdOMvGao/RTpS3LFSdDcwGmDBhQsxl2kWEhsIjSSu3zgTGGBOLr1c6qrrF/d4BPInXJrPdVY3hfu9wi5cBw6JWLwG2tFFeEqM8oQ70YNPO5y5jjDlU+ZZ0RCRHRPIaXwNnAauB+UBjD7QrgXnu9XzgCteL7URgj6t+exY4S0T6uQ4EZwHPunlVInKi67V2RdS2Eqah8CgCDfsI7kt4fjPGmB7Hz+q1QcCTrhdzGvCwqj4jIkuBx0XkKmAjcJFb/mngHKAUqAG+BKCqFSLyM2CpW+6nqlrhXn8duB/IBha4n4RqKGrswfYe4byYTUjGGNNr+ZZ0VPUDYEKM8nLgzBjlClzdyrbuA+6LUb4MGNflYDsg1M+NwVb+LnUjTk/mro0xJuX53XvtkKMZOYTySqwHmzHGxGBJJwEaCo+yMdiMMSYGSzoJ0NB/DGl7NiC1u/0OxRhjUoolnQSoG34qohGyPlrkdyjGGJNSLOkkQEP/ownlFpP94XN+h2KMMSnFkk4iiFA78lNklr2G1FcDsGprNQ8s3caqrdU+B2eMMf6xpJMgtYefhUQayNy4iFVbq7n2yfXMXryVa59cb4nHGNNrWdJJkPqBEwln9yd7w/OsKKuiIaxEFBrCyoqyKr/DM8YYX1jSSZRAkNqRZ5K58RWOLU4nPSgEBNKDwqSSPL+jM8YYX/g9yvQhrfawT5Gz7jGODa3kjs+cyIqyKiaV5DG+OMfv0IwxxheWdBKobsgUIpl9yfpwIeNPP9OSjTGm17PqtUQKpFM74nSyPnoJCe33OxpjjPGdJZ0Eq/nYhQTq95LzVovxSI0xptexpJNg9YOPZf/h08lb+VeCVZv9DscYY3xlSScJ9pz4HRQhf/Fv/Q7FGGN8ZUknCSK5xeybNIvsD58lY/Niv8NpNxtFwRjT3SzpJMkbAy+mMqOYzFd+BuF6v8Npk42iYIxJBEs6SbBqazXXzN/IDdWXk1f1AWn//gZEGvwOKy4bRcEYkwi+Jx0RCYrIChH5t5s+TETeEJH1IvKYiGS48kw3Xermj4zaxk2u/F0ROTuqfJorKxWRG5P93ho1nsBfCE/iRw1fYuD2V+j34nchEvYrpDZNKsmzURSMMd3O96QDXAesi5r+NXCbqo4GdgNXufKrgN2qOgq4zS2HiIwFLgGOBqYBf3aJLAjcBUwHxgKXumWTLvoE/picxbtjryP7g2coeOUHKZt4xhfncMdnRjPrxGLu+Mxou7HVGNMtfB2RQERKgE8DtwLfEhEBzgA+7xaZA/wYuBuY4V4DPAHc6ZafATyqqnXAhyJSCkxxy5Wq6gduX4+6Zdcm+G210HgCbxwGJ694Inuzw+QvvxOp20vlGb9B01PvpD6+OMeSjTGmW/l9pXM78F0g4qaLgEpVDbnpMmCoez0U2ATg5u9xyx8ob7ZOa+UtiMgsEVkmIsvKy8u7+p5iGl+cwxXHDz5wEt937NVUnvQDsjYuov/8ywns25qQ/RpjTCrxLemIyLnADlVdHl0cY1FtY15Hy1sWqs5W1eNU9biioqI4UXevmnGXUTHt/wju3cSAJz9H2q6kX4QZY0xS+XmlMxU4X0Q2AI/iVavdDhSISGO1Xwmwxb0uA4YBuPl9gYro8mbrtFaeUuqGncyuGY+gwXT6/+sKMra84XdIxhiTML4lHVW9SVVLVHUkXkeAF1X1MuAl4EK32JXAPPd6vpvGzX9RVdWVX+J6tx0GjAaWAEuB0a43XIbbx/wkvLUOCxWOZtf5DxPOLabo6f8h68Pn/A7JGGMSwu82nVi+h9epoBSvzeZeV34vUOTKvwXcCKCqa4DH8ToIPANcraph1+5zDfAsXu+4x92yKSmSO5hd5z1Iw4Cj6ff8N8ku/bffIRljTLcT72LBNJowYYIuWLDAt/1LaD+FC75KxvaVVEy7m7qSqb7FYowx7TV06NDlqnpcW8ul4pVOr6Zp2VScfRehgsPpt/Ba0nd27eIsVcdPS9W4jDGJZUknBWlGHuXTZxPJLKDwma8S3Lup7ZViSNXx01I1LmNM4lnSSVGRnIGUn3MPEgnR7/nrOzVIaKqOn5aqcRljEs+STgporaopXHAYu0/7JRm71pK/+Dcd3m6qjp+WqnEZYxLP12FwzMGqpoawkh7c1mKcs7oRp7Nv/BfJXXU/9cVTqD38rJjbaBxiJ3rd5sPvpMqQNqkalzEm8Szp+CxWVVPzk/Drw7/KuPcXM2DRzTT0H0M4/+A9r20lrVQdPy1V4zLGJJZVr/msraqmVVur+ca8DVy8++vsb4iQvvBG0MiB+dY+YozpSSzp+KytRwg0JpVNOoBbQ5dTWP4mfdb9/cB8ax8xxvQkVr2WAuJVNU0qySMY2IaGlX9yGt/tv5J+b/yW2uGnEMkt7rHtI621QxljDm12pdMjHBw1Ys0x3weNUPDqT8CNJtH8sQmpzu7TMab3sqST4laUVRGOeGknHIHXd/el6rhrydr4MtnvP+V3eJ1i7VDG9F6WdFJcrDab6nFfoH7AePL/+2ukfp/fIXaYtUMZ03tZ0klxMTsaBILsmfpDAvvLyVt+l98hdtj44hyuO6WE44blcd0pJT2mWtAY03XWkaAHiNXRoGHgeGo+9llyVj/IyqLpvLpnYI9plF+1tZo/vlJGQ1h5a8s+jijK7hFxG2O6zq50erCqKd8ilJZD8MWfMnvxlh7TKG9tOsb0XpZ0erBIVj9eHPQlPh5Yw3R5o8ecwL1u4IIAwYC16RjTm1jS6ekmfp61OoLvpz9MbrChB53AtdlvY0xvYEmnhxs/JJ99U29mqOziH0f/t1vbRhL1oLXm3cB7wtWZMaZ7+JZ0RCRLRJaIyFsiskZEfuLKDxORN0RkvYg8JiIZrjzTTZe6+SOjtnWTK39XRM6OKp/mykpF5MZkv8dkKRl3MvsPO5sj3p9DoHp7t2wzkTdwWpdpY3ovP6906oAzVHUCMBGYJiInAr8GblPV0cBu4Cq3/FXAblUdBdzmlkNExgKXAEcD04A/i0hQRILAXcB0YCxwqVv2kLT3hG8jGib/jd93y/YS2djf1nhzxphDl29JRz2Ndzamux8FzgCecOVzgJnu9Qw3jZt/poiIK39UVetU9UOgFJjifkpV9QNVrQcedcseksL5Jewb/0X6lP6L9O0ru7y9RF+N9LShe4wx3cPXNh13RbIS2AEsBN4HKlU15BYpA4a610OBTQBu/h6gKLq82TqtlceKY5aILBORZeXl5d3x1nyxb+Iswn0G0Pf1XzZ5/EFn2NWIMSYRfE06qhpW1YlACd6VyZhYi7nf0sq8jpbHimO2qh6nqscVFRW1HXiK0owc9k75Fhk73yZ7/fwub8+uRowx3S0leq+paiWwCDgRKBCRxpESSoAt7nUZMAzAze8LVESXN1untfJD2v7R51M/4Bjyl/wBqU/9G0WNMb2Ln73XBohIgXudDXwSWAe8BFzoFrsSmOdez3fTuPkvqqq68ktc77bDgNHAEmApMNr1hsvA62zQ9a//qU4C7Jn6fYI1O8ld+Re/o2nV3NW7uH5uKXNX7/I7FGNMEvk59loxMMf1MgsAj6vqv0VkLfCoiPwcWAHc65a/F3hQRErxrnAuAVDVNSLyOLAWCAFXq2oYQESuAZ4FgsB9qromeW/PPw0DJ1Azega5b99PzccuJJw/3O+Qmpi7ehe/edFrbluy0esVN3Ncfz9DMsYkiajaHeHRJkyYoAsWLPA7jC4LVO9g4GPTqRt6IrvPTq2RqK+fW3og2QBMGZ7H7TNH+RiRMaarhg4dulxVj2truTar10QkR0QC7vWRInK+iKR3R5AmcSI5A9k3+etkf/QimR+95Hc4TZw2qiDutDHm0NWe6rVXgJNFpB/wArAMuBi4LJGBma7bN/4KstfPpe/rt7Jz6IloWrbfIQEHq9IWlVZy2qgCq1ozphdpT0cCUdUa4ALgT6r6Gbw7/E2qC2awZ+qPSKvaTO6K1OpUMHNcf26fOcoSjjG9TLuSjoh8HO/K5ilXZg9/6yHqh0zxOhW8dR9plR/4HY4xppdrT9K5DrgJeNL1FDscr1uz6SH2nvgdNC2bvq/+FFKk40iiRrA2xqS2uFcsrjvzeap6fmOZqn4AXJvowEz3iWQXsfeEGyj4zy30WfcYNWMv8TWexhGsG8JKenCbDbNjTC8S90rH3e9ybJJiMQlU87GLqB16EvmLf0twb5mvsawoq6I+5EawDvWMp50aY7pHe6rXVojIfBH5gohc0PiT8MhM9xJhz6k/AxEKXr65ywOCdkV+dtqBQfAibtoY0zu0J+kUAuV4jxw4z/2cm8igTPeJbjsJ5w5h78dvJHPrEvqsecS3mPbuDx0YjVXctDGmd2jzK6aqfikZgZjuF7Pt5KjPkvXhc+S/8TvqhxxPqPDIpMc1qSSPjLRtLi57cqgxvUmbSUdEsvCe2nk0kNVYrqpfTmBcphvEevrn+OIcKk+9lQH/uIDChdex8zNPoBnJbcRvfFbPirIqJpXkWScCY3qR9lSvPQgMBs4GXsZ7RIC1/PYArT39M9JnALvP/D3BvRspeOUHvnSjtmf1GNM7tSfpjFLVHwLVqjoH+DQwPrFhme4Q7+mf9UOmUHX89WR/8Aw5ax5KemxduU/H7vExpudqT7ehBve7UkTGAduAkQmLyHSr8cU5rV5N7JtwFRnbVpD/318T6juCumEnJyWmrtyns2prNdf8cz2hsJIW3MadF9g9Psb0JO250pntBvv8Ad5D0NYCv0loVCY5JMDuM35NqHA0/RZeR/qOt5Ky21htTe21YF0FDWFF8dZdsK4icYEaY7pdm0lHVe9R1d2q+oqqHq6qA1X1/5IRnEk8zcijfPpfiGT3p2jBV0nb/X671+1sNVdrbU3tjLiNaWNMKms16YjIt0Tkqhjl3xCR6xMblkmmSJ8BlH/6HjSQTtHTXyFY+WGb6zRWkc1evJVrn1zfocQTr62pLdPHFJEe9O7vSQ96083Zo7CNSV3xrnS+jNdzrbnZbl6XiMgwEXlJRNaJyBoRuc6VF4rIQhFZ7373c+UiIneISKmIvC0ik6O2daVbfr2IXBlVfqyIrHLr3CEi0jISAxDOH075OX+FSAMD5l1KxrY34y7flSoy6HzvtfHFOdx5wZF89ePF3HnBkS3Wb3wU9pKNVfzmxU2WeIxJMfGSjqpqfYzCOqA7Tt4h4AZVHQOcCFwtImOBG4EXVHU03kPjbnTLTwdGu59ZwN3gJSngFuAEYApwS2OicsvMilpvWjfEfcgKFX2MXTMeIZJVQNFTXyLrg+daXbZrVWRdEy9hLSqtjDttjPFX3DYdERnUnrLOUNWtqvqme10FrAOGAjOAOW6xOcBM93oG8IB6FgMFIlKMd//QQlWtUNXdwEJgmpuXr6r/VVUFHojalmlFOH8Yu2Y8QkP/sfR7/nryX/8FEtrfYrnxxTlcd0oJxw3L47pTSlKmB5k9CtuY1Bavy/RvgadE5Aagsa7lWLyea7/rziBEZCQwCXgDGKSqW8FLTCIy0C02FNgUtVqZK4tXXhaj3LQhktWPXZ/+G30X/5bc1Q+StekVdp/6SxoGTzqwzKqt1fzxlTIawspbW/ZxRFF2SiQeexS2Mamt1aSjqg+IyE7gp8A4vG5Ca4BbVHVBdwUgIrnAP4DrVXVvnGaXWDO0E+WxYpiFVw3H0KGWlwBIy+LVI75Fef1xzNz8O/rPv4zaw8+matLXCBUd1eoQO+21amt1wobBmTmuvyUbY1JU3JtDXXLptgTTnIik4yWch1T1n654u4gUu6ucYmCHKy8DhkWtXgJsceWnNStf5MpLYizfgqrOxusgwYQJE6wPLtE3cA7md8Gf88TH/sPIjx4n+4Nn2D/iDM4aeA4PBwewL5ze4Tad9tzgmcikZIzxT3tuDk0I15PsXmCdqv4hatZ8oLEH2pXAvKjyK1wvthOBPa4a7lngLBHp5zoQnAU86+ZViciJbl9XRG3LtCH6QWuVoSwez7uC7Z9/gb3HXkPGtjeZvPTbvJn5NZ4aNJu5E99kcuC9mG0/sbR1g2db3bFtGJzksuNtupOfT8+aCnwBWCUiK13Z94FfAY+7e4Q2Ahe5eU8D5wClQA3wJQBVrRCRnwFL3XI/VdXGs9jXgfuBbLwrtoRdtR1qYj1oTTP7su/Yq9k3aRaZW5aQ9eFCjtzwAsHVi2A1qAQI9xlEJGcg4ZzB7IrksHl/BoWFhQwqLEDTsomkZTOsoorjRamiDxWaR2V10yuZxoSnHHyyaOPVTk9+1HVPvHrrycfbpKZWk46IXKeqfxSRqar6WnfvWFVfpfWu12fGWF6Bq1vZ1n3AfTHKl+G1R5kOin6wWosHrQXSqSuZSl3JVPZ84hYC1dvI2LWW9F1rCe7bQrB6G+Ed79Bn324mUUPmjqYPabsBIPPgdGRrAH2wkHDeEEIFozi5rpjVgXzejIymhqwmTxbtaltSWxKVGHrqyTvRx9v0PvGudL4E/BH4EzA5znLmEBR9olfiPFJahEhuMbW5xdSOPPhd4YGl25i9eCsRhSyp5+vHFXDJuFwktJ9X3tnC3OUbyKOGQqli5mFhxubsI62qjMxNrzB1/y6mZkBIA6zRkewvnUL6wJk0DDjG3R+UmAfAJTIx9NSTdyKPt+md4iWddSKyARggIm9HlQvehccxCY3M+KrxkdKN3QA7+kjpSSV5BAPb0LASDmTysZElhPO8k+z8cuHVyMGT16ZIPr869YgD0+98tJmHnn6eSfoOJwTfYcrOJwjMfZS3kMBAAAAgAElEQVRQTjFTDz+bez51Lq9VFrV6NdLW1Upr8xOZGKKPRzDQc07e9sA9093idZm+VEQG4zXUn5+8kEwq6I5HSodcZ4FQuGmHwF3VobjTHxsxlGNP/jSLSqcSGFVAyeh0sj56iewPniNnzUOcHLmfYbmT2R28FAafA3KwP0xbPePizU/8t3pt9rtniPd4DGM6Km7vNVXdpqoTgK1AnvvZoqofJSM445+uDMoJcPdrm5ucYu9+bfOBeece3XSQzubTjTeeLttUxR9fKePtijT2HzmTiml/ZtEn/80fwheTUfURk5Z9h/xHziOr9CmIhIG2e8bFm9/V9xzPirIqwhHvWIQjdHisOmMOFW32XhORU/GGkNmAV9MyTESuVNVXEhyb8Vlb33DjVWN9tLu21em2Rg2IV831xs4MZodmcJeeyznBJfwoNJ8BL36bhjfvZu8JN1BRPbzJtipqGmgq/qMREvWt3tpGjPG0p8v0H4CzVPVdABE5EngEb0gc00u11egeDDTtmNh8+oiibPbuD3FEUXaLbcc7QR+cF+Q5OYlzP/kFjq99jbxlf6Lo2f/l5uyJ7JBLeEe95FPYp+m/+PQxRTy1rpxQGNJaeTRCIljbiDGe9iSd9MaEA6Cq77mRBEwv1laje6DZcEbR020lrHgn6FjzaplG7cgzyVn7GCOW3MFTGTfxQPgsfhf6HEcO7NMkjsZHI/hx8re2EWPal3SWici9HHy2zmXA8sSFZHqCtqqLJg7N5bl3dzeZbtSeXmLxTtAx5wXSqR53Ob/eOokx6/+PK4PPcXZwKU9/cC2Mu7jd2zbGJFZ7hsH5Ot5An9cC1wFrga8lMiiTGuINf9JWo3uf9ECr04l8Fk9NMI8fhr7MhfW3sEdz+Mq2H9Nv4fUE9le0vbIxJuHavNJxD237g/sxvUR7bpSMf8XQfLCJg9ONz+Jp7EjQnVcdjW02K8JHckH4VuaNXczo9/5KxtYl7PnEj6g9PP5z/HriUDVd1Rvfs/GPn2OvmRQWb/yzRvFOVtPHFLoGeyUtKEwfU9hkvdteLiMUVlZs7vizeOLtd3xxDt88ddiBhJY77nh2jjubgpdvpvD5b1JzxEL2TP0hmtXy4W49daiaruiN79n4y5KOiSnWgJ/R2tMZ4HMTB/ByaSWnNruaabxXBg7eK9PeE11b+439cLkj2TXjEXJX3kPe8rvI3LqUylNvpW7YyU223VPHdeuKnjo8j+m52v1oAxGx/8RepHEYHIg9DE6sk1W0uat38dDyHZTtqeeh5TuYu3pX1Nz498rE09Z+ox/JUB+Kmh9IY9/kr7HzM48RycynaMEs+r76E6Sh5sC6iWxrautxDX5J5Hs2JpY2k46InCQia4F1bnqCiPw54ZEZX3nD4Hgno4y0liejtk5Wj6/Y0er09DFFpAe9ZJbewXtl2tpvVX24yUgIVfXhJvND/cey8zP/YN/4L9Jn7WMM+OcFpG/3nqzRnhEJOvtsmbaSpV8SOQqDMbG0p3rtNuBsvIeooapvicgpCY3K+K6tmxnb6gxQG4q0Ot2Ve2Xaimv9zv1xpwFIy2Tvx79H7YjTKVh0I/3nX8a+if9D1eT/jds5oivtH6k8IoF1ITfJ1K42HVXdJE1v9gu3tqw5dLR1Ar7t5U2EwrBic1WLzgCD8zLYVtXQZLq92+5KXAXN2p6aTzfG7iWtoznmwnn0ff2X5K34C1kfLWLpuB/xStWQmAmtK+0fNiKBMZ72tOlsEpGTABWRDBH5Nq6qzfReC9aV0xDGDZzpTUcbWZgVdzpRKpu1PTWfbhxl+i//3co1/1zP2+UBKk/7BeVn/5lI9S6Of/kKspb+iW/9c22LKrT2tH/MXb2L6+eWNmvD8owvzuGK4wdbwjG9WnuSztfwntg5FCgDJtLKEzxNb9L6fTjQtXabrjhtVEHc6dZGma4bcTo/GfIXnoqcwPVp/2Ru8CbWvfmfJuu21f4xd/UufvPiJpZsrOI3L26KmXhMU51tIzM9V5tJR1V3qeplqjpIVQeq6uWqWt7Weu0hIveJyA4RWR1VVigiC0Vkvfvdz5WLiNwhIqUi8raITI5a50q3/HoRuTKq/FgRWeXWuUOa1RGazjtyYHbc6cZ2m69+vJg7Lzgyad/uZ47rz3fPGMaU4Xl894xhLUawbj7qdPR0TTCP6xuu4Yv13yFb6rh287fo+58fI7W7aY9/rymPO20n2KZStUefSaz29F6bIyIFUdP9ROS+btr//UDzW8RvBF5Q1dHAC24aYDow2v3MAu528RQCtwAnAFOAWxoTlVtmVtR68W9HN+3WVpdq8K86aea4/tw+c1SLhAMtR52Onp4+pohgABZFJjG94TdsOuwS+rzzBIMem06ftY+wastervnne65q7r0WJ8mMoLQ63bxaz06wqdujzyRWe6rXjlHVysYJVd0NTOqOnbtn8jQfFGsGMMe9ngPMjCp/QD2LgQIRKcbrWbdQVStcbAuBaW5evqr+V1UV75lAMzHdoq0u1amq+ajTzacb+1vXaBbvjLuBnZ/9Jw2FR1Hw6k8Z/9zFnKrLUTRmO1Z1fajV6bYeLtcb2T1CvVN7eq8FRKSfO6E3XlkkciSDQaq6FUBVt4rIQFc+FNgUtVyZK4tXXhajvAURmYV3RcTQoTEXMc10tTeWX3fnR1+RNb9Ce2j5dhqfrB1Wb3r8uUdSfu79ZH34LIGXfss9Gb9nRWQUvw9dREX11Cbb3rkvFGe67Rti567e1eqD7Q5FiRyDz6Su9iSP3wOvi8gTbvoi4NbEhdSqWO0x2onyloWqs4HZABMmTOhZD7D3UWe7Pfs53lf0zaLNbx59b2dNk2UPTItQe/g0bl5zOAM3/pvr0v7B/8v4JR/tPJzs92ax/4jpEMxgZGEWK7ccrDaL7rE3fUwR/1pTTlghKC07VjR2QgBYstGrZjrUE0/sIYuS838QqNlJxrblpFV+QLBqC8F9W5FwHRrMRNOyiPQZQMOAcdQPGE+o3xEQsBHDukt7Rpl+QESWAWfgncgvUNW1CYxpu4gUu6ucYqDxVvYyYFjUciXAFld+WrPyRa68JMbyxmd+jvcV7+bR+nDTG1qbT/fNyeKx8OnMDU9lRvA1vpnxLP0W3Uj+G79j/+jzuWTYKazccvB+pLM+dnCQ0/fL9ze5inq/fH+T9xxrBIdDPekk9f8gEiZj2zKyP3iGzM2LSduz4cCscHZ/wrlD0PRsAg3VSG0Fwa1LyVn3mDc/qx/7R8+g5mOfJdRvVGLi60VaTToikq+qe1112jbg4ah5haqaqErp+cCVwK/c73lR5deIyKN4nQb2uMT0LPCLqM4DZwE3qWqFiFSJyInAG8AVwJ8SFLPpAD/vzj9tVMGBK4nG6UaZwQDR9z170wc1PjahPpzBk5zOmWf9DxmhFfRZ9zg5qx7gEr2PCRnDeT4ymZfCE3l+XeaBxLGotLLJthaVVjZJKvFGcOgOqTjYaDL+D9LK36XPO0+Q/cEzBPfvIpKWTf2QKVR/7ELqi4+nofAoSMtsuaJGCO75iIydq8na8AI5ax4id9X91BUfx94pN9AwaGK3x9pbxLvSeRg4F+8podFVTuKmD+/qzkXkEbyrlP4iUobXC+1XwOMichWwEa86D+Bp4BygFKgBvgTgksvPgKVuuZ9GJcSv4/WQywYWuB/jMz/vzp85rj+b99QdGP06+sQ/KC+drVGjKAzKa/pU9ljD99RxCnXDTyGwv4L7H/wrZ/Bfvh6czzfS5lK1uw8ZT02gfsA4vtxvOHs3pbNJB1BNdov7h9ICEncaVaRhH4HaPQTq9yC1ewjU7yVQX4U01LCjopKdlXspzgkwoI+ARkCCEEhj+35Ysa6WPZrNv5bkUXDaeEaOGEm4zwAI+Pfk+YT9H4RqyX7/aXLWPUbGjrfRYAa1w05l/xHTqRt+Kprex2s/e72S00ZVMXNcy6Qzd00Fi0rDnDbq48z81HkE9leQvX4euW/dx4B5l1JzxKepmvJNwnnWBtxR4nXsamWmd1/LMFXdmLyQ/DVhwgRdsMBy06GqaXuSNGlP+voT7/FWVJvMhCE53H3hkS3Wb+0keeXD61i/q5Z8qvlEYBXn9FnHWX3LSK9Yj+jBTgUVmov0KSQnrx+RzHw0kM7rG6qoj0AaYTJpoE+ggQn9Qer3eYmlvgrR+Fc/DRqkgTTSMzIIBgIQCYOGIVRHgJbrqgQJ5w2lNFLMiv0DCQ4+mtNOmkqo72EQCHb42PotWLWZPmsfIeedJwjU7aGh4AhqxlxEzejz0ax+B5aLbj8DWtzPFW++NFSTu/Iect/+GyoB9p50EzVHXQgpdgtgsGozaRXvUTf8tKTFNnTo0OWqelxby8Vt01FVFZEngWO7LTJjfBSvHWFPs3uNmk833mvjPZhuG3de0LQDRHF+Jut31bKXHJ6OnMi+gWcz+dzDIVTHHU++SNX2DQyXHZTITg6L1DE5PUKgthKJhBgh1YQlQgNp1JEOgQzCOQOJ9MtFM3KJZOYTySzwklRmX286Ix/NyOXh1TXcvaySek0jIDBrcjFXHD/4QFyff2ANOyr3kkcNhVLF+Lx9fP+EDIL7trDh/XWk7d3AZ+RNsjb/C/4OkbRsGgaMp37QJOoHT6J+8GQ0I0W7M2uEzM3/pc+ah8n66CWQALUjz6T66MuoLz4+5gm3rarOePM1PYeq46+jZsxFFLx8MwWv/IjMTa9SefJPYj4YsLmEV3NqhJw1D5O35A8EQvupG3Iilaf8hHD+8O7fVye1p0vGYhE5XlWXtr2oMaltUkkewcA2NKwEA03bEYb3y2LD7rom09E6/fC5tEyGjzme32w9mAi+e+wwRkad6L4/t7RJW9OU4XncPq19jdZjR1YjK6oJtNI2sq8hQg1Z1JDFdi1kZziN68eMB+Dra9dQVl9PkDCHy1ZOydnEN4/aTcaOleS+dQ+yMoxKgIb+Y6kvnkLdkBOoLz4WTfe3XShQs5M+782jz7v/IG3PBsJZheybOIvqsRcTyS2Ou268dr32zAcI5w6h/Jx7yXn7b+QvuZ0BO1ax++w/0dD/6Fb3m+hem8G9myhYdBOZ25ZTO+xk6ko+Qd6yPzHg7zOoOuEGqsdd3m376or2JJ3Tga+JyAagGtemo6rHJDIwYxJHm/32XHbsIF7bsIdwBIIBbzr2erGn4412EN2hINZ9OFv21MWdjqettpHdNaFWp2savI4TYYKs1xLKIyO4aqr30ZaGGtJ3riJzyxIyti4hZ/WD5L59Hypp1A88hvqhJ3hJaODE2I3xXdT8viVpqCZz48tklz5N1sZFiIapGzSZqsn/y/7Dz4ZgRtsbpe2/RVvzD5AA1ROuon7ICfR77lqK5l1O5em/pvbws2IunsjeeoH95RQ99WUCdXvZfdqv2D/6fBBh/+FnU/DKD+n7+q2sypjEq3uKfO9M0p6kMz3hURiTJCvKqghHvHQRjtDkgz++OIc/f7b15/w09l4LhSEtxiCmbc2fOa5/qyewsYNzKNtT32S6I+LdMyWNXX+ip52KmqZPKYme1vQ+1A85gfohJ3jrhfaTvm0FmVsWk7l5Mbkr/kLem3ejwQwvCQ2aTP3gyTQMPIZIVBtKZ3jtKhsZJjvYuHkN+99Zz+F7FiPhOsLZ/akef6XXhbmgc/2Z4v0t2jM/WsOAcez6zGMUPvcNCp+/jr3HXcu+SV9rUbWXsN56oToKn7uGQM0uys97gIaB4w/MiuQMovLknzL44dN544W/Mzs0I+n3xjUXr8t0Ft4I06OAVcC9qtpygC1jepC2PvjxTt5tPXyuKw+nO7zZox+aT3fFGaP78dy7u5tMN2qWj2LeUd1I07KpLzmJ+pKTqAKkvoqMrcu8K6Ftb5L71n3IytkAhHKKaeg/hrWhISzZW8jg4aM5afxRRDL7ohm5IFHd0SMhArW7CdTsIm2f1wA+adWbvJr5LiXijdRdUVlI9ZgLqT3sLOoHH5tyHR0ifQaw69w5FLzyQ/KX3UGwqow9J/+4Se/AhPTWU6Xg5ZvJ2L6Sik/e3iThHIgtdzCb+4zhrH1L+JPOSPq9cc3Fu9KZAzQA/8G72hkLXJeMoIxJlER31+7sKA2TSvLITOv8t+B4DdSfPWYAC9/dfWCYjs8eM+DAvPQgRD/ROz3Guby1bWtGHnUjTqduxOmAuxLasYr0XWtI37WWus2rOKbmZY6VMKzB+8HrNadpmaCKRiIEIvVIVOpThDFZQ3ktcjh/iZzL65Gj+expJzBz/ABSWlomlaf/mnD+MPLe/DPBml3s/uRtaPrB8f26+ymtecvvos/7T7H3+G+yNPsTrFi6Leb/wL4Rn2T8uj9RIjvZGRzo6zh38ZLOWFUdDyAi9wJLkhOSMYmVisP3dCUZthXXirIqREDVq/GJ/pZ72qimV0GnjerXoW1HU3fjZf2QKQB85bF3eXd3FUNkFyNlOxP71vCVCdkE6iqRUC07ayK8sH43NZEMdktfzj9hDCUlIwj1OwJNz+Gj1bt4t7SSz/aksehEqDruG4RzBtH31Z9Q9O8vUjHtbiLZ3f88qaz3F5D35l3UHDmT/w76fNy/U8Exn4Z1f+LHh79HePLUlG3TOXCXnKqG7FE0prdL9LAtnU2GbcUVr0rxx2ePBGDxhr2cODL/wHR7tx1P/5x01hJkkw5ikw5C+vWl+piDbTCPLd3G7IatRBQCApnhYq4YeLCHX0faVVJNzZjPEe4zgH7Pf4v+cy+hfPpswgWHddv203eupt+im6gbNJnKk3/Cijcr4v6dwn1H0FB4FCeHF1NefE23xdEZ8ZLOBBHZ614LkO2mG3uv5Sc8OmNSiJ/D98TTnnaqeFdRzRNNR7YdT1u9AVP1eHaXuhGnU37eHAqf/V8GzLuUirPupL64zXsn2xSo3kHhs1cTzi5i91l3QDCjXcdy/2GfIm/5XQRqdhLp419VZdwRCXojG5HAxJOKY5hBYuPqyrbbWjdVj2d3Cu4to3DBLNKqytjziR92aQSDQM0uip6+imBVGbtmPEKo8OCIGW0dy7SK9xj4xAwqP/FjasZe3On305r2jkhgSacZSzrGmO4mtZX0e+EGsja/Ts3oGez5xI+adDBoj+C+Ld69ONU7vKumkpM6FoQqAx+fTiivhIpz7unYuu3Q3qTTnieHGmOM6QLNKqBi+mz2HnsN2evn03/uxaTvXN3u9YOVH1I073IC+ysoP+fejicc8G4WHfkpMje/gdTtbXv5BLGkY4wxyRAIsu/Yq6k4568EaisZ8ORFFLz4HYJVm1tdRRqqvaFs/vlZJFzHrnPvp2HwpE6HUF98LKIh0irf7/Q2usoeh2eMMUlUVzKVHRcvIPete8h9+36yP3yO2pJPUF98PPVDjgcguHczaZXvk7PmYYL7d7H/8GnsPeHbXX6UQih/BABpezbSMKjzyasrLOkYY0ySaUYuVcdfT/WYS8hb+Vcyy14l+6MXWyxXN/hYKs6+k4aBE7plv+G8oShC2t5NbS+cIJZ0jDHGJ5Hcwez5xA8BCOzbSsa2NyGQTii/hHBeCZrZzXemBDMI5w4muNe/R6RZ0jHGmBQQyS2mdtSnE76fcP4I0nxMOtaRwBhjepFQ/jCCPlavHfJJR0Smici7IlIqIjf6HY8xxvgpnD+cYG0FUr/Pl/0f0klHRILAXRwcJftSERnrb1TGGOOfkHt0tV/tOod00gGmAKWq+oGq1gOPAjN8jskYY3wT6uslHb/adQ71pDMUiK68LHNlTYjILBFZJiLLysvLkxacMcYkWzhvGIBv3aYP9aQTa1S9FoPNqepsVT1OVY8rKur+514YY0yq0Iwcwtn9Ce75yJf9H+pJpwwYFjVdAmzxKRZjjEkJ4fxhdqWTIEuB0SJymIhkAJcA832OyRhjfBXKH25tOomgqiHgGuBZYB3wuKqu8TcqY4zxVyh/GMHqbRCqTfq+D/kRCVT1aeBpv+MwxphUEXbdptOqygj1G5XUfR/SVzrGGGNaauw27cfIBJZ0jDGmlzlwpeNDu44lHWOM6WUimQVEMvJI22NJxxhjTKKJeJ0Jqqx6zRhjTBKE84eT5sMNopZ0jDGmFwrlDydYtQUioaTu15KOMcb0QqH84YiGCO7bmtT9WtIxxpheKJI7GIBg9fak7teSjjHG9EKRrAIAAnWVSd2vJR1jjOmFIpku6dRa0jHGGJNgB650LOkYY4xJNE3rgwbSkbo9Sd2vJR1jjOmNRIhk9rU2HWOMMckRySqw6jVjjDHJEckqsCsdY4wxyRHJtCsdY4wxSWLVa8YYY5ImkllAoG4PqCZtn74kHRG5SETWiEhERI5rNu8mESkVkXdF5Oyo8mmurFREbowqP0xE3hCR9SLymIhkuPJMN13q5o9M1vszxpieQDP7IpEGJFSTtH36daWzGrgAeCW6UETGApcARwPTgD+LSFBEgsBdwHRgLHCpWxbg18Btqjoa2A1c5cqvAnar6ijgNrecMcYYx48bRH1JOqq6TlXfjTFrBvCoqtap6odAKTDF/ZSq6geqWg88CswQEQHOAJ5w688BZkZta457/QRwplveGGMM/oy/lmptOkOB6EfZlbmy1sqLgEpVDTUrb7ItN3+PW74FEZklIstEZFl5eXk3vRVjjEltfoy/lpaoDYvI88DgGLNuVtV5ra0Wo0yJnRw1zvLxttWyUHU2MBtgwoQJyWtRM8YYHzVe6cihkHRU9ZOdWK0MGBY1XQJsca9jle8CCkQkzV3NRC/fuK0yEUkD+gIVnYjJGGMOSQeudJI4/lqqVa/NBy5xPc8OA0YDS4ClwGjXUy0Dr7PBfFVV4CXgQrf+lcC8qG1d6V5fCLzoljfGGANEMvOBXtCmIyKfEZEy4OPAUyLyLICqrgEeB9YCzwBXq2rYXcVcAzwLrAMed8sCfA/4loiU4rXZ3OvK7wWKXPm3gAPdrI0xxgDBDCLpOYdGm048qvok8GQr824Fbo1R/jTwdIzyD/B6tzUvrwUu6nKwxhhzCEv2qASpVr1mjDEmibxRCSzpGGOMSQJvpOne25HAGGNMEkUy+1r1mjHGmOTQTLvSMcYYkySRrAKkbi9EwknZnyUdY4zpxSJZBQhKoH5vUvZnSccYY3qxxlEJkjUUjiUdY4zpxZI90rQlHWOM6cUimX2B5I00bUnHGGN6sYNXOsnpwWZJxxhjerFkP1PHko4xxvRimpGHStCSjjHGmCQQ8UYlsI4ExhhjkiGZ469Z0jHGmF5Okzj+miUdY4zp5ZL5eANLOsYY08sl80FulnSMMaaXi2QVHNrD4IjIb0XkHRF5W0SeFJGCqHk3iUipiLwrImdHlU9zZaUicmNU+WEi8oaIrBeRx0Qkw5VnuulSN39kMt+jMcb0FJHMAgLhWgjVJnxffl3pLATGqeoxwHvATQAiMha4BDgamAb8WUSCIhIE7gKmA2OBS92yAL8GblPV0cBu4CpXfhWwW1VHAbe55YwxxjRzYCicJPRg8yXpqOpzqhpyk4uBEvd6BvCoqtap6odAKTDF/ZSq6geqWg88CswQEQHOAJ5w688BZkZta457/QRwplveGGNMlAND4SShii0V2nS+DCxwr4cCm6Lmlbmy1sqLgMqoBNZY3mRbbv4et3wLIjJLRJaJyLLy8vIuvyFjjOlJkjnSdFqiNiwizwODY8y6WVXnuWVuBkLAQ42rxVheiZ0cNc7y8bbVslB1NjAbYMKECTGXMcaYQ1U4t5j9h52FZuQmfF8JSzqq+sl480XkSuBc4ExVbTzRlwHDohYrAba417HKdwEFIpLmrmail2/cVpmIpAF9gYrOvyNjjDk0hfOHs/tTf0zKvvzqvTYN+B5wvqrWRM2aD1ziep4dBowGlgBLgdGup1oGXmeD+S5ZvQRc6Na/EpgXta0r3esLgRejkpsxxhgfJOxKpw13ApnAQte2v1hVv6aqa0TkcWAtXrXb1aoaBhCRa4BngSBwn6qucdv6HvCoiPwcWAHc68rvBR4UkVK8K5xLkvPWjDHGtEbsy39TEyZM0AULFrS9oDHGmAOGDh26XFWPa2u5VOi9ZowxppewpGOMMSZpLOkYY4xJGks6xhhjksaSjjHGmKSx3mvNiMhO4KNOrt4f74bVVGNxdYzF1TEWV8ekalzQtdhGqOqAthaypNONRGRZe7oMJpvF1TEWV8dYXB2TqnFBcmKz6jVjjDFJY0nHGGNM0ljS6V6z/Q6gFRZXx1hcHWNxdUyqxgVJiM3adIwxxiSNXekYY4xJGks6xhhjksaSTieJyH0iskNEVkeV/VhENovISvdzjg9xDRORl0RknYisEZHrXHmhiCwUkfXud78UicvXYyYiWSKyRETecnH9xJUfJiJvuOP1mHuOUyrEdb+IfBh1vCYmM66o+IIiskJE/u2mfT1eceLy/XiJyAYRWeX2v8yV+fp5jBNXwj+PlnQ6735gWozy21R1ovt5OskxgfccohtUdQxwInC1iIwFbgReUNXRwAtuOhXiAn+PWR1whqpOACYC00TkRODXLq7RwG7gqhSJC+A7UcdrZZLjanQdsC5q2u/j1ah5XJAax+t0t//Ge2D8/jy2Fhck+PNoSaeTVPUVUvDx16q6VVXfdK+r8D6AQ4EZwBy32BxgZorE5Sv17HOT6e5HgTOAJ1y5H8ertbh8JyIlwKeBe9y04PPxihVXivP18+gnSzrd7xoRedtVvyX9kjmaiIwEJgFvAINUdSt4CQAYmCJxgc/HzFXJrAR2AAuB94FKVQ25RcrwIUE2j0tVG4/Xre543SYimcmOC7gd+C4QcdNFpMDxihFXI7+PlwLPichyEZnlylLh8xgrLkjw59GSTve6GzgCrzpkK/B7vwIRkVzgH8D1qrrXrziaixGX78dMVcOqOhEoAaYAY2ItltyoWsYlIuOAm4CPAccDhXiPa08aETkX2KGqy6OLYyya1OPVSlzg89KhWiIAAAOKSURBVPFypqrqZGA6XrXyKT7EEEusuBL+ebSk041Udbs7UUSAv+KdwJJORNLxTuwPqeo/XfF2ESl284vxvj37HleqHDMXSyWwCK/NqUBE0tysEmBLCsQ1zVVTqqrWAX8j+cdrKnC+iGwAHsWrVrsd/49Xi7hE5P+lwPFCVbe43zuAJ10Mvn8eY8WVjM+jJZ1u1PhP5HwGWN3asgmMQYB7gXWq+oeoWfOBK93rK4F5qRCX38dMRAaISIF7nQ18Eq+96SXgQreYH8crVlzvRJ2oBK8dIKnHS1VvUtUSVR0JXAK8qKqX4fPxaiWuy/0+XiKSIyJ5ja+Bs1wMfn8eY8aVjM9jWtuLmFhE5BHgNKC/iJQBtwCnuS6ZCmwAvupDaFOBLwCrXHsAwPeBXwGPi8hVwEbgohSJ61Kfj1kxMEdEgnhfwh5X1X+LyFrgURH5ObACL2GmQlwvisgAvCqtlcDXkhxXa76Hv8erNQ/5fLwGAU96OY804GFVfUZEluLv57G1uB5M9OfRhsExxhiTNFa9ZowxJmks6RhjjEkaSzrGGGOSxpKOMcaYpLGkY4wxJmks6RiTRCKyr+2lOrzNidGjAbuRgr/d3fsxpjtY0jGm55sIJP0xGsZ0hiUdY3wiIt8RkaVucMXG5+WMFO+ZQ/+/vftnrSKIwjD+vKVgahEbmwuijSAWfoFYWFrEUrSx0labCDYWqVNECzshH8DCNFp5K7XQWrEXVGITIRyLGXCNf0Ik7ibw/ODCMrsMc4vlMLvLeR+m5ehs9I4EJDnfr50nWUnyNi235h6w1PNPlvr0p5M8T/Iuyc2J/qL0C4uONIEki8CM1tvqLHBu0AhyBqxW1RngM3C5jz8CblTVBWAboKq+AcvAes8/We/XngIu9vnv9r530uQsOtI0FvvvNfCKViRm/dz7QdjYS+Bk78O2UFUv+vjjXeZ/UlVbVfWR1kzy2L6uXvpH9l6TphHgflWt/TTYsoa2BkPbwBF+Hx/wNzvn8F7XgeBOR5rGU+BazxciyYkkfwzyqqpPwGZ+RFZfGZzeBBb+20qlfWTRkSZQVRu0R2TzJG9oUc+7FY7rwIMkc9rO50sff0b7cGD4IYF0INllWjokkhytqq/9+DZwvKpuTbwsaU98zisdHpeS3KHdtx+Aq9MuR9o7dzqSpNH4TkeSNBqLjiRpNBYdSdJoLDqSpNFYdCRJo/kO5bV7bESSI3gAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"f1 = np.polyfit(x,y,11)\n",
"p1 = np.poly1d(f1)\n",
"print(p1)\n",
"PlotPolly(p1,x,y,'length')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# calculate polynomial\n",
"# Here we use a polynomial of the 3rd order (cubic) \n",
"f1 = np.polyfit(x, y, 11)\n",
"p1 = np.poly1d(f1)\n",
"print(p)\n",
"PlotPolly(p1,x,y, 'Length')\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The analytical expression for Multivariate Polynomial function gets complicated. For example, the expression for a second-order (degree=2)polynomial with two variables is given by:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 +b_2 X_2 +b_3 X_1 X_2+b_4 X_1^2+b_5 X_2^2\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can perform a polynomial transform on multiple features. First, we import the module:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"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": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"pr"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"Z_pr=pr.fit_transform(Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original data is of 201 samples and 4 features "
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 2)"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"after the transformation, there 201 samples and 15 features"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 6)"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z_pr.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Pipeline</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Data Pipelines simplify the steps of processing the data. We use the module <b>Pipeline</b> to create a pipeline. We also use <b>StandardScaler</b> as a step in our pipeline.</p>"
]
},
{
"cell_type": "code",
"execution_count": 43,
"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": 44,
"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": 45,
"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": 45,
"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": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64 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": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe.fit(Z,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Similarly, we can normalize the data, perform a transform and produce a prediction simultaneously"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
" Xt = transform.transform(Xt)\n"
]
},
{
"data": {
"text/plain": [
"array([15388.77780567, 15388.77780567, 16771.84474515, 11641.85647791])"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ypipe=pipe.predict(Z)\n",
"ypipe[0:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #5:</h1>\n",
"<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, y, **fit_params).transform(X)\n",
"/home/jupyterlab/conda/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
" Xt = transform.transform(Xt)\n"
]
},
{
"data": {
"text/plain": [
"array([15388.77780567, 15388.77780567, 16771.84474515, 11641.85647791,\n",
" 22268.00005924, 18247.37132604, 17667.41067193, 18247.37132604,\n",
" 25998.95757223, 12625.27578938, 12625.27578938, 13660.46068978,\n",
" 13660.46068978, 18247.37132604, 23228.70891709, 23228.70891709,\n",
" 27011.89885144, 11833.91842517, 5290.26689887, 4957.51520331,\n",
" 5656.65684543, 6228.79702441, 11822.72838982, 6651.95726227,\n",
" 6651.95726227, 6651.95726227, 11668.58112756, 11886.75296224,\n",
" 19366.96014376, 13776.68653057, 6481.04194627, 5307.73828468,\n",
" 8270.10204211, 8270.10204211, 8273.135815 , 8317.83629051,\n",
" 9044.61628289, 9044.61628289, 9119.71579049, 9119.71579049,\n",
" 14630.86552467, 10863.93996247, 12900.02285088, 12900.02285088,\n",
" 28317.15936566, 29042.18328071, 33380.13106344, 10884.5777361 ,\n",
" 6077.76264036, 6077.76264036, 6171.46361174, 6171.46361174,\n",
" 20873.13040403, 20873.13040403, 20873.13040403, 20873.13040403,\n",
" 9850.13032931, 9877.9333735 , 9850.13032931, 9877.9333735 ,\n",
" 5737.93068102, 9877.9333735 , 15446.03673491, 6003.8265608 ,\n",
" 18856.67247308, 18856.67247308, 18856.67247308, 18856.67247308,\n",
" 31164.92735138, 30481.83939977, 35687.7944169 , 35687.7944169 ,\n",
" 19815.35754833, 6615.63245044, 6877.4698481 , 6877.4698481 ,\n",
" 11643.92713 , 11656.08321083, 9871.2238753 , 19815.35754833,\n",
" 19815.35754833, 19815.35754833, 9855.05844624, 9855.05844624,\n",
" 11774.62286514, 11709.34522827, 6706.35058376, 9347.68605678,\n",
" 6706.35058376, 6643.38868764, 6479.81971836, 6706.35058376,\n",
" 6706.35058376, 6643.38868764, 6479.81971836, 7264.81461684,\n",
" 8270.27966651, 8270.27966651, 23075.18050067, 23608.05115856,\n",
" 18525.684755 , 17282.86154426, 20164.90913015, 17091.25956 ,\n",
" 19102.07503012, 9163.0583388 , 19815.35754833, 18247.37132604,\n",
" 19102.07503012, 9163.0583388 , 19815.35754833, 18247.37132604,\n",
" 19102.07503012, 9163.0583388 , 19102.07503012, 5675.79221322,\n",
" 11815.40383051, 6752.87360372, 6752.87360372, 6752.87360372,\n",
" 12294.28169317, 19815.35754833, 14800.73330313, 18247.37132604,\n",
" 18247.37132604, 18247.37132604, 10781.10646168, 10781.10646168,\n",
" 13832.260208 , 14331.53596951, 13832.260208 , 14331.53596951,\n",
" 16371.22936222, 17091.80633211, 6918.72924478, 11067.03883717,\n",
" 11067.03883717, 6472.71863023, 9053.79441405, 9930.21246349,\n",
" 18654.00876876, 13114.22446022, 10007.97345779, 11008.12197156,\n",
" 13343.71629504, 22453.50629378, 5576.35248707, 5934.09440689,\n",
" 5853.63266091, 6344.19508904, 10068.49193925, 9994.35164241,\n",
" 6404.5581737 , 6404.5581737 , 6937.59758465, 6159.44434108,\n",
" 6159.44434108, 8281.05533073, 8281.05533073, 8585.65330501,\n",
" 8585.65330501, 12636.24394656, 12636.24394656, 11723.62910075,\n",
" 11723.62910075, 11723.62910075, 11723.62910075, 11723.62910075,\n",
" 11723.62910075, 8380.09915458, 9253.05913557, 10218.47875795,\n",
" 10218.47875795, 10218.47875795, 18647.21407129, 18647.21407129,\n",
" 20571.90164579, 19815.35754833, 6677.83782089, 8296.17918837,\n",
" 5849.61428125, 8276.18614891, 8276.18614891, 5179.11730811,\n",
" 9975.04977308, 12900.02285088, 13020.62525484, 19815.35754833,\n",
" 6277.37780352, 10781.10646168, 14345.93313214, 14829.04036521,\n",
" 14345.93313214, 14829.04036521, 23750.69260421, 24652.34777488,\n",
" 14466.53853109, 18810.58063085, 22168.90690434, 15822.09292294,\n",
" 18810.58063085])"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"#input2 = [(\"scale\",StandardScalar()),(\"polynomial\",PolynomialFeatures(include_bias=False)),(\"model\",LinearRegression())]\n",
"Input=[('scale',StandardScaler()), ('polynomial', PolynomialFeatures(include_bias=False)), ('model',LinearRegression())]\n",
"pipe2 = Pipeline(Input)\n",
"pipe2.fit(Z,y)\n",
"pipe2.predict(Z)"
]
},
{
"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": 54,
"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": 55,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The output of the first four predicted value is: [13728.4631336 13728.4631336 17399.38347881 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": 56,
"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": 57,
"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": 58,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.4966263556974878\n"
]
}
],
"source": [
"# fit the model \n",
"lm.fit(Z, df['price'])\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(Z, df['price']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we produce a prediction "
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Y_predict_multifit = lm.predict(Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value using multifit is: 31632832.975589428\n"
]
}
],
"source": [
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Y_predict_multifit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 3: Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let’s import the function <b>r2_score</b> from the module <b>metrics</b> as we are using a different function"
]
},
{
"cell_type": "code",
"execution_count": 61,
"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": 62,
"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": 63,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"20474146.426361226"
]
},
"execution_count": 63,
"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": 64,
"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": 65,
"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": 66,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(X, Y)\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Produce a prediction"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-7796.47889059, -7629.6188749 , -7462.75885921, -7295.89884352,\n",
" -7129.03882782])"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat=lm.predict(new_input)\n",
"yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can plot the data "
]
},
{
"cell_type": "code",
"execution_count": 68,
"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": [
"plt.plot(new_input, yhat)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Decision Making: Determining a Good Model Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Now that we have visualized the different models, and generated the R-squared and MSE values for the fits, how do we determine a good model fit?\n",
"<ul>\n",
" <li><i>What is a good R-squared value?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the higher R-squared value is a better fit</b> for the data.\n",
"<ul>\n",
" <li><i>What is a good MSE?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the smallest MSE value is a better fit</b> for the data.</p>\n",
"\n",
"\n",
"<h4>Let's take a look at the values for the different models.</h4>\n",
"<p>Simple Linear Regression: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.49659118843391759</li>\n",
" <li>MSE: 3.16 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Multiple Linear Regression: Using Horsepower, Curb-weight, Engine-size, and Highway-mpg as Predictor Variables of Price.\n",
"<ul>\n",
" <li>R-squared: 0.80896354913783497</li>\n",
" <li>MSE: 1.2 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Polynomial Fit: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.6741946663906514</li>\n",
" <li>MSE: 2.05 x 10^7</li>\n",
"</ul>\n",
"</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Usually, the more variables you have, the better your model is at predicting, but this is not always true. Sometimes you may not have enough data, you may run into numerical problems, or many of the variables may not be useful and or even act as noise. As a result, you should always check the MSE and R^2.</p>\n",
"\n",
"<p>So to be able to compare the results of the MLR vs SLR models, we look at a combination of both the R-squared and MSE to make the best conclusion about the fit of the model.\n",
"<ul>\n",
" <li><b>MSE</b>The MSE of SLR is 3.16x10^7 while MLR has an MSE of 1.2 x10^7. The MSE of MLR is much smaller.</li>\n",
" <li><b>R-squared</b>: In this case, we can also see that there is a big difference between the R-squared of the SLR and the R-squared of the MLR. The R-squared for the SLR (~0.497) is very small compared to the R-squared for the MLR (~0.809).</li>\n",
"</ul>\n",
"</p>\n",
"\n",
"This R-squared in combination with the MSE show that MLR seems like the better model fit in this case, compared to SLR."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: We can see that Polynomial Fit brought down the MSE, since this MSE is smaller than the one from the SLR.</li> \n",
" <li><b>R-squared</b>: The R-squared for the Polyfit is larger than the R-squared for the SLR, so the Polynomial Fit also brought up the R-squared quite a bit.</li>\n",
"</ul>\n",
"<p>Since the Polynomial Fit resulted in a lower MSE and a higher R-squared, we can conclude that this was a better fit model than the simple linear regression for predicting Price with Highway-mpg as a predictor variable.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: The MSE for the MLR is smaller than the MSE for the Polynomial Fit.</li>\n",
" <li><b>R-squared</b>: The R-squared for the MLR is also much larger than for the Polynomial Fit.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Conclusion:</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing these three models, we conclude that <b>the MLR model is the best model</b> to be able to predict price from our dataset. This result makes sense, since we have 27 variables in total, and we know that more than one of those variables are potential predictors of the final car price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/skills_network_DA0101EN_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &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