Created
March 17, 2019 15:49
-
-
Save aish2997/2509cb70b47e7eeaacc240ca3958bb46 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n", | |
" <a href=\"https://cocl.us/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": [ | |
"Exploratory Data Analysis" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Welcome!</h3>\n", | |
"In this section, we will explore several methods to see if certain characteristics or features can be used to predict car price. " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Table of content</h2>\n", | |
"\n", | |
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n", | |
"<ol>\n", | |
" <li><a href=\"#import_data\">Import Data from Module</a></li>\n", | |
" <li><a href=\"#pattern_visualization\">Analyzing Individual Feature Patterns using Visualization</a></li>\n", | |
" <li><a href=\"#discriptive_statistics\">Descriptive Statistical Analysis</a></li>\n", | |
" <li><a href=\"#basic_grouping\">Basics of Grouping</a></li>\n", | |
" <li><a href=\"#correlation_causation\">Correlation and Causation</a></li>\n", | |
" <li><a href=\"#anova\">ANOVA</a></li>\n", | |
"</ol>\n", | |
" \n", | |
"Estimated Time Needed: <strong>30 min</strong>\n", | |
"</div>\n", | |
" \n", | |
"<hr>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>What are the main characteristics which have the most impact on the car price?</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2 id=\"import_data\">1. Import Data from Module 2</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Setup</h4>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Import libraries " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd\n", | |
"import numpy as np" | |
] | |
}, | |
{ | |
"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": 8, | |
"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": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"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": [ | |
"<h2 id=\"pattern_visualization\">2. Analyzing Individual Feature Patterns using Visualization</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"To install seaborn we use the pip which is the python package manager." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%%capture\n", | |
"! pip install seaborn" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Import visualization packages \"Matplotlib\" and \"Seaborn\", don't forget about \"%matplotlib inline\" to plot in a Jupyter notebook." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sns\n", | |
"%matplotlib inline " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>How to choose the right visualization method?</h4>\n", | |
"<p>When visualizing individual variables, it is important to first understand what type of variable you are dealing with. This will help us find the right visualization method for that variable.</p>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"symboling int64\n", | |
"normalized-losses int64\n", | |
"make object\n", | |
"aspiration object\n", | |
"num-of-doors object\n", | |
"body-style object\n", | |
"drive-wheels object\n", | |
"engine-location object\n", | |
"wheel-base float64\n", | |
"length float64\n", | |
"width float64\n", | |
"height float64\n", | |
"curb-weight int64\n", | |
"engine-type object\n", | |
"num-of-cylinders object\n", | |
"engine-size int64\n", | |
"fuel-system object\n", | |
"bore float64\n", | |
"stroke float64\n", | |
"compression-ratio float64\n", | |
"horsepower float64\n", | |
"peak-rpm float64\n", | |
"city-mpg int64\n", | |
"highway-mpg int64\n", | |
"price float64\n", | |
"city-L/100km float64\n", | |
"horsepower-binned object\n", | |
"diesel int64\n", | |
"gas int64\n", | |
"dtype: object\n" | |
] | |
} | |
], | |
"source": [ | |
"# list the data types for each column\n", | |
"print(df.dtypes)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h3>Question #1:</h3>\n", | |
"\n", | |
"<b>What is the data type of the column \"peak-rpm\"? </b>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"float64\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"for example, we can calculate the correlation between variables of type \"int64\" or \"float64\" using the method \"corr\":" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"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>wheel-base</th>\n", | |
" <th>length</th>\n", | |
" <th>width</th>\n", | |
" <th>height</th>\n", | |
" <th>curb-weight</th>\n", | |
" <th>engine-size</th>\n", | |
" <th>bore</th>\n", | |
" <th>stroke</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>diesel</th>\n", | |
" <th>gas</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>symboling</th>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.466264</td>\n", | |
" <td>-0.535987</td>\n", | |
" <td>-0.365404</td>\n", | |
" <td>-0.242423</td>\n", | |
" <td>-0.550160</td>\n", | |
" <td>-0.233118</td>\n", | |
" <td>-0.110581</td>\n", | |
" <td>-0.140019</td>\n", | |
" <td>-0.008245</td>\n", | |
" <td>-0.182196</td>\n", | |
" <td>0.075819</td>\n", | |
" <td>0.279740</td>\n", | |
" <td>-0.035527</td>\n", | |
" <td>0.036233</td>\n", | |
" <td>-0.082391</td>\n", | |
" <td>0.066171</td>\n", | |
" <td>-0.196735</td>\n", | |
" <td>0.196735</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>normalized-losses</th>\n", | |
" <td>0.466264</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.056661</td>\n", | |
" <td>0.019424</td>\n", | |
" <td>0.086802</td>\n", | |
" <td>-0.373737</td>\n", | |
" <td>0.099404</td>\n", | |
" <td>0.112360</td>\n", | |
" <td>-0.029862</td>\n", | |
" <td>0.055563</td>\n", | |
" <td>-0.114713</td>\n", | |
" <td>0.217299</td>\n", | |
" <td>0.239543</td>\n", | |
" <td>-0.225016</td>\n", | |
" <td>-0.181877</td>\n", | |
" <td>0.133999</td>\n", | |
" <td>0.238567</td>\n", | |
" <td>-0.101546</td>\n", | |
" <td>0.101546</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>wheel-base</th>\n", | |
" <td>-0.535987</td>\n", | |
" <td>-0.056661</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.876024</td>\n", | |
" <td>0.814507</td>\n", | |
" <td>0.590742</td>\n", | |
" <td>0.782097</td>\n", | |
" <td>0.572027</td>\n", | |
" <td>0.493244</td>\n", | |
" <td>0.158502</td>\n", | |
" <td>0.250313</td>\n", | |
" <td>0.371147</td>\n", | |
" <td>-0.360305</td>\n", | |
" <td>-0.470606</td>\n", | |
" <td>-0.543304</td>\n", | |
" <td>0.584642</td>\n", | |
" <td>0.476153</td>\n", | |
" <td>0.307237</td>\n", | |
" <td>-0.307237</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>length</th>\n", | |
" <td>-0.365404</td>\n", | |
" <td>0.019424</td>\n", | |
" <td>0.876024</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.857170</td>\n", | |
" <td>0.492063</td>\n", | |
" <td>0.880665</td>\n", | |
" <td>0.685025</td>\n", | |
" <td>0.608971</td>\n", | |
" <td>0.124139</td>\n", | |
" <td>0.159733</td>\n", | |
" <td>0.579821</td>\n", | |
" <td>-0.285970</td>\n", | |
" <td>-0.665192</td>\n", | |
" <td>-0.698142</td>\n", | |
" <td>0.690628</td>\n", | |
" <td>0.657373</td>\n", | |
" <td>0.211187</td>\n", | |
" <td>-0.211187</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>width</th>\n", | |
" <td>-0.242423</td>\n", | |
" <td>0.086802</td>\n", | |
" <td>0.814507</td>\n", | |
" <td>0.857170</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.306002</td>\n", | |
" <td>0.866201</td>\n", | |
" <td>0.729436</td>\n", | |
" <td>0.544885</td>\n", | |
" <td>0.188829</td>\n", | |
" <td>0.189867</td>\n", | |
" <td>0.615077</td>\n", | |
" <td>-0.245800</td>\n", | |
" <td>-0.633531</td>\n", | |
" <td>-0.680635</td>\n", | |
" <td>0.751265</td>\n", | |
" <td>0.673363</td>\n", | |
" <td>0.244356</td>\n", | |
" <td>-0.244356</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>height</th>\n", | |
" <td>-0.550160</td>\n", | |
" <td>-0.373737</td>\n", | |
" <td>0.590742</td>\n", | |
" <td>0.492063</td>\n", | |
" <td>0.306002</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.307581</td>\n", | |
" <td>0.074694</td>\n", | |
" <td>0.180449</td>\n", | |
" <td>-0.062704</td>\n", | |
" <td>0.259737</td>\n", | |
" <td>-0.087027</td>\n", | |
" <td>-0.309974</td>\n", | |
" <td>-0.049800</td>\n", | |
" <td>-0.104812</td>\n", | |
" <td>0.135486</td>\n", | |
" <td>0.003811</td>\n", | |
" <td>0.281578</td>\n", | |
" <td>-0.281578</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>curb-weight</th>\n", | |
" <td>-0.233118</td>\n", | |
" <td>0.099404</td>\n", | |
" <td>0.782097</td>\n", | |
" <td>0.880665</td>\n", | |
" <td>0.866201</td>\n", | |
" <td>0.307581</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.849072</td>\n", | |
" <td>0.644060</td>\n", | |
" <td>0.167562</td>\n", | |
" <td>0.156433</td>\n", | |
" <td>0.757976</td>\n", | |
" <td>-0.279361</td>\n", | |
" <td>-0.749543</td>\n", | |
" <td>-0.794889</td>\n", | |
" <td>0.834415</td>\n", | |
" <td>0.785353</td>\n", | |
" <td>0.221046</td>\n", | |
" <td>-0.221046</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>engine-size</th>\n", | |
" <td>-0.110581</td>\n", | |
" <td>0.112360</td>\n", | |
" <td>0.572027</td>\n", | |
" <td>0.685025</td>\n", | |
" <td>0.729436</td>\n", | |
" <td>0.074694</td>\n", | |
" <td>0.849072</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.572609</td>\n", | |
" <td>0.209523</td>\n", | |
" <td>0.028889</td>\n", | |
" <td>0.822676</td>\n", | |
" <td>-0.256733</td>\n", | |
" <td>-0.650546</td>\n", | |
" <td>-0.679571</td>\n", | |
" <td>0.872335</td>\n", | |
" <td>0.745059</td>\n", | |
" <td>0.070779</td>\n", | |
" <td>-0.070779</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>bore</th>\n", | |
" <td>-0.140019</td>\n", | |
" <td>-0.029862</td>\n", | |
" <td>0.493244</td>\n", | |
" <td>0.608971</td>\n", | |
" <td>0.544885</td>\n", | |
" <td>0.180449</td>\n", | |
" <td>0.644060</td>\n", | |
" <td>0.572609</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.055390</td>\n", | |
" <td>0.001263</td>\n", | |
" <td>0.566936</td>\n", | |
" <td>-0.267392</td>\n", | |
" <td>-0.582027</td>\n", | |
" <td>-0.591309</td>\n", | |
" <td>0.543155</td>\n", | |
" <td>0.554610</td>\n", | |
" <td>0.054458</td>\n", | |
" <td>-0.054458</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>stroke</th>\n", | |
" <td>-0.008245</td>\n", | |
" <td>0.055563</td>\n", | |
" <td>0.158502</td>\n", | |
" <td>0.124139</td>\n", | |
" <td>0.188829</td>\n", | |
" <td>-0.062704</td>\n", | |
" <td>0.167562</td>\n", | |
" <td>0.209523</td>\n", | |
" <td>-0.055390</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.187923</td>\n", | |
" <td>0.098462</td>\n", | |
" <td>-0.065713</td>\n", | |
" <td>-0.034696</td>\n", | |
" <td>-0.035201</td>\n", | |
" <td>0.082310</td>\n", | |
" <td>0.037300</td>\n", | |
" <td>0.241303</td>\n", | |
" <td>-0.241303</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>compression-ratio</th>\n", | |
" <td>-0.182196</td>\n", | |
" <td>-0.114713</td>\n", | |
" <td>0.250313</td>\n", | |
" <td>0.159733</td>\n", | |
" <td>0.189867</td>\n", | |
" <td>0.259737</td>\n", | |
" <td>0.156433</td>\n", | |
" <td>0.028889</td>\n", | |
" <td>0.001263</td>\n", | |
" <td>0.187923</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.214514</td>\n", | |
" <td>-0.435780</td>\n", | |
" <td>0.331425</td>\n", | |
" <td>0.268465</td>\n", | |
" <td>0.071107</td>\n", | |
" <td>-0.299372</td>\n", | |
" <td>0.985231</td>\n", | |
" <td>-0.985231</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>horsepower</th>\n", | |
" <td>0.075819</td>\n", | |
" <td>0.217299</td>\n", | |
" <td>0.371147</td>\n", | |
" <td>0.579821</td>\n", | |
" <td>0.615077</td>\n", | |
" <td>-0.087027</td>\n", | |
" <td>0.757976</td>\n", | |
" <td>0.822676</td>\n", | |
" <td>0.566936</td>\n", | |
" <td>0.098462</td>\n", | |
" <td>-0.214514</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.107885</td>\n", | |
" <td>-0.822214</td>\n", | |
" <td>-0.804575</td>\n", | |
" <td>0.809575</td>\n", | |
" <td>0.889488</td>\n", | |
" <td>-0.169053</td>\n", | |
" <td>0.169053</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>peak-rpm</th>\n", | |
" <td>0.279740</td>\n", | |
" <td>0.239543</td>\n", | |
" <td>-0.360305</td>\n", | |
" <td>-0.285970</td>\n", | |
" <td>-0.245800</td>\n", | |
" <td>-0.309974</td>\n", | |
" <td>-0.279361</td>\n", | |
" <td>-0.256733</td>\n", | |
" <td>-0.267392</td>\n", | |
" <td>-0.065713</td>\n", | |
" <td>-0.435780</td>\n", | |
" <td>0.107885</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.115413</td>\n", | |
" <td>-0.058598</td>\n", | |
" <td>-0.101616</td>\n", | |
" <td>0.115830</td>\n", | |
" <td>-0.475812</td>\n", | |
" <td>0.475812</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>city-mpg</th>\n", | |
" <td>-0.035527</td>\n", | |
" <td>-0.225016</td>\n", | |
" <td>-0.470606</td>\n", | |
" <td>-0.665192</td>\n", | |
" <td>-0.633531</td>\n", | |
" <td>-0.049800</td>\n", | |
" <td>-0.749543</td>\n", | |
" <td>-0.650546</td>\n", | |
" <td>-0.582027</td>\n", | |
" <td>-0.034696</td>\n", | |
" <td>0.331425</td>\n", | |
" <td>-0.822214</td>\n", | |
" <td>-0.115413</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.972044</td>\n", | |
" <td>-0.686571</td>\n", | |
" <td>-0.949713</td>\n", | |
" <td>0.265676</td>\n", | |
" <td>-0.265676</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>highway-mpg</th>\n", | |
" <td>0.036233</td>\n", | |
" <td>-0.181877</td>\n", | |
" <td>-0.543304</td>\n", | |
" <td>-0.698142</td>\n", | |
" <td>-0.680635</td>\n", | |
" <td>-0.104812</td>\n", | |
" <td>-0.794889</td>\n", | |
" <td>-0.679571</td>\n", | |
" <td>-0.591309</td>\n", | |
" <td>-0.035201</td>\n", | |
" <td>0.268465</td>\n", | |
" <td>-0.804575</td>\n", | |
" <td>-0.058598</td>\n", | |
" <td>0.972044</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.704692</td>\n", | |
" <td>-0.930028</td>\n", | |
" <td>0.198690</td>\n", | |
" <td>-0.198690</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>price</th>\n", | |
" <td>-0.082391</td>\n", | |
" <td>0.133999</td>\n", | |
" <td>0.584642</td>\n", | |
" <td>0.690628</td>\n", | |
" <td>0.751265</td>\n", | |
" <td>0.135486</td>\n", | |
" <td>0.834415</td>\n", | |
" <td>0.872335</td>\n", | |
" <td>0.543155</td>\n", | |
" <td>0.082310</td>\n", | |
" <td>0.071107</td>\n", | |
" <td>0.809575</td>\n", | |
" <td>-0.101616</td>\n", | |
" <td>-0.686571</td>\n", | |
" <td>-0.704692</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.789898</td>\n", | |
" <td>0.110326</td>\n", | |
" <td>-0.110326</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>city-L/100km</th>\n", | |
" <td>0.066171</td>\n", | |
" <td>0.238567</td>\n", | |
" <td>0.476153</td>\n", | |
" <td>0.657373</td>\n", | |
" <td>0.673363</td>\n", | |
" <td>0.003811</td>\n", | |
" <td>0.785353</td>\n", | |
" <td>0.745059</td>\n", | |
" <td>0.554610</td>\n", | |
" <td>0.037300</td>\n", | |
" <td>-0.299372</td>\n", | |
" <td>0.889488</td>\n", | |
" <td>0.115830</td>\n", | |
" <td>-0.949713</td>\n", | |
" <td>-0.930028</td>\n", | |
" <td>0.789898</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.241282</td>\n", | |
" <td>0.241282</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>diesel</th>\n", | |
" <td>-0.196735</td>\n", | |
" <td>-0.101546</td>\n", | |
" <td>0.307237</td>\n", | |
" <td>0.211187</td>\n", | |
" <td>0.244356</td>\n", | |
" <td>0.281578</td>\n", | |
" <td>0.221046</td>\n", | |
" <td>0.070779</td>\n", | |
" <td>0.054458</td>\n", | |
" <td>0.241303</td>\n", | |
" <td>0.985231</td>\n", | |
" <td>-0.169053</td>\n", | |
" <td>-0.475812</td>\n", | |
" <td>0.265676</td>\n", | |
" <td>0.198690</td>\n", | |
" <td>0.110326</td>\n", | |
" <td>-0.241282</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-1.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>gas</th>\n", | |
" <td>0.196735</td>\n", | |
" <td>0.101546</td>\n", | |
" <td>-0.307237</td>\n", | |
" <td>-0.211187</td>\n", | |
" <td>-0.244356</td>\n", | |
" <td>-0.281578</td>\n", | |
" <td>-0.221046</td>\n", | |
" <td>-0.070779</td>\n", | |
" <td>-0.054458</td>\n", | |
" <td>-0.241303</td>\n", | |
" <td>-0.985231</td>\n", | |
" <td>0.169053</td>\n", | |
" <td>0.475812</td>\n", | |
" <td>-0.265676</td>\n", | |
" <td>-0.198690</td>\n", | |
" <td>-0.110326</td>\n", | |
" <td>0.241282</td>\n", | |
" <td>-1.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" symboling normalized-losses wheel-base length \\\n", | |
"symboling 1.000000 0.466264 -0.535987 -0.365404 \n", | |
"normalized-losses 0.466264 1.000000 -0.056661 0.019424 \n", | |
"wheel-base -0.535987 -0.056661 1.000000 0.876024 \n", | |
"length -0.365404 0.019424 0.876024 1.000000 \n", | |
"width -0.242423 0.086802 0.814507 0.857170 \n", | |
"height -0.550160 -0.373737 0.590742 0.492063 \n", | |
"curb-weight -0.233118 0.099404 0.782097 0.880665 \n", | |
"engine-size -0.110581 0.112360 0.572027 0.685025 \n", | |
"bore -0.140019 -0.029862 0.493244 0.608971 \n", | |
"stroke -0.008245 0.055563 0.158502 0.124139 \n", | |
"compression-ratio -0.182196 -0.114713 0.250313 0.159733 \n", | |
"horsepower 0.075819 0.217299 0.371147 0.579821 \n", | |
"peak-rpm 0.279740 0.239543 -0.360305 -0.285970 \n", | |
"city-mpg -0.035527 -0.225016 -0.470606 -0.665192 \n", | |
"highway-mpg 0.036233 -0.181877 -0.543304 -0.698142 \n", | |
"price -0.082391 0.133999 0.584642 0.690628 \n", | |
"city-L/100km 0.066171 0.238567 0.476153 0.657373 \n", | |
"diesel -0.196735 -0.101546 0.307237 0.211187 \n", | |
"gas 0.196735 0.101546 -0.307237 -0.211187 \n", | |
"\n", | |
" width height curb-weight engine-size bore \\\n", | |
"symboling -0.242423 -0.550160 -0.233118 -0.110581 -0.140019 \n", | |
"normalized-losses 0.086802 -0.373737 0.099404 0.112360 -0.029862 \n", | |
"wheel-base 0.814507 0.590742 0.782097 0.572027 0.493244 \n", | |
"length 0.857170 0.492063 0.880665 0.685025 0.608971 \n", | |
"width 1.000000 0.306002 0.866201 0.729436 0.544885 \n", | |
"height 0.306002 1.000000 0.307581 0.074694 0.180449 \n", | |
"curb-weight 0.866201 0.307581 1.000000 0.849072 0.644060 \n", | |
"engine-size 0.729436 0.074694 0.849072 1.000000 0.572609 \n", | |
"bore 0.544885 0.180449 0.644060 0.572609 1.000000 \n", | |
"stroke 0.188829 -0.062704 0.167562 0.209523 -0.055390 \n", | |
"compression-ratio 0.189867 0.259737 0.156433 0.028889 0.001263 \n", | |
"horsepower 0.615077 -0.087027 0.757976 0.822676 0.566936 \n", | |
"peak-rpm -0.245800 -0.309974 -0.279361 -0.256733 -0.267392 \n", | |
"city-mpg -0.633531 -0.049800 -0.749543 -0.650546 -0.582027 \n", | |
"highway-mpg -0.680635 -0.104812 -0.794889 -0.679571 -0.591309 \n", | |
"price 0.751265 0.135486 0.834415 0.872335 0.543155 \n", | |
"city-L/100km 0.673363 0.003811 0.785353 0.745059 0.554610 \n", | |
"diesel 0.244356 0.281578 0.221046 0.070779 0.054458 \n", | |
"gas -0.244356 -0.281578 -0.221046 -0.070779 -0.054458 \n", | |
"\n", | |
" stroke compression-ratio horsepower peak-rpm \\\n", | |
"symboling -0.008245 -0.182196 0.075819 0.279740 \n", | |
"normalized-losses 0.055563 -0.114713 0.217299 0.239543 \n", | |
"wheel-base 0.158502 0.250313 0.371147 -0.360305 \n", | |
"length 0.124139 0.159733 0.579821 -0.285970 \n", | |
"width 0.188829 0.189867 0.615077 -0.245800 \n", | |
"height -0.062704 0.259737 -0.087027 -0.309974 \n", | |
"curb-weight 0.167562 0.156433 0.757976 -0.279361 \n", | |
"engine-size 0.209523 0.028889 0.822676 -0.256733 \n", | |
"bore -0.055390 0.001263 0.566936 -0.267392 \n", | |
"stroke 1.000000 0.187923 0.098462 -0.065713 \n", | |
"compression-ratio 0.187923 1.000000 -0.214514 -0.435780 \n", | |
"horsepower 0.098462 -0.214514 1.000000 0.107885 \n", | |
"peak-rpm -0.065713 -0.435780 0.107885 1.000000 \n", | |
"city-mpg -0.034696 0.331425 -0.822214 -0.115413 \n", | |
"highway-mpg -0.035201 0.268465 -0.804575 -0.058598 \n", | |
"price 0.082310 0.071107 0.809575 -0.101616 \n", | |
"city-L/100km 0.037300 -0.299372 0.889488 0.115830 \n", | |
"diesel 0.241303 0.985231 -0.169053 -0.475812 \n", | |
"gas -0.241303 -0.985231 0.169053 0.475812 \n", | |
"\n", | |
" city-mpg highway-mpg price city-L/100km diesel \\\n", | |
"symboling -0.035527 0.036233 -0.082391 0.066171 -0.196735 \n", | |
"normalized-losses -0.225016 -0.181877 0.133999 0.238567 -0.101546 \n", | |
"wheel-base -0.470606 -0.543304 0.584642 0.476153 0.307237 \n", | |
"length -0.665192 -0.698142 0.690628 0.657373 0.211187 \n", | |
"width -0.633531 -0.680635 0.751265 0.673363 0.244356 \n", | |
"height -0.049800 -0.104812 0.135486 0.003811 0.281578 \n", | |
"curb-weight -0.749543 -0.794889 0.834415 0.785353 0.221046 \n", | |
"engine-size -0.650546 -0.679571 0.872335 0.745059 0.070779 \n", | |
"bore -0.582027 -0.591309 0.543155 0.554610 0.054458 \n", | |
"stroke -0.034696 -0.035201 0.082310 0.037300 0.241303 \n", | |
"compression-ratio 0.331425 0.268465 0.071107 -0.299372 0.985231 \n", | |
"horsepower -0.822214 -0.804575 0.809575 0.889488 -0.169053 \n", | |
"peak-rpm -0.115413 -0.058598 -0.101616 0.115830 -0.475812 \n", | |
"city-mpg 1.000000 0.972044 -0.686571 -0.949713 0.265676 \n", | |
"highway-mpg 0.972044 1.000000 -0.704692 -0.930028 0.198690 \n", | |
"price -0.686571 -0.704692 1.000000 0.789898 0.110326 \n", | |
"city-L/100km -0.949713 -0.930028 0.789898 1.000000 -0.241282 \n", | |
"diesel 0.265676 0.198690 0.110326 -0.241282 1.000000 \n", | |
"gas -0.265676 -0.198690 -0.110326 0.241282 -1.000000 \n", | |
"\n", | |
" gas \n", | |
"symboling 0.196735 \n", | |
"normalized-losses 0.101546 \n", | |
"wheel-base -0.307237 \n", | |
"length -0.211187 \n", | |
"width -0.244356 \n", | |
"height -0.281578 \n", | |
"curb-weight -0.221046 \n", | |
"engine-size -0.070779 \n", | |
"bore -0.054458 \n", | |
"stroke -0.241303 \n", | |
"compression-ratio -0.985231 \n", | |
"horsepower 0.169053 \n", | |
"peak-rpm 0.475812 \n", | |
"city-mpg -0.265676 \n", | |
"highway-mpg -0.198690 \n", | |
"price -0.110326 \n", | |
"city-L/100km 0.241282 \n", | |
"diesel -1.000000 \n", | |
"gas 1.000000 " | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.corr()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The diagonal elements are always one; we will study correlation more precisely Pearson correlation in-depth at the end of the notebook." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1> Question #2: </h1>\n", | |
"\n", | |
"<p>Find the correlation between the following columns: bore, stroke,compression-ratio , and horsepower.</p>\n", | |
"<p>Hint: if you would like to select those columns use the following syntax: df[['bore','stroke' ,'compression-ratio','horsepower']]</p>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": true | |
}, | |
"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>bore</th>\n", | |
" <th>stroke</th>\n", | |
" <th>compression-ratio</th>\n", | |
" <th>horsepower</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>bore</th>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.055390</td>\n", | |
" <td>0.001263</td>\n", | |
" <td>0.566936</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>stroke</th>\n", | |
" <td>-0.055390</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.187923</td>\n", | |
" <td>0.098462</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>compression-ratio</th>\n", | |
" <td>0.001263</td>\n", | |
" <td>0.187923</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.214514</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>horsepower</th>\n", | |
" <td>0.566936</td>\n", | |
" <td>0.098462</td>\n", | |
" <td>-0.214514</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" bore stroke compression-ratio horsepower\n", | |
"bore 1.000000 -0.055390 0.001263 0.566936\n", | |
"stroke -0.055390 1.000000 0.187923 0.098462\n", | |
"compression-ratio 0.001263 0.187923 1.000000 -0.214514\n", | |
"horsepower 0.566936 0.098462 -0.214514 1.000000" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"df[['bore','stroke' ,'compression-ratio','horsepower']].corr()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"df[['bore', 'stroke', 'compression-ratio', 'horsepower']].corr() \n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Continuous numerical variables:</h2> \n", | |
"\n", | |
"<p>Continuous numerical variables are variables that may contain any value within some range. Continuous numerical variables can have the type \"int64\" or \"float64\". A great way to visualize these variables is by using scatterplots with fitted lines.</p>\n", | |
"\n", | |
"<p>In order to start understanding the (linear) relationship between an individual variable and the price. We can do this by using \"regplot\", which plots the scatterplot plus the fitted regression line for the data.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's see several examples of different linear relationships:" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Positive linear relationship</h4>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's find the scatterplot of \"engine-size\" and \"price\" " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-4237.300266870955, 56232.53101890419)" | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAEKCAYAAADaa8itAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8XPV96P3Pdzbtq3dbkiVjg9kJNraxDSGQECBJIQkJJgmrU7hN0iRPn/Rpcts0fdLee5Pb3jTQ9kmg2GBIqENIE9yEJaxxbGywDRgwGGws2ZI32dql2ef8nj/OmfFIHkkz0oxGy/f9eglJvznnzDkaM985v+X7FWMMSimlVDa48n0CSimlJg8NKkoppbJGg4pSSqms0aCilFIqazSoKKWUyhoNKkoppbJGg4pSSqms0aCilFIqazSoKKWUyhpPvk9grE2fPt3U19fn+zSUUmrC2LVr10ljzIx0tp1yQaW+vp6dO3fm+zSUUmrCEJGD6W6r3V9KKaWyRoOKUkqprNGgopRSKms0qCillMoaDSpKKaWyRoOKUkqprNGgopRSKms0qCillMoaDSpKKaUGFYzEMtp+yq2oV0opNbxozKK9L0xvKJrRfhpUlFJKJRhj6ApE6PRHsIzJeH8NKkoppQDwh6O09YaJxKwRH0ODilJKTXERp6urL8OurlQ0qCil1BRljKHTH6EzEMGMoKsrFQ0qSik1BfWForT3ja6rKxUNKkopNYWEoxZtfSEC4cymCqdLg4pSSk0BlmXoDEToymJXVyo5XfwoIk0i8paIvCEiO522ahF5VkT2Od+rnHYRkXtFZL+IvCkiFycd5zZn+30icltS+xLn+PudfSWX16OUUhNRbyhKS0eATn84pwEFxmZF/UeMMRcZY5Y6v38beN4Yswh43vkd4FpgkfN1F/ATsIMQ8D1gObAM+F48EDnb3JW03zW5vxyllJoYQtEYRzoDtHYHiVrZHTsZTD7StFwPbHB+3gDckNT+sLFtBypFZA7wceBZY0y7MaYDeBa4xnms3Bizzdih9+GkYyml1JRlWYaTvSEOdwQyTrMyWrkOKgb4vYjsEpG7nLZZxpijAM73mU77PKA5ad8Wp22o9pYU7UopNWV1ByM0d/jpDkTy8vy5HqhfZYw5IiIzgWdFZO8Q26YaDzEjaD/9wHZAuwugrq5u6DNWSqkJKBiJ0dYXJjTGdyYD5fROxRhzxPneCvwae0zkuNN1hfO91dm8BahN2r0GODJMe02K9lTncb8xZqkxZumMGTNGe1lKKTVuxCzDiZ4QRzoDeQ8okMOgIiIlIlIW/xm4Gngb2ATEZ3DdBjzh/LwJuNWZBbYC6HK6x54BrhaRKmeA/mrgGeexHhFZ4cz6ujXpWEopNel1BSK0dPjpCeanqyuVXHZ/zQJ+7czy9QCPGmOeFpEdwGMishY4BHzO2f5J4DpgP+AH7gAwxrSLyN8DO5ztvm+MaXd+/jPgIaAIeMr5UkqpSS0YiXGyN0Q4mvsZXW80d2a0fc6CijHmAHBhivY24KoU7Qb46iDHWg+sT9G+Ezhv1CerlFITwEhrnIzE3mPdrNvSxK6DHRntpyvqlVJqnBttjZNMNJ7s48GtTWzZf3JE+2tQUUqpcSwQtru6sp34caDDnQE2vNzE8++2JqbRLpxRyp2r6/niD9M/jgYVpZQah7JZ42QoJ3pC/OyVgzz51jFilh1OaqqKuHNVPZefOQNXhtmvNKgopdQ4kosaJ6l0+SM8+uohnth9JDHgP7OsgNtW1nP1ObNwu0aWSlGDilJKjRO9oSgdOahxkqwvFOWXu1r45c4WAs66lqpiL19cPp9PXjAHn2d0K000qCilVJ7lusYJQCgS4zdvHOE/Xj1Ed9DuUist8LDmklo+ffE8irzurDyPBhWllMoTyzJ0+MN0B6M56+qKxCyeevsYj2w/SFtvGIBCj4vPLqnh80trKCv0ZvX5NKgopVQedAcjdPSFE4Pj2RazDC/sbeWhl5s42hUEwOsWPnnBXL64vI7qEl9OnleDilJKjaHkxI+vHmhn445mjnYHmFNexJpLalm2oHpUxzfGsGV/G+u3NnKwzQ+AS+Dj587mlkvnM7u8MBuXMSgNKkopNQaiMYt2f5heZzzj1QPt3PPCPjwuobzQQ1tfiHte2Mc3WDSiwGKMYdfBDtZtaeK94z2J9o+cNYPbVtZTV12ctWsZigYVpZTKIWMM3YEoHf5wv9XwG3c043FJYoC8yOsmEImxcUdzxkHl7cNdrN/ayBvNXYm2FQuquXNVAwtnlmbnQtKkQUUppXJkqNXwR7sDlBf2fwsu9Lo41h1I+/j7W3tZv7WR7QfaE20X1lSwdnUD582rGPmJj4IGFaWUyrJ0VsPPKS+irS/UbypvMGIxu7xo2OM3t/t56OUmXnzvRKLtrFllrF1dz5L5VUiGq+CzSYOKUkpliTGGDn+ErjRWw6+5pJZ7XthHIBKj0OsiGLGIWoY1l9QOus/x7iCPbDvI03uOEZ80Nn9aMXesqueyhdPzGkziNKgopVQW9IaitPeGiVrprYZftqCab7CIjTuaOdYdYPYQs786/GF+/soh/mv3ESIxO5rMqSjktpX1XLV45ohTqqTD685shb0GFaWUGoVQNEZbb5jgCEr5LltQPeSgfE8wwmM7W/jVay0EI3awmlbi45ZL53PtebMzfsPPhM/joqLIS2lBZmFCg4pSSo1ALL4aPpD9Ur6BSIxfv3aYjTuaEwW5ygs9rFlWxw0XzaUwSylVUin0uqks9lLsG1l40KCilFIZytVq+HDU4rdvHuXnrxykw28HqyKvm88treFzS2ooyfCuIRMlBR4qiryjDlgaVJRSKk25qg0fswy/33OMDdsO0toTAuzup+svnMvNy2qpLM5NShURodQJJqPNThynQUUppYYxcDV8tljGsPn9E6zf2kRLh70+xe0Srjt/Nl9aPp8ZZQVZfb44lwjlRV7KCz14sjwuo0FFKaUGkava8MYYXmlsZ/2WJvaf6AVAgKvOnsltK+uZVzn8WpWR8LjswfeyQg+uHM0Y06CilFIp+MNR2nqzXzBrd0sn6/7YyNtHuhNtqxZO485VDTRML8nqc8V53S4qir2UFXhyvpZFg4pSSiWJxCzaesP4w9nt6nr/eA/rtjSyo6kj0bakrpI7Vzdw9pzyrD5XXIHXTWWRN6cD/ANpUFFqknhpbyv3bT5Ac4ef2qpi7r58AVcsnpnv05owLMvQGUhvNXwmmtr6eGhrE5v3nUy0nTOnnLWr6/lQXVXWnidZsc9DZfHoZ3KNhAYVpSaBl/a28reb9uB1C5VFXlp7gvztpj18HzSwpKEnGKGjL5L2avh0HO0KsOHlgzz37vFESpUFM0pYu6qBFQuqU3ZDjaa+iohQUuCmoshLgWfsg0mcBhWlJoH7Nh/A65bEgrVinwd/OMp9mw9oUBnCaFbDD6atN8TPth/id28dJepEk5qqIu5YWc+Hz5qBa5AxjZHWV3GJUFZoTwvO9kyukdCgotQk0Nzhp7Kof63xIq+blg5/ns5ofItZhva+MD3B7K2G7w5E2LijmV+/fpiQs45lZlkBt146n4+fO3vY/FyZ1ldxu8SZyeXNae6vTOU8qIiIG9gJHDbGfFJEGoCNQDXwGnCLMSYsIgXAw8ASoA24yRjT5BzjO8BaIAZ83RjzjNN+DXAP4AYeMMb8INfXo9R4VFtVTGtPsF9qjUAkRk3V2FT7myiMMXQHo3T0hbM2RdgfjvKrXYd5bGczfWH7jqeyyMsXV9TxqQvmpr2oMN36Kl63K7HGZDxkJR5oLO5UvgG8C8SnN/wQ+GdjzEYR+Sl2sPiJ873DGLNQRNY4290kIucAa4BzgbnAcyJypnOsfwM+BrQAO0RkkzHmnTG4JqXGlbsvX8DfbtqDPxxNfMKNxAx3X74g36c2bgxVMGskQpEYm3Yf4dFXm+ly8n+V+NzcdEktn724hiJfZuMaw9VX8bpdVBbbCR7HYzCJy2lQEZEa4BPA/wD+Quy/xJXAF5xNNgB/hx1Urnd+Bngc+Fdn++uBjcaYENAoIvuBZc52+40xB5zn2uhsq0FFTTlXLJ7J97HHVlo6/NTo7K+EdApmZSIas3jq7WM8sv0gJ3vDABR4XHzm4nnctLSW8gHdkOkarL7KLSvqmFVeOKbTgkcj12f5Y+D/Acqc36cBncaY+KvbAsxzfp4HNAMYY6Ii0uVsPw/YnnTM5H2aB7Qvz/YFKDVRXLF4pgaRJMYYOv0ROrM0Rdgyhhf3tvLgy00c6QwC4HEJn7hgDresmE91yejycw2srzK3soi7L1/Ax8+bM+pzH0s5Cyoi8kmg1RizS0SuiDen2NQM89hg7ak6KlP+yxGRu4C7AOrq6oY4a6XUZJBpwayhGGN4+YM21m9tovFkHwAugavPmc2tl85ndkXhqJ8jbtmCaj5y9sysZAvOl1zeqawC/kRErgMKscdUfgxUiojHuVupAY4427cAtUCLiHiACqA9qT0ueZ/B2vsxxtwP3A+wdOnS7OaqVkqNG9meIvzawQ7WbW3k3aM9ibYPnzmDO1bWUzctu5MgSgs9VBb5spYtOF9yFlSMMd8BvgPg3Kl8yxjzRRH5JXAj9gyw24AnnF02Ob9vcx5/wRhjRGQT8KiI/Ah7oH4R8Cr2HcwiZzbZYezB/PhYjVJqCsl2wax3jnSzbmsjrx/qTLQtb6jmzlX1LJpVNsSemYmnnq8s9ua0iuNYysfIz18BG0XkH4DXgXVO+zrgEWcgvh07SGCM2SMij2EPwEeBrxpjYgAi8jXgGewpxeuNMXvG9EqUUnlnZxHOTsGsD0708uDWJl7+oC3Rdv68Cr68uoHzaypGffy48bZgMZskmzluJoKlS5eanTt35vs0lFKjFAjHaOvLTsGswx0BHnq5iRf2tiYGZhfNLOXLlzWwdH5V1qbwjtcFi8MRkV3GmKXpbDsx5qgppZQjErPo6AsnarePRmt3kEe2H+Kpt48m8nPNry7mjlX1XLZoetaCicdlp54frwsWs0mDilJqQsjmFOFOf5hHXz3EE28cIRKzjzW7vJDbVs7no2fPytpdhM9jF8Ua7wsWs0mDilLjgKatH1q2pgj3BqM8tquZx3e1EIzYx6ou8XHLijquO39O1gbLi3x2tuDktDlTxdS7YqXGmWylrZ+MgSlbU4QDkRi/ef0wG3c00+PUmS8r9LDmklpu+NC8fqlRRqO0wENFcX5Tz+ebBhWl8iwbaesnWz2VbGURjsQsfvfmUX72yiHa++yUKkVeNzcumcfnltZSmoXUJ5I0k2uyTAseDQ0qSuVZNtLWT5Z6KvEswqOdIhyzDM+9e5wNLx/kWLedUsXrFq6/aC43L6ujqnh0KVXAnslVXuilvGhizeTKNQ0qSuVZNtLWT4Z6KtnIImyM4Y/7TvLg1iYOttvX7hK49rw53HrpfGaUFYz6PMd76vmBxrpbVIOKUnmWjbT1E7meSjayCBtj2NHUwfqtjbx/vBewU25cuXgmt6+sZ15V0ajPs8DrTszkmijy0S06cf46Sk1S2UhbPxHrqViWoTMQoSvNKcKD1W9/s6WTdVuaeOtwV2LbVWdM4/ZV9Zwxo3TU51nss8dLMq2PMh7ko1tUg4pS48Bo09ZPtHoqmU4RTlW//Z+efY/qEl/izgTg4rpK1q5u4Ow55UMcbXgiQkmBfWcykWdy5aNbVIOKUpPEWNdTGUlffTASo70v8ynCyfXbQ1GLDn+Y3lAsUSRr8ewyvry6gYvnV434emDy5eTKR7eoBhWlVMYy7asf7RTho90BirwujnUH6Q6eGnvxuITvfeocVp4xbVSD5h6Xi/IiD+WFXlyTaCZXPrpFNagopTKWbl+9MYbuQJQOfxhrhKlV2vvCxGKGpu5Aos3rFsoKPNRWFbNq4fQRX4fXbefkKpukaVTy0S2qQUWpcWCirYZv7vDjFjhwopdwzMLndjG91Nevr360U4S7AxF+sbOZ/3ztMCEnE7FbYFqpD5/bRczAzctGVsm10JnJNVHqvo/GWHeLTv6/qFLj3ERcDV9W4GFfay9ul+B2CVHLcLgzyKKZpaOeIuwPR/nVa4d5bGczfSF77KWiyMvqhdNpbvfT2hNkemlhYvZXJkoKPBO6VO9EoEFFqTybiKvhE1OA4z1axm6LxCxaOgIjyiIcjlps2n2ER185RKdTwbHE5+bzS2v57JJ5I07OGK+uWFHknfCleicCDSpK5dlEXA3fG44xr7KQk71hwjELr0uYVlpAbyiacUCJxiye3nOcR7Yd5ERvCIACj4tPf2geN11SS8WAv026JttMrolCg4pSeTYRV8PHz7l+egkxy2BZhkAkxsyS9NOgWMbw0nsneOjlJlo67EF4j0v4xPlz+OKKOqaXjiylSry64mSbyTVRaFBRKs8m4mr4P13dwHc37SEctSj0ughGLKKWYc0ltcPua4xh+4F21m1t5MCJPsDOz/Wxc2Zx66XzmVMxspQqk30m10ShQUWpPLti8UxubOnkgS2N9IVjlPjcfHl1w7gdT+kORjhjVil//pGFbNzRzLHuALOT0qYM5fVDHazb0sQ7R7sTbZefOZ07VtYzf1rJiM7H53FRWeybUDm5JjN9FZTKs5f2tvL4a4eZUVZAnXOn8vhrh7mgpnJcBZZgxJ4iHHam9y5bUJ327Kt3j3azfksjuw51JtqW1Vdx5+oGzpxVltYxBub+uvXS+Vx7/pwJmZNrMtOgolSejffZX9GYRbs/TG8w8ynCB0708uDWJrZ+0JZoO29uOWsva+DCmsq0j5Oc+6uyyEtXMMyPn99HdYlvXPyN1CkaVJTKskwXMo7X2V/GGLoCETr9kYxXwx/uDLDh5Saef7c1Met44YxS1l5Wz7L66ozHPDbubMbncSXGS3we97gKvOoUDSpKZdFIFjKOx9lffaEo7X3hjFfDn+gJ8bPtB3ny7WOJyo21VUXcsaqBy8+cjivDYOISobzIy4meIFXFvn7BaDwEXnU6DSpKZdFIurLG0+yvcNSirS9EIJxZFuEuf4RHXz3Eb944TCRmB5OZZQXcvrKej50zK+Nyux6Xi4oiL2WFHlwuoa66ZNwFXpWaBhWlsmgkXVnZSvo3mvxhlmVo94fpCWa2eLE3FOXxnS38clcLASedfVWxly+tmM8nzp+T8Qr2waYFj6fAq4amQUWpLBppV9Zok/6NJn9YdzBCR1840V2VjmAkxm/eOMLGVw8lUtGXFnhYc0ktn754HkUZ5tYq8LqpHCLB40QrQjaV5SyoiEghsBkocJ7ncWPM90SkAdgIVAOvAbcYY8IiUgA8DCwB2oCbjDFNzrG+A6wFYsDXjTHPOO3XAPcAbuABY8wPcnU9SqUjX5+oR9LtNnCKcDoiMYsn3zrGz7YfpK3PLpBV6HVx45IaPr+kltLCzN5SMinVO9bZdtXI5PJOJQRcaYzpFREvsEVEngL+AvhnY8xGEfkpdrD4ifO9wxizUETWAD8EbhKRc4A1wLnAXOA5ETnTeY5/Az4GtAA7RGSTMeadHF6TUkPK1yfqTLrdok4W4d4MsgjHLMPz7x5nw7aDHO0KAnZNk09dOJcvLKujusSX9rEmS6lelVrOgoqxO2bjxaO9zpcBrgS+4LRvAP4OO6hc7/wM8Djwr2J3ql4PbDTGhIBGEdkPLHO222+MOQAgIhudbTWoqLzKxyfqdLrdjDF0+iN0BiJpj5sYY/jj/pM8uLWJg212gHIJXHPubG65dD6zygvTPkdN8Dg15HRMRUTcwC5gIfZdxQdApzEm/hGpBZjn/DwPaAYwxkRFpAuY5rRvTzps8j7NA9qX5+AylBr3hut2y3SKsDGGnQc7WL+lifeO9yTaP3LWDG5fWU9tdfqzriZrqV6VWk6DijEmBlwkIpXAr4GzU23mfE/1r80M0Z7qo07Kj18ichdwF0Bd3cgqxSk1ng3W7bZq0XSOdQXxh9Pv6nr7cBfrtjSyu6Ur0bZiQTVrVzVwxszStI+jCR6npjGZ/WWM6RSRl4AVQKWIeJy7lRrgiLNZC1ALtIiIB6gA2pPa45L3Gax94PPfD9wPsHTp0pEVylZqnEvudrMsQ2cgklHBrP2tvazf2sj2A+2JtotqK1i7uoFz51akfR5TqVSvOl0uZ3/NACJOQCkCPoo9+P4icCP2DLDbgCecXTY5v29zHn/BGGNEZBPwqIj8CHugfhHwKvYdzCJnNtlh7MH8+FiNUlNWbyhKe2+YqJVeV9ehdj8PbW3ipfdPJNrOml3G2lX1LJlflfZdRrHPQ2Wxluqd6nL5UWIOsMEZV3EBjxljfisi7wAbReQfgNeBdc7264BHnIH4duwggTFmj4g8hj0AHwW+6nSrISJfA57BnlK83hizJ4fXo1Ra7n3u/dPS2H/9o2cOv+MohaIx2nrDBCPprYY/1h3kkW0HeWbPMeJLVOqnFXPnqgZWLZyWVjDRmVxqIEn31lhE5gOLjDHPOXceHmNMz3D7jTdLly41O3fuzPdpqEnq3ufe554X9uMSe5aUZeyvb1y5MGeBJWYZ2vvC9AQjaW3f3hfm0VcO8V9vHkmkVJlTUchtK+u5avHMtFKqSNJMLq/O5Jr0RGSXMWZpOtumdaciIn+KPdBdDZyBPX7xU+CqkZ6kUpPRA1sacYk94wnswBK1LB7Y0piToGJnEU5vNXxPMMJjO1v41a4Wgs6Cx2mlPm5ZMZ9rz5udVnCIJ3isKPJmnM9LTQ3pdn99FXttyCsAxph9IqJLW5UaoC8cY2C6K5fY7dmUyWr4QDjGf77ewi92tCQWPJYXevjC8jquv3AuBWmMgQxM8KjUYNINKiEnlQoAzuwsnUWl1AAlPnuNSPL7rmXs9myIWYa2vlBaBbPCUYvfvnmEn79yiA6/3TVW7HPzuSU13LikJq3ZWTotWGUq3aDyBxH570CRiHwM+ArwX7k7LaUmpi+vbuCeF/YTtax+YypfXt0w6mN3BezEj8MVzIpZht/vOcaGbQdp7QkBdh33T180lzXL6qgYkM4lFa37rkYq3X8x38bOzfUWcDfwJPBArk5KqYkqPm6Szdlf6XZ1Wcbwh/dO8ODLTbR0BABwu4Trzp/NLSvmM720YNjnKvK5qSzyad13NWJpzf4SkRIgmDSV1w0UGGMmXNk1nf2lJop0Ez8aY3ilsZ11Wxr54EQfYC/i+ug5s7jt0vnMrSwa9rlKCuyZXLrGRKWS9dlfwPPYixfjCSKLgN8DKzM/PaXUUDKpDf9GcycP/LGRd452J9pWL5zOHavqaZheMuS+IkKpE0wyLaal1GDSDSqFxph4QMFJZ691PJXKsnQTP+491s26LU3sOtiRaFs6v4o7V9ezeHb5kPtqtmCVS+kGlT4RudgY8xqAiCwBArk7LaUmrpGU9U23NnzjyT4e3NrElv0nE23nzi1n7eoGLqqtHHJft0uoKPJqtmCVU+kGlW8CvxSReMLGOcBNuTklpSauTMv6Wpahwx+me5ja8Ec6A2zYdpDn3jmemMt/xowS1q5uYHlD9ZDTfb1uF+VFXsoLdVqwyr20gooxZoeILAbOwh4D3GuMSS8nhFJTSCZlfdOpDX+yN8TPth/id28dTWxXU1XEHSvr+fBZM3ANESR0WrDKhyH/tYnIlcaYF0TkMwMeWiQiGGP+M4fnplROjaSbajjplPUNRmK09YUJDZH4sSsQYeOrh/j1G0cSU4lnlhVw66Xz+fi5s4dMkaLTglU+DfcR5sPAC8CnUjxmAA0qakLKtJsqXUOV9U0n8WNfKMrju1r45a4W/M74SlWxly8ur+OTF8wdcpZWaYGHcp0WrPJsyKBijPmeiLiAp4wxj43ROSmVc5l0U2UiVVnfcNTiS8vraG73DzpFOBSJ8Zs3jvAfrx6i20nBUlLg5qaltXz24ppB7zp0WrAab4btbDXGWE7dEg0qakRy0c00Wul0U43EwLK+cyqK+NySGs6eW54yoERjFk++fYxHth+krTcMQKHHxWcunsdNl9RSVpg6pUo8W3B5oUenBatxJd0RvGdF5FvAL4C+eKMxpn3wXZTKXTfTaA3VTTVaVyyeycqF02nvCw9aGz5mGV7Y28pDLzdxtCsIgNctfPKCuXxxeR3VJb6U++m0YDXepRtU7sQeQ/nKgPYF2T0dNdnkqptptFJ1U0VihrsvH90/6eGmCBtjePmDNtZvbaLxpP35zCXw8XNnc8ul85ldXpjyuJotWE0U6QaVc7ADymrs4PJH7CJdSg0pV91MozWwm6omC91yQ00RNsbw2qFO1m1pZO+xUwVTrzhzBrevrKduWuo7JJ0WrCaadP+lbgC6gXud32922j6fi5NSk8dIupnGagzmisUzs3Lc4bII7znSxbotTbzR3JloW95QzdrVDSycWZpyn0Kvm8pib7+/m1ITQbr/Ys8yxlyY9PuLIrI7FyekJpdMu5lSjcH85eO7mVbiozccGzcD/TB8FuEPWntZt7WR7QdODT1eUFPBl1c3cN68ipT7FPs8VBbrtGA1caUbVF4XkRXGmO0AIrIc2Jq701KTRabdTAPHYGKWocMfoScUZeGM0tMG+vMxsyyeRbjDH0k5btLc7uehl5t48b0TibYzZ5WydnUDS+dXpRwTKXUSPBZ4NJioiS3doLIcuFVEDjm/1wHvishbgDHGXJCTs1OTQibdTAPHYE70hHCJHVxEpN9APzDmM8v84ShtvamzCLd2B3l4+0GefvsY8WGV+dXF3LG6nssWTj8tmMTXmFQWe/HqtGA1SaQbVK7J6Vko5Rg4BhOOWQjgS3rTjQ/0j9XMspf2tvKTP3zAoXY/s8oKWXNJLcsWVCce7/CHefSVQ2zafYRIzI4ms8sLuX3lfK46e9ZpKVU09byazNJNKHkw1yeiFJw+BuMWIWqZfqVw4wP9YzGz7IV3j/PdJ/bgEigtcNPWF+KeF/bxDRZxztxyHtvVzOO7WghG7DuXaSU+vrSijuvOn3Pa3YfbJZQXeikv8g6Zu0upiUynlqhxZeAYTMP0Ek70hvC4BWNMv4H++zYfGNUCxnufe3/IWvI9wQj/8sJ+XGIHK7C/94Wj3PP8PnrDUXqclCrlhR7WLKt9XX49AAAgAElEQVTjhovmnjbI7nG5qCjyUlbo0QWLatLToKLGnYFjMPHB+FQD/SNdwHjvc+9zjxMwPC47GN3zwn4A7vrwGYkswke6ApQX2v+bWM4Afbs/kliLUuR187mlNdy4pOa0tSS6YFFNRRpU1Lg32ED/aBYwPrCl0QkodheVSyASi3H/Hw/wyQvnJrabU17Eyd4gkZihrS9M1AkmAty4pIabl9VSWdw/pYouWFRTWc7+1YtILfAwMBuwgPuNMfeISDV2DrF6oAn4vDGmQ+yPcvcA1wF+4Pak8sW3AX/jHPofjDEbnPYlwENAEfAk8A0zVPk8NemMdAFjXzhGPKlv/J+MS0ikmwf7zuScueX8YmdXv1XyxT4337hyER87d1a/Y+qCRaVye6cSBf5vY8xrIlIG7BKRZ4HbgeeNMT8QkW8D3wb+CrgWWOR8LQd+Aix3gtD3gKXYKWJ2icgmY0yHs81dwHbsoHIN8FQOr0lNEiU+u7tMMInyvJaxu7OMMbza1M66LU3sb+1N7FPoddEwrYTbLq3vN/urxEk9rwsWlcphUDHGHAWOOj/3iMi7wDzgeuAKZ7MNwEvYQeV64GHnTmO7iFSKyBxn22fjGZGdwHSNiLwElBtjtjntDwM3oEFFpeGOlfX8y4v7MWIQAWPsoHL5oul88xdv8Nbh7sS2qxZO446V9SyYcSqliohQUmBXWIzXMRmPKf6VGmtjcp8uIvXAh4BXgFlOwMEYc1RE4v/XzQOak3ZrcdqGam9J0a7UoGJOFuEbLq6hOxDhsV0tBCIxfG4X00p9PLXneGLbJXWV3Lm6gbPnlCfaBluwOF5T/Cs11nIeVESkFPgV8E1jTPcQs2BSPWBG0J7qHO7C7iajrq5uuFNWWTSST++5+MRvjKE7GKXTfyqL8C0r67nsrBk8tLWJzftOcrjTrmtyzpwy7lzdwMV1VYn9h1uwOF5T/Cs11nIaVETEix1Qfm6MidezPy4ic5y7lDlAq9PeAtQm7V4DHHHarxjQ/pLTXpNi+9MYY+4H7gdYunSpDuSPkeE+vacKHpD91CuBsJ1FODm1yrGuIBu2NfHsO8cTKVUWTC/hztX1XLpgWmIKcLzCYsUwCxbHa4p/pcZaLmd/CbAOeNcY86OkhzYBtwE/cL4/kdT+NRHZiD1Q3+UEnmeA/yki8Y+NVwPfMca0i0iPiKzA7la7FfiXXF2P6i+du4n7Nh8gEovR1hslHLPwuV2UF3mGzNtV4nNn7RN/xMki3JeURbitN8TPXjnE7948mpgePK+yiNtX1vORxTNwOcEk0wqLtVXFNJ7spSd46lrLCj00TE+d2l6pySqXdyqrgFuAt0TkDaftv2MHk8dEZC1wCPic89iT2NOJ92NPKb4D7JLFIvL3wA5nu+8nlTH+M05NKX4KHaQfEy/tbeUvH99NTzBK1LI42RPiLx/fzT/eeGG/N/59rT10+SO4XILbZadbOdkTpivQydqHdxKzDC6xU5vMrijCH46yv7UXr1uIWAaf28WMsgJKCzwZfeK3LENnIEJX4FQW4e5AhI07mvn164cJOXVPppf6uPXSeq45d1aiS8vjshcslhdmtmDx0gXVvNrUjkvsqcnhmMWJ3jBfWFY9/M5KTSK5nP21hdTjHgBXpdjeAF8d5FjrgfUp2ncC543iNNUI/PDpvXT4I7hdgsftwhjo8Ef44dN7+wWVcNQCIfHpXwQixiLSby0InOgNA/b6j4hlQEgEoSOdQaaVeqmfNvgn/uS7pjkVhXxuSQ1L6+03c384yq92Heaxnc30Oc9bWeTlC8vr+JML5yZmbnndLiqLvZSOcPX7tgPtzCzz0R3of1e27UA7X8/4aEpNXLpKS2XswMk+5xP5qWBhxHDAqbke53ULgYh955A8bRfsT/PGnJpZcaI3jM8teOMLEi37uBaG9r4IN19Szc33bz+tuy0+buN2QbHXzbGuIP/83D6+8uEzONId5NFXDtEViABQUuDm80tr+ezF8xLda9la/d7c4WdaSQHTS0/VmDfG6JiKmnI0qKicOXNW+WnjDKGYHSxcIkQHJD8IxwwzS30U+Tx2eV5nH5cYHn/tcMrB+5/+4QNEDF6XvfCw0OPiZF+Y7//unUQa+gKPi89cPI+bltZS7gymZ3v1+0jKJis1GWlQURlrmFbM/hN9yIA7kIXT+7+BxtPYz67wJBI+HjjRh0C/tCfJOgMRZlUUJd78/eEoJ3pCpw3e94Ui/OuL+2np8OMSON4VJBwz/e5+PC7hkxfM4Usr5lNdYufnKvK5qSr2ZX31+92XL+AvH9/N4Y4AUcvC47IH6r/7iXOy+jxKjXcaVKawka4H+fa1Z/Otx3fTG4oSswxul1BZ4OXb157db7tUCR8vmFfOpjePYQ24S3Fh38GEY4YTPUF6glFCUQu3S/C5JZF6HuyA5HG5aOnwU+R109TmP22BUmmBh/tvWcLsCrs7aixSqRgAsRdIIoMsmlJqktOgMkWlO4MrlTdbOukLRQlG7KqMs8sL+fvrzxtyv/gb7PUX1dAwvZQfPbcv8ZgLKPC6iVkWsZjhWHcoaT+DZYSTvSGmlRYQswyWZddVKfF5ONR+ekABKPG5mFNZdFoqlUxkEnTv23yAiiIvcyqKEm26+FFNRVrLdIqKz+AyYM/g4tQMrqHE65BELUOBR/C4hSNdQd5s6Txt2/ggemtPsN9YyAU1lSyeVYrHJRS4Xfg8LizLEI2dCg/ifMUsiMYMJ3tDdAcixCyLzkCE490hPjjZZ88WS6GtN0xNVREzywpHHFBSnftLe1tTbt/s3DUl08WPairSoDJFJc/gEgSXCC7htBlcAyXXIXGJy/lutw+UnLpExP7udQv3bT7At689m8piL+KCmDGIC9zuU1N5Dafubozzn2Kfh0PtAVp77EH8ocTgtHK+mbhv8wHC0RjHuoK8d7yHY11BwtFYYuHmQLVVxQQisX5tOlCvpiINKnn00t5Wbr5/O6t/+AI337990E/B40lfOMbABeYuIbEGJNlQn96vWDyTf7rxQj5UW8Xs8kI+VFtFxYA0J8liBt4/3pNYuLhwZin/6zPnDfoP2D3IUpN0/+bvH++mtSeEP2xXk/SHY7T2hNh3vDvl9ndfvsDZLoox9vd0q1AqNZnomEqe5DurbbozuAYq8dk12mNW/yBS5D397X24abYDC2zdfP92Tva2pXze+F1LXXUxd6yq57JF0/G53Zwxo4T9J/oS28S7zRbOOH2xZCZ/c384RnLPmsH+G6UKnvFrGWkVSqUmEw0qeZLvrLbpzuAa6KrFM/j1G0dPa7eM/aadfO7xKcWD1ZBPHgivqSziQ7WVbDuQOqi4BL519Vl87JxZFHrdidrvf/2Jc067jtICT8rryORvnlw2GAGcqcrRQcZwYORVKJWaTDSo5Em+s9rGu58y/WR9rDuMS2Dge2soap2WpmWoT+/Jdw1lBR6OdAVobOtz7oT63w2U+FycMaOMT104l8piL2WF3n7Pkeo6gNNW4GfyN3eJ4HEZLGPfoYjYXWquEaRwUWoq0aCSJ+NhBfZIPlk3d/iJLzFJfn81JvUg/2DPcd/mA7hd9oB/JGbhD8Vo94f7pXGpKrbXlRgDX7niDGqrU/9tBj7HS3tb+929nOwN8a3HdzOjtIBAJJbW33zB9BL2Ockt492DMcuwYHpJOn8mpaYsHajPk4k6sFubKuiZwTOHphKNWTS19eEW6OgL0djm52SfHVAEuPKsGZwzpxyfx828ymL+56fP55rz56R9/B889S6d/gjGArcIxoJOf4SeQDjtv/lfXbOYqmIv4pyvYAe5v7pm8aDPOxEnXiiVbXqnkifjZWA301X1d1++gB1NbUQtSF4U7xZ78H8oxhg6/RHa+sJ4XS4a2wKJdC2CnfBxfnUJ/+uzF4xq9Xtjm526JV4HRQSMZTjRF+G+L12Q1t/8isUz+ccMugfzPfFCqfFCg0oWZfoGnc2B3ZGW7c30jfCKxTP5+pWLuPeFfTiZ7fG67eqIQw3y94aitPWEePG9Vh7c2sShpHGM8kIPJQVuXOLi//roImaVFw56nHSuPWZZg459ZPI3z2TbfE+8UGq80KCSJfn8pDrS5x7pG+HXP3omF9RUpvUp/vdvH+Mnf9hPY5ufUMTqt0DwwpoKwlGLrkCE2upi/uzDZwxaZjiTOwQRIRoziPSfLr1oRu7GQ5o7/IQiURpP9mEZnOJjXrumjFJTiAaVLMnnJ9WRPvdoZqAN9yk+GrP47e4j/P3v3qU3FE0sWgQ4e3YZf3H1WfhDUR599RA9oWjiziLTAJmqZHFZgYeeUDQxHuJxuYYdDxk1YzjRG0n8ahcfi1BTmbsElkqNRxpUsiSfU4RH+tzxGWjx3FrhmJ0VuH6QWVbpiI+bvNrUznc37aEneKo+fJHXTVmhh5ICDy7g/zz7fsoa9YPVtU8VVFKVLA4Ho3g9LjwuIRI2+DwublkxP6fBvb3PDijJnW4mqV2pqUJnf2VJPnM/jfS57758AV2BCIc7A0ScGU7RmKGtLzyimUu9oShb9p3km794g7sf2ZUIKIUeF/MqC6mfVsyMUh/Hu4M8sKUxZV6w/a29nOwJE3UWMsbr2u9r7Un5nMkli+M5zCzstCrxKcW9oSj//scDOZ2NFYpZeF2nplmLgNdltys1lWhQyZJ8ThEe6XNfsXgmhR4XljGEY4aoZagu9lJe5B00cSKcPnX2928fY9fBdr712G5ue/BV/vD+CcAOJtNLfNRPK6aq2IfH7SIYtaipKh40L1jUmNOCBMKgYxNeJ8mXZRmMsdPix9/H42teLAM9oRh/8+s30/lzjkiJzw0iFHjcFHrdFHjs30t82v2lphbt/sqSfE4RHulzv7S3laPdQTwu+83bGOgIRCjyDd51Fh/zCEdjdAciHOkI8EqjnVol/iY+p6KQO1c1MLPUxz89+z4Ry+Bx0y/Y3bf5QMrFn/FEkMl17QF8g2SIHKxkMZy+OPNwUp2WbPvy6ganJICVyDhgGbtdqalEg0oO5KPi30imJ9+3+QBel11LRcReOY4Fx3tCfKi2atB9ugMhOgNJ3W3OBZcXeli7uoE1y+qYXlqA2yVUFPsGDXap8oItmllGhz/cL0iUFXppmH56gkhIXbL4gxOp0/ebHL4wX//omYBdAqAvHKPE5+bLqxsS7UpNFRpUsmQiLn7b19pD1LKI9ywJ9lRYjKTsOjPGsPdYV/+AkmRGWQFfu3IR7qTc+IMFu8HuroDTgkQkZrh0QfVpubzixx54nJaOgD3bLJ622AkmxTnuivr6R8/UIKKmPA0qWTLRFr+9tLeVjr4wScUWMdh1S2orC08755M9QR7edpAOf5TBNJ7o6xdQhjNYwBkYJC5dUM0j2w8OWvp44HHufe59fvz8Prs7LimX2H8b5ylwlJoMNKhkSXOHH7fAgRO9iW6b6aW+cVtO9odP7+0XUJIlDy53B8L8/JVDrN/SxIneocckLOw39NF+Wh8YJK798WY6/BHcLrFLH5tTpY9TBSXtilIqfzSoZElZgYd9rb24k9ZLHO4Msmhm6rGAfBuqbPDJvjD+UJTHX2vh/s0HaOkIJB5LlfY+2U//cCDrb97JpY/ByeUlZshr0K4opfJDg0qWmPgocL/C6knt41DScEM/7X1hrvrRHzjaFUxsV1nspdjnxi1CS2dg0MDij6Qeb1FKTQ05W6ciIutFpFVE3k5qqxaRZ0Vkn/O9ymkXEblXRPaLyJsicnHSPrc52+8TkduS2peIyFvOPveK5Ld6Um84xrzKQjxuIWYMHrcwr7Jw0PKz+TZURmHLkAgoly+azmN3X0qxz01VsY+KYl/q9Pc51DCt2J6im7QWxTLDZ0VWSo29XC5+fAi4ZkDbt4HnjTGLgOed3wGuBRY5X3cBPwE7CAHfA5YDy4DvxQORs81dSfsNfK4xVVtVjMftYsGMUhbPLmfBjFI8bteYFt3KxHXnzxly6rMAj9y5jAfvWMYlDdXUVZckVu2XD0gJk47R1Br59rVnU+x1EbEsglGLiGVR7HUNW/pYKTX2chZUjDGbgfYBzdcDG5yfNwA3JLU/bGzbgUoRmQN8HHjWGNNujOkAngWucR4rN8ZsM3b/0sNJx8qLfBfdemlvK9f+eDNn/c1TnPU3T3HNP/9hyDfuJ986vc58MgNcduaMxGyu5OvrDoQzPre/3bSH1p5gv+nWWsRKqclnrNO0zDLGHAVwvsen7swDmpO2a3HahmpvSdGeN1csnsn3/+RcZpYV0hWIMLOskO//ybljMp34pb2t/OXju3nvWA+hqEUoarH3eC9f+fmu0964IzGL1w918F5rb0bPEb8+r8seUxlMqoXv8UzCx7qCvHe8h2NdQSKx2JCpYJL98Om9+CMWXreLQq8Lr9uFP2Lxw6f3ZnQNSqncGy8D9anGQ8wI2lMfXOQu7K4y6urqRnJ+aclm0a1M3Lf5gF3ffUC7P2Lx3Sfe5o+LryQctXj/eDf3bT7Ak28dG9Hq8isWz+S+zQeYGYxwtCv19GKP+/TPKakyCZ/sCROJpU4SOdBIZn8ppfJjrIPKcRGZY4w56nRhxT9GtwC1SdvVAEec9isGtL/ktNek2D4lY8z9wP0AS5cuHb/TsdI0sIjVvtYeBkuG29wR4P1j3fz7Hxt5YveRtItGDTbtIR4gBlPgOT2oJGcSjh/bEqMFrJSahMa6+2sTEJ/BdRvwRFL7rc4ssBVAl9M99gxwtYhUOQP0VwPPOI/1iMgKZ9bXrUnHmtRSjU8k1yxJ5Yb/72V+uauFcNSiqtjLN65aSFXx0J8nBruTiQeIwXSnOJdUmYRh8CSRAzVMKyZmGYKRGIFIjGAkRswyOvtLqXEol1OK/wPYBpwlIi0ishb4AfAxEdkHfMz5HeBJ4ACwH/h34CsAxph24O+BHc7X9502gD8DHnD2+QB4KlfXMp4kp4OJ1yGpKh56NpY/HKO0wMOfXtbAb//8Mr5x1Zksnl0xbGBJxZtmIEh25qxyppX4+k23nlbiY9Gs8rT2v+78Oaeti7GM3a6UGl9y1v1ljLl5kIeuSrGtAb46yHHWA+tTtO8EzhvNOU5EqdLBDFez44vL67hzdT3zq0sSYx53X76AtRt2DLrPYJ824qnmj2WQRj5VJuFMZsZtO9DOrPKCAZmLPWw70M7X0z4LpdRYGC8D9WoY8XGUY11BopbB67YHvSMxi9beoRdYfu9T5+JLMdYxWO4vgOqS1Hc/8QCRidHWmmnu8DO9tIAZZYWJNmPMuM2rptRUpkFlAkgujBV1+oEiMUNkqKiQJFVA+e4Tb6fY8pTuQOpxmniAuP2h1Hc5g3WOjWZmXG1VccqCXuN1YalSU5kGlQngvs0HCEdjtPVltugwbuBssbsvX9AvSWQq4SGyRl6xeCa1VUU0pzhGTVXRiM5xKPG7o4EFvcZqYalSKn1ao34CaO7wc6InlPadyUCpVrMPd6ThhuM/t6TmtG3Eac+2fC4sVUplRu9Uxjl/OEo0Zg05/jGcVMXDhuMS+w5nsDfusR48z9fCUqVUZjSojFN9oSidgQj7j/dwvCf9mVapFHndQ/4+kEvs0sBDVa3UwXOlVCoaVMaZvlCUDn+Y5nY/j2w7yNN7RpZSJU7EHtQeOMg9WC0VsAfGywo9QwYIHTxXSqWiYyrjRG8oSkuHn3ePdvOjZ9/n1vWv8uTbx4asspiOeRWFKbMn33DRHITTx05mlPooL/IOGyDynZVZKTU+6Z1Knry0t5Wf/uEDDnX4mVVWyKcumMsHJ3v51a4Wgk5OrGklPm65dD4/fm7fiJ7DJfAPN5wPpF4j0jD9fR7Y0khvKIoBKgo9zCovTCtAjHbtiVJqcpLxXO42F5YuXWp27tyZ0T6ppuSO5s3zxXeP890n9uBy2YPoJ3vCdAejie6o8kIPNy+r44aL5lJR7GPlD14Y0fN8+qI5/POai4ffkFPXqAFCKTWQiOwyxixNZ1u9UxlGfOGh1y39puR+HzJ+07UsQ3cwwr0v7AcMgbDFYX+EmNPH5RL40or5fG5JDZXFPqpKfJQWeHDBaWntU4mPk4hzrHePppdaHnR2lVIqOzSoDCM5gSOcmpI71MyogWKWoSsQoTsQIRKz+OBEL/7wqdXxAlQUe/G5hDtXNVBZ7KWiyIvEU8W7hHQGVwqTZnXFLIvGNp2JpZQaWxpUhtHc4adyQE32Iq87ramz0ZhlB5NglJhlsfn9E6zf2tQvPXxFkYfqYh9RyzCzrJCaqqLTCl2V+Nx0B6MpZ2wNNYtLKaXGmgaVYYxk6mzECSY9wSiWZfFKYzvrtzSx/4RdwleAQq+LyiIvpYUeQlELA/z5lQtTVk788uoGfvTcvpTBI94mgGWMXRXR2Dc2i2aUjPi6lVJqJDSoDCOTvFOhaIyuQIS+UAxjDLtbOln3x0bePtKd2Gb1wuncsaqeE90hfrGzmdbuIHXTSoYcGP/6R8+k8WQvv9l99LQ1K8U+Nx8/ZyZb9rfRE7RX33tcLqqKvfzVNYuz+rdQSqnh6OyvNAw3MyoYiQcTu1vr/eM9rNvSyI6mjsQ2S+ZXsXZ1PYtnlyMilBV6qCr24XalX/RqqPPQ2VtKqVzJZPaXBpVRCEZidPojiVxaTW19PLi1iT/uO5nY5pw55Xz5sgYuqq0E7IH+6hJfynT0Sik1HumU4hwLhGN0BsIEwnZxrCOdAR7edpBn3zmeGONYMKOEtasaWLGgGhHB63YxrdTXb2xGKaUmG32Hy4A/HKXDHyEUsYPJyd4QP9t+iN+9dTSx1qSmqog7Vtbz4bNm4BK7OmNlkY/yIk9iirBSSk1WGlTS0BuK0ukPE3bSp3QFImx89RC/eeMIIadtZlkBt6yYz8fPnYXH7RrxuIlSSk1kGlQGYYyhJxSly28vWAT7TuXxXS38cmcLfU7XV1Wxly8sr+NTF8xNjJPouIlSaqrSoDJAPJVKdyBK1LKDSSgSY9PuIzz6ajNdgQgAJQVu1lxSy2c+VEORz17J7nW7mF5akPhdKaWmGg0qjuRUKpYzIy4as3h6zzEe3naQk712ffhCj4tPXzyPNZfUUlZor7R3u4TKYh8VA1beK6XUVDPlg0o0efW7E0xiluHF91p56OUmjnQGAfC4hE9dOJcvLq+jusSX2L+s0Et1iY6bKKUUTOGgEolZdPojdi0RJ5gYY3j5gzbWb22i8WQfYGf7vfqc2dx66XxmV5wqnVvodVNd4uuXxFEppaa6KRdUjIHW7iC9oWi/9tcOdvDAlkb2HjuVLv6KM2dw+8p66qadyvPlcbmoLrVT0iullOpvyr0zhmNWv4DyzpFu1m1t5PVDnYm25Q3V3LmqnkWzyhJtIkJFkZeqYq+uN1FKqUFM+KAiItcA9wBu4AFjzA/S2e+DE708uLWJlz9oS7RdUFPBl1c3cN68in7bFvncTCsp0CnCSik1jAkdVETEDfwb8DGgBdghIpuMMe8Mtk8kavEPv3uXF/e2JlKqnDmrlLWrG1g6v6rfXYjX7aK6xEeJdnUppVRaJvq75TJgvzHmAICIbASuBwYNKo1tfQT3tgIwv7qYO1bXc9nC6f2CiYhQNaD6olJKqeFN9KAyD2hO+r0FWD7cTrPLC7l95XyuOnvWaVOBSwvtSoypimUppZQa2kQPKqluI07L5S8idwF3AVTPrWfDnZfgHRA0CrxupukUYaWUGpWJ/nG8BahN+r0GODJwI2PM/caYpcaYpXNnVPULKB6XixllBcyrLNKAopRSozTR71R2AItEpAE4DKwBvpDOjiJCuZNF2KWr4ZVSKismdFAxxkRF5GvAM9hTitcbY/YMt59OEVZKqdyY0EEFwBjzJPBkutt73cKciqIcnpFSSk1dU+6jukunCCulVM5MuaCilFIqdzSoKKWUyhoNKkoppbJGg4pSSqms0aCilFIqazSoKKWUyhoNKkoppbJGg4pSSqms0aCilFIqa8SY0zLFT2oicgI4CEwHTub5dMbCVLhOvcbJYypc50S8xvnGmBnpbDjlgkqciOw0xizN93nk2lS4Tr3GyWMqXOdkv0bt/lJKKZU1GlSUUkplzVQOKvfn+wTGyFS4Tr3GyWMqXOekvsYpO6ailFIq+6bynYpSSqksmzJBRUSaROQtEXlDRHY6bdUi8qyI7HO+V+X7PDMhIutFpFVE3k5qS3lNYrtXRPaLyJsicnH+zjwzg1zn34nIYef1fENErkt67DvOdb4nIh/Pz1lnRkRqReRFEXlXRPaIyDec9knzeg5xjZPttSwUkVdFZLdznf+v094gIq84r+UvRMTntBc4v+93Hq/P5/mPmjFmSnwBTcD0AW3/G/i28/O3gR/m+zwzvKbLgYuBt4e7JuA64ClAgBXAK/k+/1Fe598B30qx7TnAbqAAaAA+ANz5voY0rnEOcLHzcxnwvnMtk+b1HOIaJ9trKUCp87MXeMV5jR4D1jjtPwX+zPn5K8BPnZ/XAL/I9zWM5mvK3KkM4npgg/PzBuCGPJ5Lxowxm4H2Ac2DXdP1wMPGth2oFJE5Y3OmozPIdQ7memCjMSZkjGkE9gPLcnZyWWKMOWqMec35uQd4F5jHJHo9h7jGwUzU19IYY3qdX73OlwGuBB532ge+lvHX+HHgKpGJW/d8KgUVA/xeRHaJyF1O2yxjzFGw/8EDM/N2dtkz2DXNA5qTtmth6P+hJ4KvOV0/65O6Lif8dTrdHx/C/oQ7KV/PAdcIk+y1FBG3iLwBtALPYt9ldRpjos4mydeSuE7n8S5g2tiecfZMpaCyyhhzMXAt8FURuTzfJzTGUn3ymchT/34CnAFcBBwF/o/TPqGvU0RKgV8B3zTGdA+1aYq2CXGdKa5x0r2WxpiYMeYioAb77ursVJs53yfsdaYyZYKKMeaI870V+DX2C3083mXgfG/N3xlmzWDX1ALUJm1XAxwZ43PLGmPMced/XFG9918AAAPuSURBVAv4d051i0zY6xQRL/ab7c+NMf/pNE+q1zPVNU7G1zLOGNMJvIQ9plIpIh7noeRrSVyn83gF6Xf3jjtTIqiISImIlMV/Bq4G3gY2Abc5m90GPJGfM8yqwa5pE3CrM2toBdAV71aZiAaMH3wa+/UE+zrXODNqGoBFwKtjfX6ZcvrQ1wHvGmN+lPTQpHk9B7vGSfhazhCRSufnIuCj2ONHLwI3OpsNfC3jr/GNwAvGGbWfkPI9U2AsvoAF2LNIdgN7gL922qcBzwP7nO/V+T7XDK/rP7C7CyLYn3bWDnZN2LfY/4bdt/sWsDTf5z/K63zEuY43sf+nnJO0/V871/kecG2+zz/Na1yN3eXxJvCG83XdZHo9h7jGyfZaXgC87lzP28DfOu0LsIPifuCXQIHTXuj8vt95fEG+r2E0X7qiXimlVNZMie4vpZRSY0ODilJKqazRoKKUUiprNKgopZTKGg0qSimlskaDilI5JiJzReTx4bcc1XM8GV8boVQ+6ZRipZRSWaN3KkoNQUS+5NTGeENE7nMSBfaKyP9w6mVsF5FZzrZnOL/vEJHvi0iv014vTi0YEbldRP5TRJ526mr876TnulpEtonIayLySydH1sDzmSMim53zeVtELnPam0Rkuoj8t6S6JI0i8mK6x1YqGzSoKDUIETkbuAk7GelFQAz4IlACbDfGXAhsBv7U2eUe4B5jzCUMnaPqIue45wM3iV28ajrwN8BHjZ34dCfwFyn2/QLwjHM+F2KvSk8wxvzUeewS7OwDP8rg2EqNmmf4TZSasq4ClgA7nPIWRdgJHcPAb51tdgEfc36+lFM1Mh4F/mmQ4z5vjOkCEJF3gPlAJXZRqq3Oc/mAbSn23QGsdxIz/sYY80aKbcAOcC8YY/5LRD6Z5rGVGjUNKkoNToANxpjv9GsU+ZY5NRgZI/P/j0JJP8f3F+BZY8zNA55rOXCf8+vfGmM2OWUbPgE8IiL/aIx5eMA+t2MHqq8lXcdpx1YqF7T7S6nBPQ/cKCIzIVEvfv4Q228HPuv8vCbD59oOrBKRhc5zFYvImcaYV4wxFzlfm5znbzXG/Dt2xt9+telFZAnwLeBLxk4lP+ixMzw/pdKiQUWpQRhj3sEei/i9iLyJXcFvqJK93wT+QkRedbbryuC5TgC3A//hPNd2YHGKTa8A3hCR17ED2D0DHv8aUA286AzWP5DBsZUaNZ1SrFSWiEgxEDDGGBFZA9xsjLk+3+el1FjSMRWlsmcJ8K9OMapO4M48n49SY07vVJRSSmWNjqkopZTKGg0qSimlskaDilJKqazRoKKUUiprNKgopZTKGg0qSimlsub/B7QB1f2ec633AAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# Engine size as potential predictor variable of price\n", | |
"sns.regplot(x=\"engine-size\", y=\"price\", data=df)\n", | |
"plt.ylim()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>As the engine-size goes up, the price goes up: this indicates a positive direct correlation between these two variables. Engine size seems like a pretty good predictor of price since the regression line is almost a perfect diagonal line.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" We can examine the correlation between 'engine-size' and 'price' and see it's approximately 0.87" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"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>engine-size</th>\n", | |
" <th>price</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>engine-size</th>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.872335</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>price</th>\n", | |
" <td>0.872335</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" engine-size price\n", | |
"engine-size 1.000000 0.872335\n", | |
"price 0.872335 1.000000" | |
] | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df[[\"engine-size\", \"price\"]].corr()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Highway mpg is a potential predictor variable of price " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fdd60256390>" | |
] | |
}, | |
"execution_count": 19, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ0AAAEKCAYAAADJvIhZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xl83NV56P/PM5tG+z7yJm/YRmIPGIMJi7GdBpI0JLekF5LbkP6SC22SJr29SUPa/tJebtqGV3tLoFkKSWiW5kKImyY0Cwm2MYZgAzZgwEi2hbzJi0aWZG2zz5z7x/c78kgeacbSaGYkP+/XSy9pznxndDS25tE55znnEWMMSimlVD44Ct0BpZRS5w8NOkoppfJGg45SSqm80aCjlFIqbzToKKWUyhsNOkoppfJGg45SSqm80aCjlFIqbzToKKWUyhtXoTtQbBoaGszSpUsL3Q2llJpVdu/efcoY05jpOg064yxdupRdu3YVuhtKKTWriMjhbK7T6TWllFJ5o0FHKaVU3mjQUUoplTcadJRSSuWNBh2llFJ5o9lrObCt3c/D2zs52h+gubaMe25czroWX6G7pZRSRUdHOtO0rd3Pl57ci38oRE2pG/9QiC89uZdt7f5Cd00ppYqOBp1penh7J26nUOZxIWJ9djuFh7d3FrprSilVdDToTNPR/gClbueYtlK3k67+QIF6pJRSxUuDzjQ115YRjMbHtAWjcRbVlhWoR0opVbw06EzTPTcuJxo3BCIxjLE+R+OGe25cXuiuKaVU0dGgM03rWnzc9/6L8VV6GQhG8VV6ue/9F2v2mlJKpaEp0zmwrsWnQUYppbKgIx2llFJ5o0FHKaVU3mjQUUoplTcadJRSSuWNBh2llFJ5o0FHKaVU3mjKtNJTspVSeaMjnfOcnpKtlMonHenkwGweKaSekg1Q5nERiMR4eHvnrPkZlFKzh450pmm2jxT0lGylVD4VPOiIiFNEXhWRn9u3l4nIiyJyQER+JCIeu73Evt1h37805Tm+aLfvE5F3p7TfYrd1iMi9M9H/2V5PR0/JVkrlU8GDDvBZoC3l9v3AA8aYlUA/8HG7/eNAvzFmBfCAfR0ichFwB3AxcAvwDTuQOYGvA7cCFwF32tfm1GwfKegp2UqpfCpo0BGRRcB7gW/btwVYD2yyL/ke8AH769vs29j3b7Cvvw143BgTNsYcBDqANfZHhzGm0xgTAR63r82p2T5S0FOylVL5VOhEgq8Cfw5U2rfrgdPGmJh9uwtYaH+9EDgKYIyJiciAff1CYGfKc6Y+5ui49mty/QPcc+NyvvTkXgKRGKVuJ8FofNaNFPSUbKVUvhRspCMi7wP8xpjdqc1pLjUZ7jvX9nR9uVtEdonIrp6enkl6fTYdKSilVPYKOdJ5J/B+EXkP4AWqsEY+NSLiskc7i4Dj9vVdQDPQJSIuoBroS2lPSn3MRO1jGGMeAR4BWL16ddrANBkdKSilVHYKNtIxxnzRGLPIGLMUKxFgqzHmI8AzwO32ZXcBP7O/ftK+jX3/VmOMsdvvsLPblgErgZeAl4GVdjacx/4eT+bhR1NKKTWBQq/ppPMF4HER+TLwKvAdu/07wA9EpANrhHMHgDFmr4g8AbwFxIBPGWPiACLyaeDXgBN41BizN68/iVJKqTHEGiyopNWrV5tdu3YVuhtKKTWriMhuY8zqTNcVwz4dpZRS5wkNOkoppfKmGNd01Bwzmw9EVUrllgadOaCY39STB6K6nTLmQNT7oGj6qJTKH51em+WK/ZTr2X4gqlIqtzTozHLF/qY+2w9EVUrllk6v5cFMTn8d7Q9QU+oe01ZMb+rNtWX4h0KjReJgdh2IqpTKLR3pzLBcTH9ta/dz5yM7uf7+rdz5yM4xjy32U661dIJSKpUGnRk23emvTEGr2N/U9UBUpVQqnV6bYdlMf002/ZYatADKPC4CkRgPb+8cPWj0Pvu6rv4Ai4osew30QFSl1BkadGZYpjWNTCnF2QQtfVNXSs0WOr02wzJNf2Wafiv2NRullDoXGnRmWKY1jaP9AWLxBJ09w7SfHKSzZ5hYPDE6kin2NRullDoXOr2WB5NNf1WWuDjgH8bpEJwOIZYwHDsdYqWvYvSxxb5mk0kxn5iglMovDToFNlpaIllhwoxrZ3av2egxOEqpVDq9VmDDkTgLa7y4nELcGFxOYWGNl5FIPPODZ4FiPzFBKZVfOtIpsGR22/LGitG2QCSGr9JbwF7lTrGfmKCUyi8d6RTYXE8U0Ow7pVQqDToFNtd37N9z43IGg1EOdA/RdmKAA91DDAajcyaoKqXOjU6vFYFMiQKzPfvLAAiICMiZnAml1PlHRzpFrtjr5WTy8PZOqkvdrPRV0jKvipW+SqpL3ZpIoNR5SoNOkZvt2V+ZNr8qpc4vGnSK3GwvglZZ4uLY6RCxhBmz+bWiRGd2lTofadApcrM9+2vM5tfkB2M3vyqlzh8adIpcPlKqJysSN11zffOrUurcaNApcjOdUj3TiQrNtWW4nA6WN1bQMq+K5Y0VuJyOWTNSU0rlVsGCjoh4ReQlEdkjIntF5H/Z7ctE5EUROSAiPxIRj91eYt/usO9fmvJcX7Tb94nIu1Pab7HbOkTk3nz/jLmyrsXHY3dfy3NfWM9jd1+b03TpmU5UmOubX5VS56aQI50wsN4YczlwBXCLiFwL3A88YIxZCfQDH7ev/zjQb4xZATxgX4eIXATcAVwM3AJ8Q0ScIuIEvg7cClwE3Glfq1LMdKLCXN/8qpQ6NwVLITLWSvKwfdNtfxhgPfBhu/17wN8A3wRus78G2AR8TUTEbn/cGBMGDopIB7DGvq7DGNMJICKP29e+NXM/1eyTqbJpLszmU7KVUrlV0DUde0TyGuAHngbeBk4bY2L2JV3AQvvrhcBRAPv+AaA+tX3cYyZqn1Q0nmAkHMt02Zyh019KqXwqaNAxxsSNMVcAi7BGJ63pLrM/ywT3nWv7WUTkbhHZJSK7Tp06RfdgiKN9AQYCURKJuZ3aq9NfSql8KoodesaY0yKyDbgWqBERlz2aWQQcty/rApqBLhFxAdVAX0p7UupjJmof//0fAR4BuPSKKw1YI57ekTD9gQgVXhdVXjce19xM9tPpL6VUvhQye61RRGrsr0uBjUAb8Axwu33ZXcDP7K+ftG9j37/VXhd6ErjDzm5bBqwEXgJeBlba2XAerGSDJ8+1nwljGAxG6eoPcHIgRCBy/ky9KaVUrhVypDMf+J6dZeYAnjDG/FxE3gIeF5EvA68C37Gv/w7wAztRoA8riGCM2SsiT2AlCMSATxlj4gAi8mng14ATeNQYs3c6HQ5EYgQiMdxOB1VeN5VeFw5Hulk8leqhzfv59vMHGYnEKfc4+cT1y/jMxlWF7pZSqgBEjyMZ69IrrjQ/e3p7Vtc6ROb81Nt0PbR5Pw9u7cAh4BBIGOvjs+tXaOBRag4Rkd3GmNWZrtN3ymlInXo7MRDUqbc0vv38QRwCLocDhzjsz1a7Uur8UxSJBHNBMBInGInr1Ns4I5E44weBDkHPXlPqPKUjnRxLZr0d6QtwajhMJJYodJcKqtzjZHzWecJY7Uqp848GnRkyPusteJ7+Zf+J65eRMBBLJEiYhP3ZaldKnX90em0c/1CIthODtMyrxDplZ/rGZL2VuqksOX+m3pLJApq9ppQCzV47S8n8lWb+XV9lYU0pG1p8bGj10VyX22P4HSJUel1UlbpxO3WwqZSa/bLNXtOgM05V84Wm7iP/NKbtwqZKNrT6uPnCRuorSnL6/co8LqpKXWMO3FRKqdlGg84UXXrFleaB//tLNrf52druxz8UHr3PIfCO5ho2tDZxw8oGyktyFyjmctbbtnY/D2/v5Gh/gObaMu65cbkeu6PUHKNBZ4pSN4cmjOGNYwNsafPz7P4ehkJn9uF4XA6uW17PhlYfa5bV5WyabK5tOE1WJnU7hVK3k2A0TjRu9FBRpeYYDTpTNNGJBJFYgpcP9bG5zc+Ozt4xqdBVXhc3rWpkQ6uPSxZW48hRAkKpx0l1qXtWT73d+cjOs+r1BCIxfJVeHrv72gL2TCmVS9kGndn7bpZnHpeDd65o4J0rGhgOx3j+wCm2tHXz6tHTDIZi/OfrJ/jP10/QVFXC+hYfG1ubWNZQPq3vORc2nB7tD+AU6OwZJhJP4HE6aKjw5KwyqVJqdtGgMwUVJS5uuWQet1wyj97hMFv39bClrZv93cN0D4Z57KWjPPbSUZY3lrOxxcf6Fh++Ku+Uv99sLrNQWeLigH8Yp0NwOoRYwnDsdIiVvopCd00pVQAadKapvqKED121iA9dtYgjvQG2tHezuc3PiYEQnT0jPNJzkG89d5DLFlWzobWJm1Y1UOl1T+l7JTecDgajlHlcVJe6KS3ynf2j07fJWVwzrl0pdV7RoJNDi+vL+MN3LuNj1y2l7cQQm9u62bavh9PBKHu6BtjTNcA/bz3AmmV1bGxtYu3y+imPWJIbTj0uB68fPc33dxym63Sw6LLDhiNxFtZ4OTUcGZ1em1dRomevKXWe0qAzA0SEixZUcdGCKj657gJ2H+lnS5uf5w+cIhRL8NuOXn7b0Uu5x8kNKxvZ2Orj8uYanFNYr3l+/yke3HoAt1OoKHHSPRjkS0/u5T4oisDTXFuGfyjE8sYz02nJRAKl1PlHg844uV6mdzkdXLOsnmuW1ROMxnmh4xSb2/y8fKiPkUicp/ae5Km9J6kv93BzSyMbW5tY6avI+giex18+issheF1OEgnr+8VNnG9ue7sogs49Ny7nS0/uJRCJjUmZvufG5YXumlKqADRlepzVq1eb53e8SDASJxCNE47OzDTQ6UCEZ/f38PRbft46MTjmvsV1ZWxo9bGhxceCmtJJn+fOb+2kyutCUsKlwTAUivHvn3wnlV4XlSWunJ0jNxXJzaFd/QEWFdn0n1IqNzRlehq8bidet5NaIBZPEIjGR9OXEzkK0jVlHm67YiG3XbGQ46eDbGn3s6XNz5G+AEf6Avzrbw/xr789xEXzq9jY6mPdhY3UlHnOep75VaX0joQpdZ9JKAhFE8yrKiVsB82+4eLIetM/b5RSOtIZZ/Xq1WbXrl1p7zPGEIzGCdgBKBrPba0cYwwH/MNssY/g6R2JjN7nELh6aR0bW31ct6JhNMi81NnHg1sPWFNsbgehaIJYwvDZ9StZs7zurO+R77PecnEigR6jo1Tx0xMJpmiyoDNeOGYFn0AkTijH03DxhGHP0dNsbvPz3IGeMdleXreD61c0sL7Fx+oltbxy+DSPv3yUk4NB5lWVcsfVzWkDTqp8lVmY7okE29r9fH7THoZCMWKJBC6Hg0qvi3+4/XINPEoVEQ06U3QuQSdVPJEcBcUIRuLEx5fLnIZwNM7Og31safPz4sFeovEzz11T6mbdhVYCQuv8c68BNNNnvV1//1ZqSt1j+mWMYSAY5bkvrM/4+Fu/un10c6kIGGO91it9FfzqT2/MeX+VUlOjazp55nQIFSUuKuyTp0P2OlAukhFK3E5uWtXITasaGQpFeXa/dQTPnq4BTgej/PS14/z0tePMr/aysdXHhtYmFmdZA2j8htN0U2/Tmd5KpkynPmcwGmdRbXb96zw1gkMYPc9OBIwYOk+NZPV4pVRx0aAzQ1KTEeIJMzoCCkwzGaHS6+Z9l83nfZfNxz8YYmu7n83tfjp7RjgxEOIHO4/wg51HWNVUwYbWJtafQw2gdBVOt+/vGV2TqSl14x8KndM+oHykTOuaj1Kzh06vjTPV6bVsGWMIRRP2G3zukhE6e4ZHM+ByVQPIIcLnfryHvpEw5SVnju4511Oip5MyfcsDz9LRM4JTUqbXjGFFYzlP/Y+bdM1HqSKhazpTNNNBZ7xILGFPw8UIRRPTPpMsYQxvptQAGhxXA2jt8no2tFg1gLJZw0nuA3I6HDhFcDjknNZkpmtbu5/PbdrDcDhGPGFGpzH/0Q4quuajVHHQNZ1ZwuNy4HE5qMZNImEITDMZwSHCZYtquGxRDZ9ev4KXD1kJCL9926oB9Oz+Hp7d30NlSg2gSyepAXRmH5CQwCAJIRyLszDDptVcWdfi4x9vv3zCkZKu+Sg1uxQs6IhIM/B9YB6QAB4xxjwoInXAj4ClwCHg940x/WKlPz0IvAcIAB8zxrxiP9ddwF/ZT/1lY8z37PargO8CpcAvgc+aIh7aOdIkIwQiVhBKLRqXLbfTwXUXNHDdBQ2MhGM8bx/B8+qRfoZCMX7++gl+/voJfJXJGkC+MWekAdxxdTMPbj1AMBrH63YQjMSJJQwffMdCTg2HqS5156xq6kTWtfh0qkypOaJg02siMh+Yb4x5RUQqgd3AB4CPAX3GmK+IyL1ArTHmCyLyHuBPsILONcCDxphr7CC1C1iNtel9N3CVHaheAj4L7MQKOg8ZY341Wb/yPb2WreTJCIFwnGA0Pq1puN7hMM/s62FLm5993UNj7lveUM6GVqsGUJNdA+gHLxziid1dBKNxSt1Ofv+qRfzBdUtHH5PvDaepMq35KKXyY9at6YjIz4Cv2R/rjDEn7MC0zRhzoYg8bH/9mH39PmBd8sMYc4/d/jCwzf54xhjTYrffmXrdRIo16KRKnowwEo7bI4+pJyMc7Quwpc3P5vZujp8Ojbnv0oXVrGgs54W3e/G4HBlPPMjXhtNUmdZ8lFL5MavWdERkKfAO4EWgyRhzAsAOPMl3joXA0ZSHddltk7V3pWlP9/3vBu4GWLx48fR+mDwQEco8Z0YW0zkZobmujI+9cyl3XbeE9pNDbG7zs22fn/5AlDeODfDGsQEAyj1OqrwuK/stluDxl4+eFXSi8QS9w2H6R6yz3pJTbzOZ0pxpzUcpVVyyDjoisgRYaYzZLCKlgMsYM5TpcVk8bwXw78CfGmMGJ9lRn+4OM4X2sxuNeQR4BKyRTqY+F5sSl5MSl5OasqmdjPBSZx+Pv3yUE4NB5leV8rl3XYjLJWxu87P5rW4MMBKJMxKJ45Aw5SWuMSOL8VI3nO45cpq//eVbDIetEdmpoTCf37QnpynNuuaj1OyR1QqwiPx3YBPwsN20CPjpdL+5iLixAs4PjTE/sZu77Wm15LqP327vAppTHr4IOJ6hfVGa9jktOb3kq/SypL6cBTWl1JR5JkyPTh4Y2jsSpsrronckzNe2dWAS8MVbW7hkQTV15W7K7bLYCQNDoRj9gSh3PLKTb2zrYH/30IRrTP/8TAf9gSgJYwWohDH0B6Lc/1T76DXb2v3c+chOrr9/K3c+spNt7f60z6WUmv2yHel8CliDNf2FMeZAyrTXlNjZaN8B2owx/5Ry15PAXcBX7M8/S2n/tIg8jpVIMGBPv/0a+DsRqbWv+x3gi8aYPhEZEpFr7X5/FPjn6fR5NkqejFBX7klbpuHxl48Si8c5HbA2qrqdDipKnKPTZx+5ZjEPbj1AucdFU5XQNxJlJBIjGjf0jkTYtPsYm3Yfo7m21KoB1No0Jp36aH8AYyAaN6PDTwHe7hkGxp5CPdGJB3riQGHp669yKdugEzbGRGR0L4S4mH55lHcCfwC8ISKv2W1/gRVsnhCRjwNHgA/Z9/0SK3OtAytl+g8B7ODyv4GX7evuM8b02V//MWdSpn9lf5y3XE4HVU4HVV736MkIR/pGGAxGEYe18TOWMPSPRIklrH0ua5bX8VlWjp5ivbS+nDuubqa5vpQtbdYJCIf7AhztD/LdFw7z3RcO01xbym1XLOTmlkYSCUNqmoOxPxIJQ1d/gK9v6yASi9E7HCcST+BxOqgqdfHw9k7WtfiyCkrFbja/ac+F118Vl2yDzrMi8hdAqYi8C/gk8J/T+cbGmOeZuDr0hjTXG6wRV7rnehR4NE37LuCSaXRzzhIRSj1OYgmDOASn/QeFEYiLGbMvaM3yurSlEv7btUtY2VjB/9m8n3A0QTBq7eE52h/ka8908I1tHRP+ZeJ0CpFYgg7/MEPBKA6H4BCIJQynhiJE49Zy4cPbO3E7ZTRposzjIhCJjQalXJjJoDDb37Tz8fqr80u2u/ruBXqAN4B7sEYdfzXpI9Ss4HZa6yzhWIJQLEEkliBhoMQllJe4JjypIOlHu7oodTuZX+1lWX0Zi2q8lHucOMRa/5koI9/lsP7rRWIJEOzSB3bgw4yezH20PzCmKipAqdtJV39gej+4LRkU/EOhMUEhV+tKqW/ayaxDt1N4eHtnTp5/ps3066/OP9kGnVLgUWPMh4wxt2ONKvJzDoqaUb5KLybBmTGnAAaaqkppqvKypL6M+dWlVE1w8sCJwSBet9WefFNdUOOlscLD3/zuRTgniFnhWIK9xwdI5jckEgZjDAk7287lEE4Nh1lYU0pwXBr4uZRGyGSmg8Jsf9Nuri2b0ddfnX+ynV7bAmwEhu3bpcBvgOtmolMqf4wxOOzptdQd/clstOQ0XKmdvZbcEzQSseoEnTmb7cwbayiaYH51GTeuasThgHiarUOxhOFPHnsNj9OB2+kgYQzxhMHtdFDucbGotpzBYJQPXrGQh7YeIJEwlHmchGKJs0ojZJoem+z+o/0BakrdY/qWy6DQXFvGod5hBoOxMWtWS+srMj+4COSjNIU6v2Q70vEaY5IBB/tr/VNnDhiOxFlY48XlFOLG4HIKC2u8Y8pjp7L2A3lYWFPKkvpy7r5xGScHguz3D49+nBwIcsfVVhZ7psoNkXiCYDRBOGaIJazptmjcjD5+zfI63n1RE/6hMG0nh+geDPHBKxaMyWz7/KY9vHqkn5MDQV490s/nN+0ZnR7LNH0203/Jr11eh38oQiSewCHWz+sfirA2QznxYrGuxcd9778YX6WXgWAUX6WX+95/sa7nqCnLdqQzIiJXphyweRUQnLluqXxJVvZMPegzWS8nE6dD+MGOQ0THBZZoAh5/+TBrltdNuKYjwHc+tpofvHCYZw/0kNzDGjcwEIrxrec76Q1EKHc7eeqtburKPaPH8Dyxu4ul9eW8+9J53P9UO/2BKE6H4HI6MIbRfUDrWnw8vL2TaDxO73AsbXbcTP8lv6Ozj8YKD0OhM9+/0utiR2cfn8nJd5h5uvlW5VK2QedPgR+LSHJz5Xzgv85Ml1Q+TfdNd8fB/rTtr3UNUlvmobzESSASx5gzx0SIWFNYS+vL6Q9EWVDtRRAGw1GGQjESBt7uGeEffr0PAbxuBzVlHoxhtI/f23GYyxfX8HbPMMYYIrHkdKBVuC5Z2uCAf4iBgJUd57RTwlOz49a1+LgPZuwYnaP9ARoqSmhMCeLGmFmzpqNUrmUVdIwxL4tIC3Ah1vtGuzEmOqM9U3mRzZvuVFOKa8s93H3Dcr665QBOB6MZbQkDv3+VdVjEicEgVV4XgrV25KswDEdi9I9EMVgJB8FoguBACIdARYmLSq+LEwPWm3bCGOIpoyljP7+I1ZjMjkutt5MYlxI+k3/JJ0eSqSdw60K8Op9NGnREZL0xZquI/Jdxd60UEVKOrlGz2GRvutPdZ/KZjasA+PbzBxmJxClzO/jYdUv56HXLCEbOTkQQEVwOBy3zqvjyBy/mk//2Kv6hECE7lXswFGMwFLMyzJ59m4kyup1ijSjcTiEYtbLjkokSAJ6J0upyTBfilRorUyJBsiDJ76b5eN8M9ksViVykFF+2qIaLF1Qzv9rLJQtruGpJHY2VJSyuL+NTN19AwkAoFsdgRjeY3nF1M2UeF59cdwG15R4WVFtp2MlgEY0bfrSri4kO1XaKcKQvwLKGCurK3GMSJerLPaxsqsrFy5ORLsQrNdakIx1jzF+LiAP4lTHmiTz1SRWR6aYUZxopveviebidDmv6rm+EBTVlfHjNYt6xpIZ4wpx1DM9F86vZ2OqjZzjMlnY/Xf3p81lidgr27Vcu4sGtB6ivcFLucRGOxYklyOtIQxfilToj45qOMSYhIp8GNOichzKtSaROWaVKTntlc4zKRG/KyXLd169qSHsMz0fXLuFd/7SddFnZ4Zjhr376JhtafPzxjRfwk1ePcXIwyLzqUv7wuqVce0H9Ob4SSqlcyDZ77WkR+RzwI2Ak2ZhysKaaxSZLFMi0JlHudjAcOfttv9w+pWA6I6XxJ2SP2KdjJ8t1iwhOp0DcpA08L7zdywtv91LqdnLDygbuvKaZKxfX4nQIx08H8bgcVHrzW+lUqfNdtkHn/8PKeP3kuHZdDZ3lMk1/ZcpuG79HJynZ3lxbxsFTw2ftU1nWcG478l1OB9WlDqpL3SRGC9XFaa4p5XBfAHfqiQoJQ0OFhwt8lbx0qI9gNM5v3urmN291U1vm5uYWHxtbfVzYVEkkluBXb5zgx7u6ODkYZHFd+aw6BToXZvMp2Gr2yTboXIQVcK7HCj7PAf8yU51S+XMupwhPdGK0xyk4HWdyUuKJM5Fo7fI6XjrUh8PePxOJJ+gZjvDhNVPfke9wWIeRlpe4+NLvXsz//PFro5VMHQ6h2uvmz951IWuW1zEQjPLs/h62tHXzxrFB+gNRfvLKMX7yyjEW1ZbS0lTJnq7TeN1OyjxOjp0O8Fc/fZP7bruY9a1NU+7jbDHbT8FWs0+2Qed7wCDwkH37Trvt92eiUyp/jvYHcAp09gyPjkQaKjyj01+Z3pSWN5Sz7+QQ0YS1AVQExMCF86yRzI7OPqq9Lk4Ho0SNFXhqSt3ntCN/sr/E17X4uGvt0tGU7BKngzuubub6VQ1EYgmqS928//IFvP/yBZwcCLG13c/Tbd0c7g3Q1R8cTUTwuqwRWKXXRdQYHtrawaWLaqj0uvCOO7BzLtHSBSrfsg06FxpjLk+5/YyI7JmJDqn8qixxccA/jDNlx/6x0yFW+qygkelN6dZL5rGve2g0mSAZeG69ZB5gnQgwFIrhdjpGp7+GQjEO+Iey6l+moLet3c+mV45ZKdj2mtMv3jjJNcvquX5lA4FonEDYWgeaV+3lw9cs5s41zbzdM8Lmtm427e6yU7YThIYj9AxHKPM4GQxG8Q+GGAo5R9d+KkpcOKew9lPM01czfeCpUuNle+Dnq3bZZwBE5BrgtzPTJZVPZjRapHyktGc6mn9HZx9lnrH3l3mc7Oi0ckxSTwQQxDoZQBhzIsBkMu0Tenh7J8OhKAdPjfDm8UFFzwqbAAAgAElEQVQOnhphOBTl4e2dVqVUr5t51V6W1pfRVOWl0uvG7XSywlfBH910AZcuqKaxwkOV10UyngQicQZCMX7vmy/w5V+08ey+HroHghzpC9A9GGIkHDvzumUw0/V6pktLF6h8yzboXAO8ICKHROQQsAO4SUTeEJHXZ6x3asZlOmU605vS3uMDDIfH3j8cjrP3+ABgFYmDs+vlZHsiQKagt/f4AH2BqDXCwhpJ9QWio98/ScRaB0puSl1QU0ptmYePrl1iJym4WdZQRn25B6/LgdMhhGIJtrb7+cufvsnt/7KDB57ez4udvZwcCHK4N0DPUJjQRLtTbcVexO2eG5cTjRsCESuQBiIxPTFBzahsp9dumdFeqILJdMp0ppTpoVAs7fMm21c1VaXJXnNnnb2WaZ9QMjiOH3dMVJohKZmO/Xurm6kp8/Av29+mqz9Ic10Zd6xu5qIFVTx3oIfN7X5eO3KawVCMJ/cc58k9x6ktc/OeS+ezodXH0vpyqwaQfSbc+EJ3xT59NdMHnio1XrYHfh6e6Y6owsgUVNa1+Li96/ToQn25x8knrl82+qY00SSTGff886pdUzp7LFP/4on0PZioPZ0NFzWx4SIrUy2RMPY6UIz3XraA+vISjvUHCcfihKIJwrEE/YEoP3zxCD988QgrGivY0OpjfYuPxsoSvG4nFV4X5R5r/Wc2HPipJyaofMp2pKPmqEx/6W5r9/P9nYfHFCH7/s7DXLaoJqs3qun+JZ3p8cmTq8dLXe+famVRYwx/vul1Sj0OasrcYLCDToRQNEEknqCjZ5iOnmEe2d7JFYtr2NDi48aVjVSWuinzOPno2iX83S/bAD3wUykAyXZB9HyxevVqs2vXrkJ3o2jc8sCzdPSMnFXOekVjOU/9j5tYeu8vJnzsoa+8d8b7t/zeX6Q9jcABdH7lvaOVRYdCMWKJBC6HlRr9D7dfPpr9lsyOSw0KyUM5r79/6+j0WPJnjycMg8EIf/nei9jc5ufXe08STkmMcApct6KBDa0+rl1Wz56jp3niPN58qs4PIrLbGLM603U60lGTOtgbAAzRhBlNh3ZIsh0qS5wMhc9eP6ksyc/eFrfLQTSWGBN4HHY7wP1PtdM3EiFhF5GLJxJERyJZVxZNnR4TAQdCJBZlSX0Fay9o4LUj/URi1ijQkAxM8NyBUzx34BTlJU5uWtnIh69p5vLmGjxOJ2UlTkLR+Jze/6PURDToqEklEgY76xnskU7MgNirNpcsrKH95AADQavip0OgutRFy7zqvPRvWX0ZHT0jY4/BMYZl9daaSYd/mLg5U7EUOyh0+IeBzJVF060pxRLwyXUX0FhZwqZXjo1mzSXnDARGg9BIOM4v3zzJL988iUOgvryEO69u5rZ3LMDjsk5BqPC6KHGdvwGomPcxqdzLNmVanafGZGOZs9vvuXE5lV4PyxrKuWRBFcsayqn0evK2ZnHvra3UlLkRhxVsxAE1ZW7uvbUVsEocAHbUPPM52Z5pH1GmejjD4RgJxiZUGKx1pifuWcvvXjb/TNq4gZ7hMA8908Gd33qR775wkPaTgxzrD3K0L0DfSIRwbPKsu7mm2PcxqdwraNARkUdFxC8ib6a01YnI0yJywP5ca7eLiDwkIh0i8rqIXJnymLvs6w+IyF0p7VfZe4k67MfqUcLnqNTjIBl3km+sTgeUeazGQhcpW9fi4x9vv5x3NNcyr8rLO5pr+Ud7vQas9RWwRyLmTBmGZHs2+4he7zrN3uMDHB8Isff4AK93nc6qb63zqzh+OkRNqYsSl+CQM7HPPxTmO88f4iPffonPPPYqm3Z3cfjUyHkXgIp9H5PKvUJPr30X+Brw/ZS2e4EtxpiviMi99u0vALcCK+2Pa4BvAteISB3w18BqrPfF3SLypDGm377mbmAn8Eus/Ua/ysPPNWek32cz9pToQqfcTvb9VzRW0N49nLYdrJ/vja7+MeUZKjyO0cqiD23ez1e3HBjNkBsMxfjqlgOAVYp7sjyc8hIXh/tGOD1iTd+5nUI8YTAJcLkclHmc9AeivHl8kDePD/K1Zzq4emktG1ubuO6Cerxu5+geoPIS55ycgiv2fUwq9wo60jHGbAfG1+S5DeswUezPH0hp/76x7ARqRGQ+8G7gaWNMnx1ongZuse+rMsbsMFaK3vdTnktl6Z4bl+NxOZlX7eXCpkrmVXvxuJyzJuX3PZfOZ/zwVux2gHlVnrPqAQ1HEsyr8gDwL892kkiuCdkfCWO1Q+Z9SpFYAnFYp3A7xIHL4UAc1gjriXvWcv/vXcqVzTU4xNpbtLOzjy//oo3f++YO/v5X7bzw9il6h8NjRkCZTkGYTfQYnvNPoUc66TQZY04AGGNOiEjyT9iFwNGU67rstsnau9K0q3OQix3rhVwo/tWbJ7HzB0aJ3f6Zjav49d70awfJ9kA0/YkHgSzf+N1OIRi1pu+SiQ4igtflYEl9OW0nBjnYO2JNYSbOZMAFo3Gefqubp5M1gC70saHVR8u8Sk4HBLfTGimVl8zuU7DvuXE5n9u0h2Ong8QTBqdDqChx8f+/96JCd03NkGIMOhNJtx5jptB+9hOL3I01DcfixYun2r85azrTZ4Wu19LhHybBmew7DCQ4k702UfBIto8PWEnZLg6uaqpKm923sqkKj8vBN57poD8QPetxDeVu5teU8caxAasG0KvH+MmrVg2g9XYRukW1ZQwEo7gcDspKnJR7XHjdDmbb0qUAGPuQWSNZv7ZqdirGoNMtIvPtUc58IPmnaBfQnHLdIuC43b5uXPs2u31RmuvPYox5BHgErM2h0/8RVFKh67WkzV4zKe0ZuJ1CJH72tckEhEwnIqxdXseLB3tHr0kYGAjGWLvcKmK333/2ehNA70iUJ/7oCk4Ohtja5mdLu5+Dp0bo6g/y/R2H+f6Ow1w4r5KNrT5uvtBHXcLDYDCK0yGUeqwAVOp2Fn0Z7oe3d1JV6mZedelom9bzmduKMWX6SSCZgXYX8LOU9o/aWWzXAgP2NNyvgd8RkVo70+13gF/b9w2JyLV21tpHU55L5UmmU6JnWqbstUwqva60a0JVXiuIrvKVp31csv2Xb5wAMy5j29jtpA9Y9iXMry5lRWMFH7l2Cd+5azXf+uhV3HF1M40VJQDsOznE1595m99/eAd/vul1frP3JEOhKMOhGN2DIQ73BTgxEGQgECUaz66URL4V+v+Hyr+CjnRE5DGsUUqDiHRhZaF9BXhCRD4OHAE+ZF/+S+A9QAcQAP4QwBjTJyL/G3jZvu4+Y0wyOeGPsTLkSrGy1jRzLc8KfeDlisYK9ncPj5YKSiYDrGjM7pTrTNl7B0+lf3NMth/sDeBKU847eaLDZEo9Tko9TuIJw1AoittZxQWNFXzihmW80TXA5jY/z+7vYTgcY9fhfnYd7qdk8wGuu6CeDa0+rl5ahzGGZ9t7ePzlo5wcDLKotoy7b1jO79hF9gqt0P8/VP4VNOgYY+6c4K4Naa41wKcmeJ5HgUfTtO8CLplOH9X0ZDoleqbde2srn3nsFYYjZ8ppV3ico5tHM8l0SnY4zdTb+PZY3BCJn1k7so7pyX7ay+kQaso81JR5CERiDAZjXLG4lsuba/iT9Sv44c7DPPn6CQaCUcKxBM/s6+GZfT1UeV20zq/i9a7TBKPWSOfkYJj2k6/xpeBFrG9tKvg6UKH/f4CVFj/+FPXPbFw1er+emJBbxbimo+aQYqjX4nE78STMaHaU5xyyvTKVdsikssTJqXFVUhNM/Wy6Mo+LMo+LWDzBSDjOb/aeZHO7nyqvi/pyN/2BKCPhONF4gsFQjBcPjt+RYBXZ+6en97N6aR2DwSg/2HGIH+/uImD/fP/9huVj3nRnUqH/fzy0eT8Pbu3AIeByWKOsB7d2ANY+rG3tfj63aQ/D4RjxhOHUcJjPbdozZgOyOjcadNSMK+Tm0Ye3d1Jd6mb+FBeqt7X72fTKMaviqP2X+KZXjmVd2iEQSb+WMlF7tlxOB9VlDn7y6jG8bgclLicJY2isKKGiJE6V182Nqxr45rPpd/afHAzTMxTmqTdO8N0dh0cz9IbCcR7YfIBQNM6fvutCPK6ZX/Yt5P+Pbz9/0A441s/pEIglEnz7+YN8ZuMqvvKrNk4HojhFcIpgEnA6EOUrv2rToDNFGnTUnDbdHe+ZTqHOlL0WjidwO6xDRpPTe06x2nMh+fOJiHWMj7EWMHtHwnxodfOEQQfgjkd2WnuHxrUb4NHfHuL21c1zZj/QREYiccbHVYecqTx7sDeAQxjNAhQBkzBZrcll63ybvtOgo+a05toyDvUOMxgcGzSW1luJAMkNm+MllzgynULtdjrG1NJJSh6IWu6xRkclKQenxhIJynP0Bj629IJYAS1mWFJXTqXXPeljkxtR0wnZP1M0nmAgmGBgXDp2mcc56/YDpZP890nNLE8Yqz0fCr2PrRCKMWVaqZxZu7wO/1BkTOVT/1BkdJ/Mwmpv2scl2zOdQh1PpB+xJNs/cf0yEsYKNAmTsD9b7blwz43LicYNgUgMY6zP0bjhj+3SC5P5uw9OnmPzypH+MWW/4wkzmo59qDdA92CIoVD0nEqDT8W2dj93PrKT6+/fyp2P7MzpCdSZ/n2WN5STMJAwBoMhYY8mlzekT5U/V8Vw4OlMvr7paNBRc9qOzj4aKzx4nA4SBjxOB40VHnZ0WgvsX/7ApVSVOEf/0nUIVJU4+fIHLgUyn0LtdDhw2oXtknV0nMJoivRnNq7is+tXUOp2EktYU3ufXb9idKF+orFCtmOI6Zzyfe3y+knv/9yPX+eOb+3km9ve5kD3EKlVho0xjIRj9AyFOZLcDxSMEsvxfqBk5ddXj/RzciDIq0f6+fymPTl7Y8z07/OFW1qoLXMjQCyeQIDaMjdfuKUlJ9+/0PuUClFaQqfX1Jx2tD9AQ0UJjZVnRjTGmNFf6nUtPh6688oJs6fS79Nxj+7TSRaRc01QRA6sN7aJssFcDoimeZ8+l/X7qS7EuxyZv0nvcIQf7+7ix7u7WFJXxoZW6wy41MQMYwzBSJxgJE4vUOJ2Uua29hhNdx3o/qfa6Q9YU3supwNjoD8QHa38mguT/fusa/HxD7dfPmPZdYXep1SIE0M06Kg5LZtf6snetDPt07n31tYxKbVOh1BT4s56H1BVqZvekbPPXqsunXw9Jlv2OaJp25vrStPcc8YPPr6GrW1+Nrd1c7Q/yOG+AI/+9hCP/vYQFy+oYmOrj3WrfFSXje1rOBonHI3TH7AC2w93HuL/vnSEkUicihLXWftgJtN5asRayJeUhXwxdJ4ayerxuTCT2XWF3qdUiNISOr2m5rSJ1jyy/aVe1+Lj9isX0jMUpu3kED1DYW6/cuHom1CmInKZrGqqYl5VCeUeJ26nUO5xMq+qZLSez3TddsX8CdszJQIsrCnlD9Yu4ZM3XcAqXwVlHicuex5y7/FBHtzSwe0P7+Av/uMNtrT5zypRAPCvz3fyyHMHGQrHSRirHtEDmw/w1af3jV6T7zWFYlLoIoiFKC2hIx01p01382E2+3Sm85dwppFUtn2cKOX25GCEmlIXg6Ezp1xXeV2cHIxk9dwvdfbx0DMduBzCwhovwUicQDTOsvoK2k4OEojE2dnZx87OPrxuB9evaGBjaxNXLanF6RAee/lo2pTsf3m2k/+6ZjGvHOrnK0+143E50mZvJacvJaU0RMLAioa5c0zOTO9Tmuz/RyFGWhp01Jw3nV/qmZ7zzkVQnCzl9qj9nKmjmtQ1rbXLatlxsP+s5127rJb51aX8eHcXLoeMLnYns6ziCcO//9FadnT2saWtmxcP9hGKJtjc5mdzm5/aMjfrLvSNpl6PF4olCEbifOu5g4A1DRdPGHsNKD76+k53+vJ8l+n/RyFOhNCgo9Qk8jHnPZNBMdOa1mP3XMedD78wJvCsXVbLY/dcB0D3UIhqr4uEnSCBAa/bwcnBICVuJ+subGTdhY0MBqNsP9DD5jY/r3dZNYD+49VjGft/YjBIldeFMYa4sdKyHSIc7h1hKBTlhlWN/OMMLuTPddn80ZTvEyE06Cg1iUJnF2WSKShmM32SDDDppP78TnuPynA4yryqsUkIVaVu3nfZAt532QK6B0Nsbfezpc0/4YJ/Q7nV5/lVpfSOhMekDYeicXyVXnqGwkCYlfMq+cZHrsxJNtz5phCJAploIoFSk5huIsJMy7QQPN2F6tSfHyAciwPCp26+gEqvO20yQlOVlzvXLObbd63mT9evxJ3mXaZ3JMrnN73OCl8FkXiCYDSOwRCMxoklDHdcfaZeo5UJF+H46SCHe0fw52lT6lxQiESBTMRkWUHxfLF69Wqza9euQndDFZHkQmwxTu+kztmnjmRymQE12c+fPKVgMDRxobiXOvt47KUjHO0PICIEIvExb4Quh1BR4gIMi+vK+fCaxayxT4zIJJd7guaifPz/SBKR3caY1Rmv06AzlgYdNdsUS1BM1vpJjoomEoklePlQH5vb/Ozo7B09UgiszLqbVjWyodXHJQurR/fnZCN5NlyZXarbWeSluvMlX/8/NOhMkQYdpaYnGk8wGIwyFIqRyPD+MhKO8dyBU2xp6+bVo6fHnNjtqyxhQ6uPja1NLJvCWWc6CsovDTpTpEFHqdwwxjAUjjEYjI4ZzUykdzjM1n09bG3zs697aMx9yxvL2djiY32LD19V+kNaJ6OjoJmnQWeKNOgolXuhaJzBkFXVNJv3nCN9Aba2+Xm6rZsTA6HRdgEuW1TNhtYmblrVkLF8w0R0FJR7GnSmSIOOUjMnm8SDVMYY2k4Msbmtm237ejgdPHNOndsprFlWx8bWJtYur59yldPkKKjUbY2EdBQ0NRp0pkiDjlL5EYjEGAhGCUbOPrMtnVg8we4j/Wxp8/P8gVNjTjso9zi5YWUjG1t9XN5cM63AoaOgqdGgM0UadJTKr0jMqkw6HI5lNfUG1l6TFzpOsbnNz8uH+sYkINSXe7i5pZGNrU2s9FVMq8KprgVlT4POFGnQUaow4gnDUMjKestm6i3pdCDCtn3WETxvnRgcc19zbSkbL2piQ4uPBTWTl3LIho6CJqZBZ4o06ChVeCNha+otlKZcwmSOnw6ytd06dPRI39ijXi6ab9cAurCRmjLPtPvocjjwehyUeVyUuZ04zvNRkAadKdKgo1TxCMfiDASzz3pLMsZwwD/MljY/W9v99I6cKeXgELh6aR0bW31ct6LhrHLRUyEieN0OytwuSj3OKSc1zGYadKZIg45SxSeeMKMbTmOJ7Kfeko/dc/Q0m9v8PHegh5GUxAWvy8E7VzSwodXH6iW1uJy5CRZup8NeC7Ky4qazrjRbaNCxicgtwIOAE/i2MeYrk12vQUep4mWMYSQSZyiUfdZbqnA0zs6DfWxu6+alg31E42fe/2pK3dx0YSPvam2idX5lzgKFiHXuWTIte66OgjToACLiBPYD7wK6gJeBO40xb030GA06Ss0OkViCoVB0tMDbuRoKRdm+/xSb27rZ0zUw5r751V7rCJ6WJhbX5/ZE5tRRkNc1d9aCNOgAIrIW+BtjzLvt218EMMb8/USP0aCj1OxijGE4HGMoFDvnxIMkv10DaHO7n86esTWAVvoq2Njq4+YWHw0VJbno8qjUtaCyEifuHE3vFYIGHUBEbgduMcZ8wr79B8A1xphPj7vubuBugMWLF191+PDhvPdVKTV94VicwWDsnPb8jHfw1Aib27rZ0ubHPxQebRfgHYtr2NDaxA0rG+xyDLnldjoo8zgpL3HNupRsDTqAiHwIePe4oLPGGPMnEz1GRzpKzX7J43YGgtFzTjxIShjDm8cG2NLm59n9PQyGzpRscDuFtRfUs7GliTXL6mZkncbpsNaCykpmx8bUbIPOXC9X3QU0p9xeBBwvUF+UUnnidAjVZW6qSl2MRKy06/A5Tr05RLhsUQ2XLarh0+tX8PKhPra0+fnt21YNoO37T7F9/ykqvS5utI/guXTRudUAmkw8YU0bDoetYOd129lwHiclrtk1Cko110c6LqxEgg3AMaxEgg8bY/ZO9Bgd6Sg1N4WiyT0/kxeZy2QkHON5+wieV4/0n1UDaH2Lj42tPpY3VkyzxxNzOcamZBdDMoJOr9lE5D3AV7FSph81xvztZNdr0FFqbovG7bPesigyl0nfSISt7X62pKsB1FDOhlarBlDTFGoAZatYNqZq0JkiDTpKnR+SZ70NBs99w2k6yRpAm9u7OX46NOa+yxZVs7HVx40rG6kqnVoNoGwlU7LLPS68bkfeNqZq0JkiDTpKnV+SKdcDWVY4zeb52k8OsbnNz7Z9fvoDZ2oAuRzCNcvq2NDaxNrldZTMcIaaQ8RaCyqxDirN1YkL6WjQmSINOkqdv4KRZIXT6a37JMUTht2H+9nc1s3zHacIRc8EtTKPkxtWNrChxcc7FtfmJTvN47IPKPU4KXHldhSkQWeKNOgopXK57pMUisb5bUcvW9q7eflQ/5hTFOrKPdx8YSPvumj6NYCy5RAZzYbLRcVUDTpTpEFHKZWUSBiGwjEGg9mV187WQCDKtv1WCYa9x9PUAGptYn2rj4U5qAGUrenWCtKgM0UadJRS6QTt/T6BSG6m3pJODATZ0mZlwB0eVwOodX4lG1qauLmlkdoc1ADKVrJiaqk7+1GQBp0p0qCjlJpMNJ4YLbOQq6k3sBIQOvzDbG7zs3Wfn97hsTWAVi+pZUNrE9evaKDUk9/NodmsBWnQmSINOkqpbCQShuFIjIFAbqfewK4B1HWaLW1+th/oYSQ8tgbQdSsa2JjjGkDZcog9CvKMzYjToDNFGnSUUucq11lvqSKxBDsP9rL5LT8vHuwdUwOoutTNulWNbGj1cfGCqoIUi/O4HFR63dSUeTToTIUGHaXUVCWn3qZa4yeTZA2gLe3d7Dk6QOp3mF/tHT2CZ0l9ec6/92S8bicLa8s06EyFBh2l1HQZcybrLRcbTtPpGQqzpd3PlrZu3h5XA2iFXQNo/QzUAEpHg840aNBRSuVSrg4anczBUyNsaetma3sPJwfPHMEjwBWLa9jY4uOGVY0zUgMINOhMiwYdpdRMmKmst1TGGPYeH+Tptm6e3Ze/GkAadKZBg45SaibN1IbT8aLxxFk1gJIqSlzctCp3NYA06EyDBh2lVL4EIjEGg7GcbzhN932eP2DVAHplghpAG1p9XDDFGkAadKZBg45SKt8isQSDodye9TaRvpEIz+yzjuDZd3JsDaBlDeVsaPGxvtXHvHOoAaRBZxo06CilCiWRMAyFYgyGZnbqLamrP2AdwdPup6s/OOa+SxdWsaG1iZtWNVKdoQaQBp1p0KCjlCoGI3aNn1A0nvniaTLGsK/bqgH0TPvZNYCuXlrHxlYf111Qn7YGkAadadCgo5QqJuFYMuU6Tj7er+MJwytH+tnc5uf5A6cIpgS9ZA2g9S0+rkypAaRBZxo06CililE8YRgMRhkMRWfktIN0QtE4O97uZXObn5cO9Y35vrVlbm62T0C4fFENi+rKNehMhQYdpVQxy3V57WxZNYB62NLWzZvjagAtrivjuS+szyrozMz2VKWUUjNCRKj0uqn0uvNy2kFSdZmb265YwG1XLODkQIgt7d1sbvNzuDfAkXF1gCajQUcppWYpr9uq8pmP0w5Szav28pFrlvDhNYt5u2eEbft6+PssH6tBRymlZjm300F9RQm1ZZ68nHaQJCKs8FVwycJqDTpKKXW+cTiE6lI31aXuvJ12cK406Cil1BxklZd25fW0g2zkt86pTUQ+JCJ7RSQhIqvH3fdFEekQkX0i8u6U9lvstg4RuTelfZmIvCgiB0TkRyLisdtL7Nsd9v1L8/XzKaVUsfC4HDRUlLC4roz68hLceS5vPV6hvvubwH8Btqc2ishFwB3AxcAtwDdExCkiTuDrwK3ARcCd9rUA9wMPGGNWAv3Ax+32jwP9xpgVwAP2dUopdV5yOITqMjfNdWU0VXnxpjlZIC/9KMQ3Nca0GWP2pbnrNuBxY0zYGHMQ6ADW2B8dxphOY0wEeBy4TayC4OuBTfbjvwd8IOW5vmd/vQnYIIUoIK6UUkWmvMTFgppSFtaWUul1k8+3xsKOs862EDiacrvLbpuovR44bYyJjWsf81z2/QP29UoppYASl5PGSmvqra7cg8sx8yFhxhIJRGQzMC/NXX9pjPnZRA9L02ZIHxzNJNdP9lxnf1ORu4G7ARYvXjxB15RSam5yOoSaMg/VpW5GInEGZ/Cg0RkLOsaYjVN4WBfQnHJ7EXDc/jpd+ymgRkRc9mgm9frkc3WJiAuoBvom6OsjwCNgHYMzhX4rpdSsJyJUlLioKHERjsUZDMYYDsdyetBosU2vPQncYWeeLQNWAi8BLwMr7Uw1D1aywZPGeiWeAW63H38X8LOU57rL/vp2YKvRg+aUUioryam3JTnOeitUyvQHRaQLWAv8QkR+DWCM2Qs8AbwFPAV8yhgTt0cxnwZ+DbQBT9jXAnwB+DMR6cBas/mO3f4doN5u/zNgNM1aKaVUdlKz3uZVeynzTG+CTE+ZHkdPmVZKqcklz3obDseIJ8w51dPREwmUUkqdk+RZb3Xl1llv51JiQYOOUkqpKRERqrzuc3pMsSUSKKWUmsM06CillMobDTpKKaXyRoOOUkqpvNGgo5RSKm806CillMobDTpKKaXyRoOOUkqpvNGgo5RSKm/07LVxRKQHODzB3Q1Y5RSKlfZverR/06P9m57Z3r8lxpjGTE+iQecciMiubA60KxTt3/Ro/6ZH+zc950v/dHpNKaVU3mjQUUoplTcadM7NI4XuQAbav+nR/k2P9m96zov+6ZqOUkqpvNGRjlJKqbzRoDMBEXlURPwi8mZK29+IyDERec3+eE8B+9csIs+ISJuI7BWRz9rtdSLytIgcsD/XFln/iuI1FBGviLwkIoL6reUAAAchSURBVHvs/v0vu32ZiLxov34/EhFPkfXvuyJyMOX1u6IQ/Uvpp1NEXhWRn9u3i+L1m6BvxfbaHRKRN+y+7LLbiuL3d5L+Tfv3V4POxL4L3JKm/QFjzBX2xy/z3KdUMeB/GmNagWuBT4nIRcC9wBZjzEpgi327mPoHxfEahoH1xpjLgSuAW0TkWuB+u38rgX7g40XWP4DPp7x+rxWof0mfBdpSbhfL6wdn9w2K67UDuNnuSzIVuVh+f5PG9w+m+furQWcCxpjtQF+h+zERY8wJY8wr9tdDWL9cC4HbgO/Zl30P+ECR9a8oGMuwfdNtfxhgPbDJbi/k6zdR/4qGiCwC3gt8274tFMnrN75vs0hR/P7OJA065+7TIvK6Pf1WsKFvKhFZCrwDeBFoMsacAOuNH/AVrmeWcf2DInkN7emX1wA/8DTwNnDaGBOzL+migIFyfP+MMcnX72/t1+8BESkpVP+ArwJ/DiTs2/UUz+s3vm9JxfLagfVHxG9EZLeI3G23FdPvb7r+wTR/fzXonJtvAhdgTXecAP5PYbsDIlIB/Dvwp8aYwUL3Z7w0/Sua19AYEzfGXAEsAtYArekuy2+vUr7xuP6JyCXAF4EW4GqgDvhCIfomIu8D/MaY3anNaS7N++s3Qd+gSF67FO80xlwJ3Io1/XxjgfszXrr+Tfv3V4POOTDGdNtvBAngW1hvVAUjIm6sN/QfGmN+Yjd3i8h8+/75WH8lF03/iu01tPt0GtiGtfZUIyIu+65FwPFC9SsppX+32NOWxhgTBv6Vwr1+7wTeLyKHgMexptW+SnG8fmf1TUT+rYheOwCMMcftz37gP+z+FM3vb7r+5eL3V4POOUj+Z7B9EHhzomvz0BcBvgO0GWP+KeWuJ4G77K/vAn6W777BxP0rltdQRBpFpMb+uhTYiLXu9Axwu31ZIV+/dP1rT3lDEqz5/oK8fsaYLxpjFhljlgJ3AFuNMR+hCF6/Cfr234rltbP7UC4ilcmvgd+x+1Msv79p+5eL319X5kvOTyLyGLAOaBCRLuCvgXV2mqUBDgH3FKyD1l9zfwC8Yc/7A/wF8BXgCRH5OHAE+FCR9e/OInkN5wPfExEn1h9fTxhjfi4ibwGPi8iXgVexAmcx9W+riDRiTWW9BvxRgfo3kS9QHK9fOj8soteuCfgPK/7hAv6vMeYpEXmZ4vj9nah/P5ju76+eSKCUUipvdHpNKaVU3mjQUUoplTcadJRSSuWNBh2llFJ5o0FHKaVU3mjQUSoLIrJUUk4cT2m/T0Q2Znjs34jI52aud0rNHrpPR6lpMMZ8qdB9UGo20ZGOUtlzisi3xKpv8xsRKRWrRsvtACLyHhFpF5HnReQhseu42C4SkW0i0ikin7Gv//OUrx8Qka321xtE5N/sr78pIrtkbE2dDSLyH8knFpF3ichPGEdEPiYiPxWR/xSrjsynReTPxKoxs1NE6uzrtonIV0XkBRF5U0TW2O2NYtV0eUVEHhaRwyLSMCOvrDpvaNBRKnsrga8bYy4GTgO/l7xDRLzAw8CtxpjrgcZxj20B3o11VtVf2+fSbQdusO9fDVTY7dcDz9ntf/n/2rt30CiiKIzj/yMiipJO0ola+SLgq4gExMbeJgERJWJA0ppOQSysbRSxUUEkEAsLEVP5iJqAGOMDHyAknY2BsMRooiafxb2GcYlmY3YXJd+v2rm7d+7MwnI4M7Pn5F4mTcDeiGgC7gKb87/rAdpJtcTmsg04mNc9C3yWtB0YAA4XPrda0h6gE7icx06TSsjsINXeWjfP92M2Lwcds8qNFBp/DQLrC+9tAoYljeTt7rK5tyVNSRolFXFszPvYmWtcTZECwS5SIPoZdFoj4hmppMxWYItSGZFrwKFcn60ZuPObY74naVzSR6AE3Mrjr8qOvxtm+0g15P22kApmIqmX1JTNbFF8T8esclOF19PAqsL2XGX9/zR3uaRvuRJyO9APvAT2kUrHv42IDUAXsFvSWERcBVbmfVwhBZBJ4Iak7xFxgJSdABybY92ZwvYMv/7+y+thqYJzMlswZzpm1fEO2BipYR1AW4Xz+kiBpY+U3RwHnudspgGYAEoR0UjqawLMlp3/AJwitVZH0s1CG+GnCzz+NoCIaAFKkkrAI6A1j+8H/ommhfZ/c6ZjVgWSvkREJ9AbEaPAkwqnPgROAgOSJiJiMo8h6UVEDAGvgWHgcdnc68BaSW+qcApjEdFPCnRH89gZoDsi2oAHpKZd41VYy5YwV5k2q5KIWCPpU+7XcgF4L+lcDdc7DwxJWlT7gIi4D3SVZ0eR2jlP50t3zcDF3MnU7K850zGrno6IOAKsIN34v1SrhSJikHTp7USt1iA9rdYTEcuAr0BHDdeyJcKZjpmZ1Y0fJDAzs7px0DEzs7px0DEzs7px0DEzs7px0DEzs7px0DEzs7r5AYhvxGcU2mgOAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>As the highway-mpg goes up, the price goes down: this indicates an inverse/negative relationship between these two variables. Highway mpg could potentially be a predictor of price.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can examine the correlation between 'highway-mpg' and 'price' and see it's approximately -0.704" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"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>highway-mpg</th>\n", | |
" <th>price</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>highway-mpg</th>\n", | |
" <td>1.000000</td>\n", | |
" <td>-0.704692</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>price</th>\n", | |
" <td>-0.704692</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" highway-mpg price\n", | |
"highway-mpg 1.000000 -0.704692\n", | |
"price -0.704692 1.000000" | |
] | |
}, | |
"execution_count": 20, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df[['highway-mpg', 'price']].corr()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Weak Linear Relationship</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's see if \"Peak-rpm\" as a predictor variable of \"price\"." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fdd60152c50>" | |
] | |
}, | |
"execution_count": 21, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"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": [ | |
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Peak rpm does not seem like a good predictor of the price at all since the regression line is close to horizontal. Also, the data points are very scattered and far from the fitted line, showing lots of variability. Therefore it's it is not a reliable variable.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can examine the correlation between 'peak-rpm' and 'price' and see it's approximately -0.101616 " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"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>peak-rpm</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.101616</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>price</th>\n", | |
" <td>-0.101616</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" peak-rpm price\n", | |
"peak-rpm 1.000000 -0.101616\n", | |
"price -0.101616 1.000000" | |
] | |
}, | |
"execution_count": 22, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df[['peak-rpm','price']].corr()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" <div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1> Question 3 a): </h1>\n", | |
"\n", | |
"<p>Find the correlation between x=\"stroke\", y=\"price\".</p>\n", | |
"<p>Hint: if you would like to select those columns use the following syntax: df[[\"stroke\",\"price\"]] </p>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"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>stroke</th>\n", | |
" <th>price</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>stroke</th>\n", | |
" <td>1.00000</td>\n", | |
" <td>0.08231</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>price</th>\n", | |
" <td>0.08231</td>\n", | |
" <td>1.00000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" stroke price\n", | |
"stroke 1.00000 0.08231\n", | |
"price 0.08231 1.00000" | |
] | |
}, | |
"execution_count": 23, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute\n", | |
"df[[\"stroke\",\"price\"]].corr()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"#The correlation is 0.0823, the non-diagonal elements of the table.\n", | |
"#code:\n", | |
"df[[\"stroke\",\"price\"]].corr() \n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1>Question 3 b):</h1>\n", | |
"\n", | |
"<p>Given the correlation results between \"price\" and \"stroke\" do you expect a linear relationship?</p> \n", | |
"<p>Verify your results using the function \"regplot()\".</p>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 25, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fdd600c6cc0>" | |
] | |
}, | |
"execution_count": 25, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute\n", | |
"#No\n", | |
"sns.regplot(x=\"stroke\", y=\"price\", data=df)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"#There is a weak correlation between the variable 'stroke' and 'price.' as such regression will not work well. We #can see this use \"regplot\" to demonstrate this.\n", | |
"\n", | |
"#Code: \n", | |
"sns.regplot(x=\"stroke\", y=\"price\", data=df)\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Categorical variables</h3>\n", | |
"\n", | |
"<p>These are variables that describe a 'characteristic' of a data unit, and are selected from a small group of categories. The categorical variables can have the type \"object\" or \"int64\". A good way to visualize categorical variables is by using boxplots.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's look at the relationship between \"body-style\" and \"price\"." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 26, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fdd6002d128>" | |
] | |
}, | |
"execution_count": 26, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"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": [ | |
"sns.boxplot(x=\"body-style\", y=\"price\", data=df)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>We see that the distributions of price between the different body-style categories have a significant overlap, and so body-style would not be a good predictor of price. Let's examine engine \"engine-location\" and \"price\":</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 27, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fdd60018358>" | |
] | |
}, | |
"execution_count": 27, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"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": [ | |
"sns.boxplot(x=\"engine-location\", y=\"price\", data=df)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Here we see that the distribution of price between these two engine-location categories, front and rear, are distinct enough to take engine-location as a potential good predictor of price.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's examine \"drive-wheels\" and \"price\"." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 28, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fdd3aebf2e8>" | |
] | |
}, | |
"execution_count": 28, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"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": [ | |
"# drive-wheels\n", | |
"sns.boxplot(x=\"drive-wheels\", y=\"price\", data=df)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Here we see that the distribution of price between the different drive-wheels categories differs; as such drive-wheels could potentially be a predictor of price.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2 id=\"discriptive_statistics\">3. Descriptive Statistical Analysis</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Let's first take a look at the variables by utilizing a description method.</p>\n", | |
"\n", | |
"<p>The <b>describe</b> function automatically computes basic statistics for all continuous variables. Any NaN values are automatically skipped in these statistics.</p>\n", | |
"\n", | |
"This will show:\n", | |
"<ul>\n", | |
" <li>the count of that variable</li>\n", | |
" <li>the mean</li>\n", | |
" <li>the standard deviation (std)</li> \n", | |
" <li>the minimum value</li>\n", | |
" <li>the IQR (Interquartile Range: 25%, 50% and 75%)</li>\n", | |
" <li>the maximum value</li>\n", | |
"<ul>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" We can apply the method \"describe\" as follows:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 29, | |
"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>wheel-base</th>\n", | |
" <th>length</th>\n", | |
" <th>width</th>\n", | |
" <th>height</th>\n", | |
" <th>curb-weight</th>\n", | |
" <th>engine-size</th>\n", | |
" <th>bore</th>\n", | |
" <th>stroke</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>diesel</th>\n", | |
" <th>gas</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>count</th>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.00000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>197.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" <td>201.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>mean</th>\n", | |
" <td>0.840796</td>\n", | |
" <td>122.00000</td>\n", | |
" <td>98.797015</td>\n", | |
" <td>0.837102</td>\n", | |
" <td>0.915126</td>\n", | |
" <td>53.766667</td>\n", | |
" <td>2555.666667</td>\n", | |
" <td>126.875622</td>\n", | |
" <td>3.330692</td>\n", | |
" <td>3.256904</td>\n", | |
" <td>10.164279</td>\n", | |
" <td>103.405534</td>\n", | |
" <td>5117.665368</td>\n", | |
" <td>25.179104</td>\n", | |
" <td>30.686567</td>\n", | |
" <td>13207.129353</td>\n", | |
" <td>9.944145</td>\n", | |
" <td>0.099502</td>\n", | |
" <td>0.900498</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>std</th>\n", | |
" <td>1.254802</td>\n", | |
" <td>31.99625</td>\n", | |
" <td>6.066366</td>\n", | |
" <td>0.059213</td>\n", | |
" <td>0.029187</td>\n", | |
" <td>2.447822</td>\n", | |
" <td>517.296727</td>\n", | |
" <td>41.546834</td>\n", | |
" <td>0.268072</td>\n", | |
" <td>0.319256</td>\n", | |
" <td>4.004965</td>\n", | |
" <td>37.365700</td>\n", | |
" <td>478.113805</td>\n", | |
" <td>6.423220</td>\n", | |
" <td>6.815150</td>\n", | |
" <td>7947.066342</td>\n", | |
" <td>2.534599</td>\n", | |
" <td>0.300083</td>\n", | |
" <td>0.300083</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>min</th>\n", | |
" <td>-2.000000</td>\n", | |
" <td>65.00000</td>\n", | |
" <td>86.600000</td>\n", | |
" <td>0.678039</td>\n", | |
" <td>0.837500</td>\n", | |
" <td>47.800000</td>\n", | |
" <td>1488.000000</td>\n", | |
" <td>61.000000</td>\n", | |
" <td>2.540000</td>\n", | |
" <td>2.070000</td>\n", | |
" <td>7.000000</td>\n", | |
" <td>48.000000</td>\n", | |
" <td>4150.000000</td>\n", | |
" <td>13.000000</td>\n", | |
" <td>16.000000</td>\n", | |
" <td>5118.000000</td>\n", | |
" <td>4.795918</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>25%</th>\n", | |
" <td>0.000000</td>\n", | |
" <td>101.00000</td>\n", | |
" <td>94.500000</td>\n", | |
" <td>0.801538</td>\n", | |
" <td>0.890278</td>\n", | |
" <td>52.000000</td>\n", | |
" <td>2169.000000</td>\n", | |
" <td>98.000000</td>\n", | |
" <td>3.150000</td>\n", | |
" <td>3.110000</td>\n", | |
" <td>8.600000</td>\n", | |
" <td>70.000000</td>\n", | |
" <td>4800.000000</td>\n", | |
" <td>19.000000</td>\n", | |
" <td>25.000000</td>\n", | |
" <td>7775.000000</td>\n", | |
" <td>7.833333</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>50%</th>\n", | |
" <td>1.000000</td>\n", | |
" <td>122.00000</td>\n", | |
" <td>97.000000</td>\n", | |
" <td>0.832292</td>\n", | |
" <td>0.909722</td>\n", | |
" <td>54.100000</td>\n", | |
" <td>2414.000000</td>\n", | |
" <td>120.000000</td>\n", | |
" <td>3.310000</td>\n", | |
" <td>3.290000</td>\n", | |
" <td>9.000000</td>\n", | |
" <td>95.000000</td>\n", | |
" <td>5125.369458</td>\n", | |
" <td>24.000000</td>\n", | |
" <td>30.000000</td>\n", | |
" <td>10295.000000</td>\n", | |
" <td>9.791667</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>75%</th>\n", | |
" <td>2.000000</td>\n", | |
" <td>137.00000</td>\n", | |
" <td>102.400000</td>\n", | |
" <td>0.881788</td>\n", | |
" <td>0.925000</td>\n", | |
" <td>55.500000</td>\n", | |
" <td>2926.000000</td>\n", | |
" <td>141.000000</td>\n", | |
" <td>3.580000</td>\n", | |
" <td>3.410000</td>\n", | |
" <td>9.400000</td>\n", | |
" <td>116.000000</td>\n", | |
" <td>5500.000000</td>\n", | |
" <td>30.000000</td>\n", | |
" <td>34.000000</td>\n", | |
" <td>16500.000000</td>\n", | |
" <td>12.368421</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>max</th>\n", | |
" <td>3.000000</td>\n", | |
" <td>256.00000</td>\n", | |
" <td>120.900000</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>59.800000</td>\n", | |
" <td>4066.000000</td>\n", | |
" <td>326.000000</td>\n", | |
" <td>3.940000</td>\n", | |
" <td>4.170000</td>\n", | |
" <td>23.000000</td>\n", | |
" <td>262.000000</td>\n", | |
" <td>6600.000000</td>\n", | |
" <td>49.000000</td>\n", | |
" <td>54.000000</td>\n", | |
" <td>45400.000000</td>\n", | |
" <td>18.076923</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" symboling normalized-losses wheel-base length width \\\n", | |
"count 201.000000 201.00000 201.000000 201.000000 201.000000 \n", | |
"mean 0.840796 122.00000 98.797015 0.837102 0.915126 \n", | |
"std 1.254802 31.99625 6.066366 0.059213 0.029187 \n", | |
"min -2.000000 65.00000 86.600000 0.678039 0.837500 \n", | |
"25% 0.000000 101.00000 94.500000 0.801538 0.890278 \n", | |
"50% 1.000000 122.00000 97.000000 0.832292 0.909722 \n", | |
"75% 2.000000 137.00000 102.400000 0.881788 0.925000 \n", | |
"max 3.000000 256.00000 120.900000 1.000000 1.000000 \n", | |
"\n", | |
" height curb-weight engine-size bore stroke \\\n", | |
"count 201.000000 201.000000 201.000000 201.000000 197.000000 \n", | |
"mean 53.766667 2555.666667 126.875622 3.330692 3.256904 \n", | |
"std 2.447822 517.296727 41.546834 0.268072 0.319256 \n", | |
"min 47.800000 1488.000000 61.000000 2.540000 2.070000 \n", | |
"25% 52.000000 2169.000000 98.000000 3.150000 3.110000 \n", | |
"50% 54.100000 2414.000000 120.000000 3.310000 3.290000 \n", | |
"75% 55.500000 2926.000000 141.000000 3.580000 3.410000 \n", | |
"max 59.800000 4066.000000 326.000000 3.940000 4.170000 \n", | |
"\n", | |
" compression-ratio horsepower peak-rpm city-mpg highway-mpg \\\n", | |
"count 201.000000 201.000000 201.000000 201.000000 201.000000 \n", | |
"mean 10.164279 103.405534 5117.665368 25.179104 30.686567 \n", | |
"std 4.004965 37.365700 478.113805 6.423220 6.815150 \n", | |
"min 7.000000 48.000000 4150.000000 13.000000 16.000000 \n", | |
"25% 8.600000 70.000000 4800.000000 19.000000 25.000000 \n", | |
"50% 9.000000 95.000000 5125.369458 24.000000 30.000000 \n", | |
"75% 9.400000 116.000000 5500.000000 30.000000 34.000000 \n", | |
"max 23.000000 262.000000 6600.000000 49.000000 54.000000 \n", | |
"\n", | |
" price city-L/100km diesel gas \n", | |
"count 201.000000 201.000000 201.000000 201.000000 \n", | |
"mean 13207.129353 9.944145 0.099502 0.900498 \n", | |
"std 7947.066342 2.534599 0.300083 0.300083 \n", | |
"min 5118.000000 4.795918 0.000000 0.000000 \n", | |
"25% 7775.000000 7.833333 0.000000 1.000000 \n", | |
"50% 10295.000000 9.791667 0.000000 1.000000 \n", | |
"75% 16500.000000 12.368421 0.000000 1.000000 \n", | |
"max 45400.000000 18.076923 1.000000 1.000000 " | |
] | |
}, | |
"execution_count": 29, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.describe()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" The default setting of \"describe\" skips variables of type object. We can apply the method \"describe\" on the variables of type 'object' as follows:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"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>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>engine-type</th>\n", | |
" <th>num-of-cylinders</th>\n", | |
" <th>fuel-system</th>\n", | |
" <th>horsepower-binned</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>count</th>\n", | |
" <td>201</td>\n", | |
" <td>201</td>\n", | |
" <td>201</td>\n", | |
" <td>201</td>\n", | |
" <td>201</td>\n", | |
" <td>201</td>\n", | |
" <td>201</td>\n", | |
" <td>201</td>\n", | |
" <td>201</td>\n", | |
" <td>200</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>unique</th>\n", | |
" <td>22</td>\n", | |
" <td>2</td>\n", | |
" <td>2</td>\n", | |
" <td>5</td>\n", | |
" <td>3</td>\n", | |
" <td>2</td>\n", | |
" <td>6</td>\n", | |
" <td>7</td>\n", | |
" <td>8</td>\n", | |
" <td>3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>top</th>\n", | |
" <td>toyota</td>\n", | |
" <td>std</td>\n", | |
" <td>four</td>\n", | |
" <td>sedan</td>\n", | |
" <td>fwd</td>\n", | |
" <td>front</td>\n", | |
" <td>ohc</td>\n", | |
" <td>four</td>\n", | |
" <td>mpfi</td>\n", | |
" <td>Low</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>freq</th>\n", | |
" <td>32</td>\n", | |
" <td>165</td>\n", | |
" <td>115</td>\n", | |
" <td>94</td>\n", | |
" <td>118</td>\n", | |
" <td>198</td>\n", | |
" <td>145</td>\n", | |
" <td>157</td>\n", | |
" <td>92</td>\n", | |
" <td>115</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" make aspiration num-of-doors body-style drive-wheels \\\n", | |
"count 201 201 201 201 201 \n", | |
"unique 22 2 2 5 3 \n", | |
"top toyota std four sedan fwd \n", | |
"freq 32 165 115 94 118 \n", | |
"\n", | |
" engine-location engine-type num-of-cylinders fuel-system \\\n", | |
"count 201 201 201 201 \n", | |
"unique 2 6 7 8 \n", | |
"top front ohc four mpfi \n", | |
"freq 198 145 157 92 \n", | |
"\n", | |
" horsepower-binned \n", | |
"count 200 \n", | |
"unique 3 \n", | |
"top Low \n", | |
"freq 115 " | |
] | |
}, | |
"execution_count": 30, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.describe(include=['object'])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Value Counts</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Value-counts is a good way of understanding how many units of each characteristic/variable we have. We can apply the \"value_counts\" method on the column 'drive-wheels'. Don’t forget the method \"value_counts\" only works on Pandas series, not Pandas Dataframes. As a result, we only include one bracket \"df['drive-wheels']\" not two brackets \"df[['drive-wheels']]\".</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"fwd 118\n", | |
"rwd 75\n", | |
"4wd 8\n", | |
"Name: drive-wheels, dtype: int64" | |
] | |
}, | |
"execution_count": 31, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df['drive-wheels'].value_counts()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can convert the series to a Dataframe as follows :" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"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>drive-wheels</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>fwd</th>\n", | |
" <td>118</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>rwd</th>\n", | |
" <td>75</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4wd</th>\n", | |
" <td>8</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" drive-wheels\n", | |
"fwd 118\n", | |
"rwd 75\n", | |
"4wd 8" | |
] | |
}, | |
"execution_count": 32, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df['drive-wheels'].value_counts().to_frame()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's repeat the above steps but save the results to the dataframe \"drive_wheels_counts\" and rename the column 'drive-wheels' to 'value_counts'." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"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>value_counts</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>fwd</th>\n", | |
" <td>118</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>rwd</th>\n", | |
" <td>75</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4wd</th>\n", | |
" <td>8</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" value_counts\n", | |
"fwd 118\n", | |
"rwd 75\n", | |
"4wd 8" | |
] | |
}, | |
"execution_count": 33, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"drive_wheels_counts = df['drive-wheels'].value_counts().to_frame()\n", | |
"drive_wheels_counts.rename(columns={'drive-wheels': 'value_counts'}, inplace=True)\n", | |
"drive_wheels_counts" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Now let's rename the index to 'drive-wheels':" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"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>value_counts</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>drive-wheels</th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>fwd</th>\n", | |
" <td>118</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>rwd</th>\n", | |
" <td>75</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4wd</th>\n", | |
" <td>8</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" value_counts\n", | |
"drive-wheels \n", | |
"fwd 118\n", | |
"rwd 75\n", | |
"4wd 8" | |
] | |
}, | |
"execution_count": 34, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"drive_wheels_counts.index.name = 'drive-wheels'\n", | |
"drive_wheels_counts" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can repeat the above process for the variable 'engine-location'." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"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>value_counts</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>engine-location</th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>front</th>\n", | |
" <td>198</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>rear</th>\n", | |
" <td>3</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" value_counts\n", | |
"engine-location \n", | |
"front 198\n", | |
"rear 3" | |
] | |
}, | |
"execution_count": 35, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# engine-location as variable\n", | |
"engine_loc_counts = df['engine-location'].value_counts().to_frame()\n", | |
"engine_loc_counts.rename(columns={'engine-location': 'value_counts'}, inplace=True)\n", | |
"engine_loc_counts.index.name = 'engine-location'\n", | |
"engine_loc_counts.head(10)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Examining the value counts of the engine location would not be a good predictor variable for the price. This is because we only have three cars with a rear engine and 198 with an engine in the front, this result is skewed. Thus, we are not able to draw any conclusions about the engine location.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2 id=\"basic_grouping\">4. Basics of Grouping</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>The \"groupby\" method groups data by different categories. The data is grouped based on one or several variables and analysis is performed on the individual groups.</p>\n", | |
"\n", | |
"<p>For example, let's group by the variable \"drive-wheels\". We see that there are 3 different categories of drive wheels.</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array(['rwd', 'fwd', '4wd'], dtype=object)" | |
] | |
}, | |
"execution_count": 36, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df['drive-wheels'].unique()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>If we want to know, on average, which type of drive wheel is most valuable, we can group \"drive-wheels\" and then average them.</p>\n", | |
"\n", | |
"<p>We can select the columns 'drive-wheels', 'body-style' and 'price', then assign it to the variable \"df_group_one\".</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"df_group_one = df[['drive-wheels','body-style','price']]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can then calculate the average price for each of the different categories of data." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 51, | |
"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>drive-wheels</th>\n", | |
" <th>price</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>4wd</td>\n", | |
" <td>10241.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>fwd</td>\n", | |
" <td>9244.779661</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>rwd</td>\n", | |
" <td>19757.613333</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" drive-wheels price\n", | |
"0 4wd 10241.000000\n", | |
"1 fwd 9244.779661\n", | |
"2 rwd 19757.613333" | |
] | |
}, | |
"execution_count": 51, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# grouping results\n", | |
"df_group_one = df_group_one.groupby(['drive-wheels'],as_index=False).mean()\n", | |
"df_group_one" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>From our data, it seems rear-wheel drive vehicles are, on average, the most expensive, while 4-wheel and front-wheel are approximately the same in price.</p>\n", | |
"\n", | |
"<p>You can also group with multiple variables. For example, let's group by both 'drive-wheels' and 'body-style'. This groups the dataframe by the unique combinations 'drive-wheels' and 'body-style'. We can store the results in the variable 'grouped_test1'.</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 52, | |
"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>drive-wheels</th>\n", | |
" <th>body-style</th>\n", | |
" <th>price</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>4wd</td>\n", | |
" <td>hatchback</td>\n", | |
" <td>7603.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>4wd</td>\n", | |
" <td>sedan</td>\n", | |
" <td>12647.333333</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>4wd</td>\n", | |
" <td>wagon</td>\n", | |
" <td>9095.750000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>fwd</td>\n", | |
" <td>convertible</td>\n", | |
" <td>11595.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>fwd</td>\n", | |
" <td>hardtop</td>\n", | |
" <td>8249.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>fwd</td>\n", | |
" <td>hatchback</td>\n", | |
" <td>8396.387755</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>fwd</td>\n", | |
" <td>sedan</td>\n", | |
" <td>9811.800000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>7</th>\n", | |
" <td>fwd</td>\n", | |
" <td>wagon</td>\n", | |
" <td>9997.333333</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>8</th>\n", | |
" <td>rwd</td>\n", | |
" <td>convertible</td>\n", | |
" <td>23949.600000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>9</th>\n", | |
" <td>rwd</td>\n", | |
" <td>hardtop</td>\n", | |
" <td>24202.714286</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>10</th>\n", | |
" <td>rwd</td>\n", | |
" <td>hatchback</td>\n", | |
" <td>14337.777778</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>11</th>\n", | |
" <td>rwd</td>\n", | |
" <td>sedan</td>\n", | |
" <td>21711.833333</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>12</th>\n", | |
" <td>rwd</td>\n", | |
" <td>wagon</td>\n", | |
" <td>16994.222222</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" drive-wheels body-style price\n", | |
"0 4wd hatchback 7603.000000\n", | |
"1 4wd sedan 12647.333333\n", | |
"2 4wd wagon 9095.750000\n", | |
"3 fwd convertible 11595.000000\n", | |
"4 fwd hardtop 8249.000000\n", | |
"5 fwd hatchback 8396.387755\n", | |
"6 fwd sedan 9811.800000\n", | |
"7 fwd wagon 9997.333333\n", | |
"8 rwd convertible 23949.600000\n", | |
"9 rwd hardtop 24202.714286\n", | |
"10 rwd hatchback 14337.777778\n", | |
"11 rwd sedan 21711.833333\n", | |
"12 rwd wagon 16994.222222" | |
] | |
}, | |
"execution_count": 52, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# grouping results\n", | |
"df_gptest = df[['drive-wheels','body-style','price']]\n", | |
"grouped_test1 = df_gptest.groupby(['drive-wheels','body-style'],as_index=False).mean()\n", | |
"grouped_test1" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>This grouped data is much easier to visualize when it is made into a pivot table. A pivot table is like an Excel spreadsheet, with one variable along the column and another along the row. We can convert the dataframe to a pivot table using the method \"pivot \" to create a pivot table from the groups.</p>\n", | |
"\n", | |
"<p>In this case, we will leave the drive-wheel variable as the rows of the table, and pivot body-style to become the columns of the table:</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"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 tr th {\n", | |
" text-align: left;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead tr:last-of-type th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr>\n", | |
" <th></th>\n", | |
" <th colspan=\"5\" halign=\"left\">price</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>body-style</th>\n", | |
" <th>convertible</th>\n", | |
" <th>hardtop</th>\n", | |
" <th>hatchback</th>\n", | |
" <th>sedan</th>\n", | |
" <th>wagon</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>drive-wheels</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>4wd</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>7603.000000</td>\n", | |
" <td>12647.333333</td>\n", | |
" <td>9095.750000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>fwd</th>\n", | |
" <td>11595.0</td>\n", | |
" <td>8249.000000</td>\n", | |
" <td>8396.387755</td>\n", | |
" <td>9811.800000</td>\n", | |
" <td>9997.333333</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>rwd</th>\n", | |
" <td>23949.6</td>\n", | |
" <td>24202.714286</td>\n", | |
" <td>14337.777778</td>\n", | |
" <td>21711.833333</td>\n", | |
" <td>16994.222222</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" price \\\n", | |
"body-style convertible hardtop hatchback sedan \n", | |
"drive-wheels \n", | |
"4wd NaN NaN 7603.000000 12647.333333 \n", | |
"fwd 11595.0 8249.000000 8396.387755 9811.800000 \n", | |
"rwd 23949.6 24202.714286 14337.777778 21711.833333 \n", | |
"\n", | |
" \n", | |
"body-style wagon \n", | |
"drive-wheels \n", | |
"4wd 9095.750000 \n", | |
"fwd 9997.333333 \n", | |
"rwd 16994.222222 " | |
] | |
}, | |
"execution_count": 53, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"grouped_pivot = grouped_test1.pivot(index='drive-wheels',columns='body-style')\n", | |
"grouped_pivot" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Often, we won't have data for some of the pivot cells. We can fill these missing cells with the value 0, but any other value could potentially be used as well. It should be mentioned that missing data is quite a complex subject and is an entire course on its own.</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"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 tr th {\n", | |
" text-align: left;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead tr:last-of-type th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr>\n", | |
" <th></th>\n", | |
" <th colspan=\"5\" halign=\"left\">price</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>body-style</th>\n", | |
" <th>convertible</th>\n", | |
" <th>hardtop</th>\n", | |
" <th>hatchback</th>\n", | |
" <th>sedan</th>\n", | |
" <th>wagon</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>drive-wheels</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>4wd</th>\n", | |
" <td>0.0</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>7603.000000</td>\n", | |
" <td>12647.333333</td>\n", | |
" <td>9095.750000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>fwd</th>\n", | |
" <td>11595.0</td>\n", | |
" <td>8249.000000</td>\n", | |
" <td>8396.387755</td>\n", | |
" <td>9811.800000</td>\n", | |
" <td>9997.333333</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>rwd</th>\n", | |
" <td>23949.6</td>\n", | |
" <td>24202.714286</td>\n", | |
" <td>14337.777778</td>\n", | |
" <td>21711.833333</td>\n", | |
" <td>16994.222222</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" price \\\n", | |
"body-style convertible hardtop hatchback sedan \n", | |
"drive-wheels \n", | |
"4wd 0.0 0.000000 7603.000000 12647.333333 \n", | |
"fwd 11595.0 8249.000000 8396.387755 9811.800000 \n", | |
"rwd 23949.6 24202.714286 14337.777778 21711.833333 \n", | |
"\n", | |
" \n", | |
"body-style wagon \n", | |
"drive-wheels \n", | |
"4wd 9095.750000 \n", | |
"fwd 9997.333333 \n", | |
"rwd 16994.222222 " | |
] | |
}, | |
"execution_count": 54, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"grouped_pivot = grouped_pivot.fillna(0) #fill missing values with 0\n", | |
"grouped_pivot" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n", | |
"<h1>Question 4:</h1>\n", | |
"\n", | |
"<p>Use the \"groupby\" function to find the average \"price\" of each car based on \"body-style\" ? </p>\n", | |
"</div>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 62, | |
"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>body-style</th>\n", | |
" <th>price</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>convertible</td>\n", | |
" <td>21890.500000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>hardtop</td>\n", | |
" <td>22208.500000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>hatchback</td>\n", | |
" <td>9957.441176</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>sedan</td>\n", | |
" <td>14459.755319</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>wagon</td>\n", | |
" <td>12371.960000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" body-style price\n", | |
"0 convertible 21890.500000\n", | |
"1 hardtop 22208.500000\n", | |
"2 hatchback 9957.441176\n", | |
"3 sedan 14459.755319\n", | |
"4 wagon 12371.960000" | |
] | |
}, | |
"execution_count": 62, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute \n", | |
"df_grouptest = df[['price', 'body-style']]\n", | |
"df_grouptest['body-style'].unique().tolist()\n", | |
"grouped_test2 = df_grouptest.groupby(['body-style'],as_index=False).mean()\n", | |
"grouped_test2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Double-click <b>here</b> for the solution.\n", | |
"\n", | |
"<!-- The answer is below:\n", | |
"\n", | |
"# grouping results\n", | |
"df_gptest2 = df[['body-style','price']]\n", | |
"grouped_test_bodystyle = df_gptest2.groupby(['body-style'],as_index= False).mean()\n", | |
"grouped_test_bodystyle\n", | |
"\n", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"If you did not import \"pyplot\" let's do it again. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 63, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"%matplotlib inline " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>Variables: Drive Wheels and Body Style vs Price</h4>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's use a heat map to visualize the relationship between Body Style vs Price." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 64, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"#use the grouped results\n", | |
"plt.pcolor(grouped_pivot, cmap='RdBu')\n", | |
"plt.colorbar()\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>The heatmap plots the target variable (price) proportional to colour with respect to the variables 'drive-wheel' and 'body-style' in the vertical and horizontal axis respectively. This allows us to visualize how the price is related to 'drive-wheel' and 'body-style'.</p>\n", | |
"\n", | |
"<p>The default labels convey no useful information to us. Let's change that:</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 65, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fig, ax = plt.subplots()\n", | |
"im = ax.pcolor(grouped_pivot, cmap='RdBu')\n", | |
"\n", | |
"#label names\n", | |
"row_labels = grouped_pivot.columns.levels[1]\n", | |
"col_labels = grouped_pivot.index\n", | |
"\n", | |
"#move ticks and labels to the center\n", | |
"ax.set_xticks(np.arange(grouped_pivot.shape[1]) + 0.5, minor=False)\n", | |
"ax.set_yticks(np.arange(grouped_pivot.shape[0]) + 0.5, minor=False)\n", | |
"\n", | |
"#insert labels\n", | |
"ax.set_xticklabels(row_labels, minor=False)\n", | |
"ax.set_yticklabels(col_labels, minor=False)\n", | |
"\n", | |
"#rotate label if too long\n", | |
"plt.xticks(rotation=90)\n", | |
"\n", | |
"fig.colorbar(im)\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Visualization is very important in data science, and Python visualization packages provide great freedom. We will go more in-depth in a separate Python Visualizations course.</p>\n", | |
"\n", | |
"<p>The main question we want to answer in this module, is \"What are the main characteristics which have the most impact on the car price?\".</p>\n", | |
"\n", | |
"<p>To get a better measure of the important characteristics, we look at the correlation of these variables with the car price, in other words: how is the car price dependent on this variable?</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2 id=\"correlation_causation\">5. Correlation and Causation</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p><b>Correlation</b>: a measure of the extent of interdependence between variables.</p>\n", | |
"\n", | |
"<p><b>Causation</b>: the relationship between cause and effect between two variables.</p>\n", | |
"\n", | |
"<p>It is important to know the difference between these two and that correlation does not imply causation. Determining correlation is much simpler the determining causation as causation may require independent experimentation.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p3>Pearson Correlation</p>\n", | |
"<p>The Pearson Correlation measures the linear dependence between two variables X and Y.</p>\n", | |
"<p>The resulting coefficient is a value between -1 and 1 inclusive, where:</p>\n", | |
"<ul>\n", | |
" <li><b>1</b>: Total positive linear correlation.</li>\n", | |
" <li><b>0</b>: No linear correlation, the two variables most likely do not affect each other.</li>\n", | |
" <li><b>-1</b>: Total negative linear correlation.</li>\n", | |
"</ul>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Pearson Correlation is the default method of the function \"corr\". Like before we can calculate the Pearson Correlation of the of the 'int64' or 'float64' variables.</p>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"df.corr()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" sometimes we would like to know the significant of the correlation estimate. " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>P-value</b>: \n", | |
"<p>What is this P-value? The P-value is the probability value that the correlation between these two variables is statistically significant. Normally, we choose a significance level of 0.05, which means that we are 95% confident that the correlation between the variables is significant.</p>\n", | |
"\n", | |
"By convention, when the\n", | |
"<ul>\n", | |
" <li>p-value is $<$ 0.001: we say there is strong evidence that the correlation is significant.</li>\n", | |
" <li>the p-value is $<$ 0.05: there is moderate evidence that the correlation is significant.</li>\n", | |
" <li>the p-value is $<$ 0.1: there is weak evidence that the correlation is significant.</li>\n", | |
" <li>the p-value is $>$ 0.1: there is no evidence that the correlation is significant.</li>\n", | |
"</ul>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" We can obtain this information using \"stats\" module in the \"scipy\" library." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from scipy import stats" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Wheel-base vs Price</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's calculate the Pearson Correlation Coefficient and P-value of 'wheel-base' and 'price'. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['wheel-base'], df['price'])\n", | |
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h5>Conclusion:</h5>\n", | |
"<p>Since the p-value is $<$ 0.001, the correlation between wheel-base and price is statistically significant, although the linear relationship isn't extremely strong (~0.585)</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Horsepower vs Price</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's calculate the Pearson Correlation Coefficient and P-value of 'horsepower' and 'price'." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['horsepower'], df['price'])\n", | |
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h5>Conclusion:</h5>\n", | |
"\n", | |
"<p>Since the p-value is $<$ 0.001, the correlation between horsepower and price is statistically significant, and the linear relationship is quite strong (~0.809, close to 1)</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Length vs Price</h3>\n", | |
"\n", | |
"Let's calculate the Pearson Correlation Coefficient and P-value of 'length' and 'price'." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['length'], df['price'])\n", | |
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h5>Conclusion:</h5>\n", | |
"<p>Since the p-value is $<$ 0.001, the correlation between length and price is statistically significant, and the linear relationship is moderately strong (~0.691).</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Width vs Price</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's calculate the Pearson Correlation Coefficient and P-value of 'width' and 'price':" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['width'], df['price'])\n", | |
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value ) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"##### Conclusion:\n", | |
"\n", | |
"Since the p-value is < 0.001, the correlation between width and price is statistically significant, and the linear relationship is quite strong (~0.751)." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Curb-weight vs Price" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's calculate the Pearson Correlation Coefficient and P-value of 'curb-weight' and 'price':" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['curb-weight'], df['price'])\n", | |
"print( \"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h5>Conclusion:</h5>\n", | |
"<p>Since the p-value is $<$ 0.001, the correlation between curb-weight and price is statistically significant, and the linear relationship is quite strong (~0.834).</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Engine-size vs Price</h3>\n", | |
"\n", | |
"Let's calculate the Pearson Correlation Coefficient and P-value of 'engine-size' and 'price':" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['engine-size'], df['price'])\n", | |
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h5>Conclusion:</h5>\n", | |
"\n", | |
"<p>Since the p-value is $<$ 0.001, the correlation between engine-size and price is statistically significant, and the linear relationship is very strong (~0.872).</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Bore vs Price</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's calculate the Pearson Correlation Coefficient and P-value of 'bore' and 'price':" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['bore'], df['price'])\n", | |
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value ) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h5>Conclusion:</h5>\n", | |
"<p>Since the p-value is $<$ 0.001, the correlation between bore and price is statistically significant, but the linear relationship is only moderate (~0.521).</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" We can relate the process for each 'City-mpg' and 'Highway-mpg':" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>City-mpg vs Price</h3>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['city-mpg'], df['price'])\n", | |
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h5>Conclusion:</h5>\n", | |
"<p>Since the p-value is $<$ 0.001, the correlation between city-mpg and price is statistically significant, and the coefficient of ~ -0.687 shows that the relationship is negative and moderately strong.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Highway-mpg vs Price</h3>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pearson_coef, p_value = stats.pearsonr(df['highway-mpg'], df['price'])\n", | |
"print( \"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value ) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"##### Conclusion:\n", | |
"Since the p-value is < 0.001, the correlation between highway-mpg and price is statistically significant, and the coefficient of ~ -0.705 shows that the relationship is negative and moderately strong." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2 id=\"anova\">6. ANOVA</h2>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>ANOVA: Analysis of Variance</h3>\n", | |
"<p>The Analysis of Variance (ANOVA) is a statistical method used to test whether there are significant differences between the means of two or more groups. ANOVA returns two parameters:</p>\n", | |
"\n", | |
"<p><b>F-test score</b>: ANOVA assumes the means of all groups are the same, calculates how much the actual means deviate from the assumption, and reports it as the F-test score. A larger score means there is a larger difference between the means.</p>\n", | |
"\n", | |
"<p><b>P-value</b>: P-value tells how statistically significant is our calculated score value.</p>\n", | |
"\n", | |
"<p>If our price variable is strongly correlated with the variable we are analyzing, expect ANOVA to return a sizeable F-test score and a small p-value.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Drive Wheels</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>Since ANOVA analyzes the difference between different groups of the same variable, the groupby function will come in handy. Because the ANOVA algorithm averages the data automatically, we do not need to take the average before hand.</p>\n", | |
"\n", | |
"<p>Let's see if different types 'drive-wheels' impact 'price', we group the data.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's see if different types 'drive-wheels' impact 'price', we group the data." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"grouped_test2=df_gptest[['drive-wheels', 'price']].groupby(['drive-wheels'])\n", | |
"grouped_test2.head(2)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"df_gptest" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" We can obtain the values of the method group using the method \"get_group\". " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"grouped_test2.get_group('4wd')['price']" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"we can use the function 'f_oneway' in the module 'stats' to obtain the <b>F-test score</b> and <b>P-value</b>." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"# ANOVA\n", | |
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'], grouped_test2.get_group('rwd')['price'], grouped_test2.get_group('4wd')['price']) \n", | |
" \n", | |
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This is a great result, with a large F test score showing a strong correlation and a P value of almost 0 implying almost certain statistical significance. But does this mean all three tested groups are all this highly correlated? " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### Separately: fwd and rwd" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'], grouped_test2.get_group('rwd')['price']) \n", | |
" \n", | |
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val )" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" Let's examine the other groups " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 4wd and rwd" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('rwd')['price']) \n", | |
" \n", | |
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h4>4wd and fwd</h4>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('fwd')['price']) \n", | |
" \n", | |
"print(\"ANOVA results: F=\", f_val, \", P =\", p_val) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3>Conclusion: Important Variables</h3>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p>We now have a better idea of what our data looks like and which variables are important to take into account when predicting the car price. We have narrowed it down to the following variables:</p>\n", | |
"\n", | |
"Continuous numerical variables:\n", | |
"<ul>\n", | |
" <li>Length</li>\n", | |
" <li>Width</li>\n", | |
" <li>Curb-weight</li>\n", | |
" <li>Engine-size</li>\n", | |
" <li>Horsepower</li>\n", | |
" <li>City-mpg</li>\n", | |
" <li>Highway-mpg</li>\n", | |
" <li>Wheel-base</li>\n", | |
" <li>Bore</li>\n", | |
"</ul>\n", | |
" \n", | |
"Categorical variables:\n", | |
"<ul>\n", | |
" <li>Drive-wheels</li>\n", | |
"</ul>\n", | |
"\n", | |
"<p>As we now move into building machine learning models to automate our analysis, feeding the model with variables that meaningfully affect our target variable will improve our model's prediction performance.</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 © 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": { | |
"anaconda-cloud": {}, | |
"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