819 lines
106 KiB
Plaintext
819 lines
106 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<p style=\"text-align:center\">\n",
|
||
" <a href=\"https://skills.network\" target=\"_blank\">\n",
|
||
" <img src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/assets/logos/SN_web_lightmode.png\" width=\"200\" alt=\"Skills Network Logo\">\n",
|
||
" </a>\n",
|
||
"</p>\n",
|
||
"\n",
|
||
"\n",
|
||
"# Multiple Linear Regression\n",
|
||
"\n",
|
||
"\n",
|
||
"Estimated time needed: **15** minutes\n",
|
||
" \n",
|
||
"\n",
|
||
"## Objectives\n",
|
||
"\n",
|
||
"After completing this lab you will be able to:\n",
|
||
"\n",
|
||
"* Use scikit-learn to implement Multiple Linear Regression\n",
|
||
"* Create a model, train it, test it and use the model\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h1>Table of contents</h1>\n",
|
||
"\n",
|
||
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
|
||
" <ol>\n",
|
||
" <li><a href=\"#understanding-data\">Understanding the Data</a></li>\n",
|
||
" <li><a href=\"#reading_data\">Reading the Data in</a></li>\n",
|
||
" <li><a href=\"#multiple_regression_model\">Multiple Regression Model</a></li>\n",
|
||
" <li><a href=\"#prediction\">Prediction</a></li>\n",
|
||
" <li><a href=\"#practice\">Practice</a></li>\n",
|
||
" </ol>\n",
|
||
"</div>\n",
|
||
"<br>\n",
|
||
"<hr>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Importing Needed packages\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import pandas as pd\n",
|
||
"import pylab as pl\n",
|
||
"import numpy as np\n",
|
||
"%matplotlib inline"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Downloading Data\n",
|
||
"To download the data, we will use !wget to download it from IBM Object Storage.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"--2025-10-17 10:08:57-- https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%202/data/FuelConsumptionCo2.csv\n",
|
||
"Resolving cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud (cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud)... 169.63.118.104, 169.63.118.104\n",
|
||
"Connecting to cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud (cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud)|169.63.118.104|:443... connected.\n",
|
||
"HTTP request sent, awaiting response... 200 OK\n",
|
||
"Length: 72629 (71K) [text/csv]\n",
|
||
"Saving to: ‘FuelConsumption.csv’\n",
|
||
"\n",
|
||
"FuelConsumption.csv 100%[===================>] 70.93K --.-KB/s in 0.002s \n",
|
||
"\n",
|
||
"2025-10-17 10:08:57 (29.5 MB/s) - ‘FuelConsumption.csv’ saved [72629/72629]\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"!wget -O FuelConsumption.csv https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%202/data/FuelConsumptionCo2.csv"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"\n",
|
||
"<h2 id=\"understanding_data\">Understanding the Data</h2>\n",
|
||
"\n",
|
||
"### `FuelConsumption.csv`:\n",
|
||
"We have downloaded a fuel consumption dataset, **`FuelConsumption.csv`**, which contains model-specific fuel consumption ratings and estimated carbon dioxide emissions for new light-duty vehicles for retail sale in Canada. [Dataset source](http://open.canada.ca/data/en/dataset/98f1a129-f628-4ce4-b24d-6f16bf24dd64)\n",
|
||
"\n",
|
||
"- **MODELYEAR** e.g. 2014\n",
|
||
"- **MAKE** e.g. Acura\n",
|
||
"- **MODEL** e.g. ILX\n",
|
||
"- **VEHICLE CLASS** e.g. SUV\n",
|
||
"- **ENGINE SIZE** e.g. 4.7\n",
|
||
"- **CYLINDERS** e.g 6\n",
|
||
"- **TRANSMISSION** e.g. A6\n",
|
||
"- **FUELTYPE** e.g. z\n",
|
||
"- **FUEL CONSUMPTION in CITY(L/100 km)** e.g. 9.9\n",
|
||
"- **FUEL CONSUMPTION in HWY (L/100 km)** e.g. 8.9\n",
|
||
"- **FUEL CONSUMPTION COMB (L/100 km)** e.g. 9.2\n",
|
||
"- **CO2 EMISSIONS (g/km)** e.g. 182 --> low --> 0\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2 id=\"reading_data\">Reading the data in</h2>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"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>MODELYEAR</th>\n",
|
||
" <th>MAKE</th>\n",
|
||
" <th>MODEL</th>\n",
|
||
" <th>VEHICLECLASS</th>\n",
|
||
" <th>ENGINESIZE</th>\n",
|
||
" <th>CYLINDERS</th>\n",
|
||
" <th>TRANSMISSION</th>\n",
|
||
" <th>FUELTYPE</th>\n",
|
||
" <th>FUELCONSUMPTION_CITY</th>\n",
|
||
" <th>FUELCONSUMPTION_HWY</th>\n",
|
||
" <th>FUELCONSUMPTION_COMB</th>\n",
|
||
" <th>FUELCONSUMPTION_COMB_MPG</th>\n",
|
||
" <th>CO2EMISSIONS</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2014</td>\n",
|
||
" <td>ACURA</td>\n",
|
||
" <td>ILX</td>\n",
|
||
" <td>COMPACT</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>AS5</td>\n",
|
||
" <td>Z</td>\n",
|
||
" <td>9.9</td>\n",
|
||
" <td>6.7</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>196</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>2014</td>\n",
|
||
" <td>ACURA</td>\n",
|
||
" <td>ILX</td>\n",
|
||
" <td>COMPACT</td>\n",
|
||
" <td>2.4</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>M6</td>\n",
|
||
" <td>Z</td>\n",
|
||
" <td>11.2</td>\n",
|
||
" <td>7.7</td>\n",
|
||
" <td>9.6</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>221</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>2014</td>\n",
|
||
" <td>ACURA</td>\n",
|
||
" <td>ILX HYBRID</td>\n",
|
||
" <td>COMPACT</td>\n",
|
||
" <td>1.5</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>AV7</td>\n",
|
||
" <td>Z</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>5.8</td>\n",
|
||
" <td>5.9</td>\n",
|
||
" <td>48</td>\n",
|
||
" <td>136</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2014</td>\n",
|
||
" <td>ACURA</td>\n",
|
||
" <td>MDX 4WD</td>\n",
|
||
" <td>SUV - SMALL</td>\n",
|
||
" <td>3.5</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>AS6</td>\n",
|
||
" <td>Z</td>\n",
|
||
" <td>12.7</td>\n",
|
||
" <td>9.1</td>\n",
|
||
" <td>11.1</td>\n",
|
||
" <td>25</td>\n",
|
||
" <td>255</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>2014</td>\n",
|
||
" <td>ACURA</td>\n",
|
||
" <td>RDX AWD</td>\n",
|
||
" <td>SUV - SMALL</td>\n",
|
||
" <td>3.5</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>AS6</td>\n",
|
||
" <td>Z</td>\n",
|
||
" <td>12.1</td>\n",
|
||
" <td>8.7</td>\n",
|
||
" <td>10.6</td>\n",
|
||
" <td>27</td>\n",
|
||
" <td>244</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" MODELYEAR MAKE MODEL VEHICLECLASS ENGINESIZE CYLINDERS \\\n",
|
||
"0 2014 ACURA ILX COMPACT 2.0 4 \n",
|
||
"1 2014 ACURA ILX COMPACT 2.4 4 \n",
|
||
"2 2014 ACURA ILX HYBRID COMPACT 1.5 4 \n",
|
||
"3 2014 ACURA MDX 4WD SUV - SMALL 3.5 6 \n",
|
||
"4 2014 ACURA RDX AWD SUV - SMALL 3.5 6 \n",
|
||
"\n",
|
||
" TRANSMISSION FUELTYPE FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n",
|
||
"0 AS5 Z 9.9 6.7 \n",
|
||
"1 M6 Z 11.2 7.7 \n",
|
||
"2 AV7 Z 6.0 5.8 \n",
|
||
"3 AS6 Z 12.7 9.1 \n",
|
||
"4 AS6 Z 12.1 8.7 \n",
|
||
"\n",
|
||
" FUELCONSUMPTION_COMB FUELCONSUMPTION_COMB_MPG CO2EMISSIONS \n",
|
||
"0 8.5 33 196 \n",
|
||
"1 9.6 29 221 \n",
|
||
"2 5.9 48 136 \n",
|
||
"3 11.1 25 255 \n",
|
||
"4 10.6 27 244 "
|
||
]
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df = pd.read_csv(\"FuelConsumption.csv\")\n",
|
||
"\n",
|
||
"# take a look at the dataset\n",
|
||
"df.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's select some features that we want to use for regression.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"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>ENGINESIZE</th>\n",
|
||
" <th>CYLINDERS</th>\n",
|
||
" <th>FUELCONSUMPTION_CITY</th>\n",
|
||
" <th>FUELCONSUMPTION_HWY</th>\n",
|
||
" <th>FUELCONSUMPTION_COMB</th>\n",
|
||
" <th>CO2EMISSIONS</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>9.9</td>\n",
|
||
" <td>6.7</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>196</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>2.4</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>11.2</td>\n",
|
||
" <td>7.7</td>\n",
|
||
" <td>9.6</td>\n",
|
||
" <td>221</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>1.5</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>5.8</td>\n",
|
||
" <td>5.9</td>\n",
|
||
" <td>136</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>3.5</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>12.7</td>\n",
|
||
" <td>9.1</td>\n",
|
||
" <td>11.1</td>\n",
|
||
" <td>255</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>3.5</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>12.1</td>\n",
|
||
" <td>8.7</td>\n",
|
||
" <td>10.6</td>\n",
|
||
" <td>244</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>3.5</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>11.9</td>\n",
|
||
" <td>7.7</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" <td>230</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>3.5</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>11.8</td>\n",
|
||
" <td>8.1</td>\n",
|
||
" <td>10.1</td>\n",
|
||
" <td>232</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>3.7</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>12.8</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>11.1</td>\n",
|
||
" <td>255</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>3.7</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>13.4</td>\n",
|
||
" <td>9.5</td>\n",
|
||
" <td>11.6</td>\n",
|
||
" <td>267</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" ENGINESIZE CYLINDERS FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n",
|
||
"0 2.0 4 9.9 6.7 \n",
|
||
"1 2.4 4 11.2 7.7 \n",
|
||
"2 1.5 4 6.0 5.8 \n",
|
||
"3 3.5 6 12.7 9.1 \n",
|
||
"4 3.5 6 12.1 8.7 \n",
|
||
"5 3.5 6 11.9 7.7 \n",
|
||
"6 3.5 6 11.8 8.1 \n",
|
||
"7 3.7 6 12.8 9.0 \n",
|
||
"8 3.7 6 13.4 9.5 \n",
|
||
"\n",
|
||
" FUELCONSUMPTION_COMB CO2EMISSIONS \n",
|
||
"0 8.5 196 \n",
|
||
"1 9.6 221 \n",
|
||
"2 5.9 136 \n",
|
||
"3 11.1 255 \n",
|
||
"4 10.6 244 \n",
|
||
"5 10.0 230 \n",
|
||
"6 10.1 232 \n",
|
||
"7 11.1 255 \n",
|
||
"8 11.6 267 "
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"cdf = df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY','FUELCONSUMPTION_COMB','CO2EMISSIONS']]\n",
|
||
"cdf.head(9)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's plot Emission values with respect to Engine size:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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2Lx5s/OxlpYWbNu2DYMGDQIA9O/fHzExMW5jampqsHfvXucYIiIiatvaW3nypqYmfPHFF86vq6qqsHv3bqSkpKBHjx4oLCzEokWLkJ2djezsbCxatAgJCQm49dZbAQDJycmYMmUKZs+ejdTUVKSkpGDOnDnIzc3FiBEjrHpbREREFEYsDXZ27dqFYcOGOb+eNWsWAGDSpElYuXIl5s2bhxMnTmDq1Kk4cuQILrvsMrzzzjtISkpyvqa4uBjt27fHxIkTceLECQwfPhwrV66EnVuQiIiICGFUZ8dK0VZnh4iIqC2I+Do7REREREZgsENERERRzdKcnXChXsmLtkrKRERE0Uz93A6UkcNgB3A2FmUlZSIiosjT2NiI5ORkn88zQRnAmTNn8O233yIpKSlgdWYtGhoakJWVhYMHD7aZxGe+Z77naMX3zPccrSL5PSuKgsbGRmRkZKBdO9+ZOVzZAdCuXTtkZmaadvy2WKWZ77lt4HtuG/ie24ZIfc/+VnRUTFAmIiKiqMZgh4iIiKIagx0TxcXF4aGHHkJcXJzVUwkZvue2ge+5beB7bhvawntmgjIRERFFNa7sEBERUVRjsENERERRjcEOERERRTUGO0RERBTVGOyY5P3338fYsWORkZEBm82G9evXWz0lUy1evBgDBgxAUlISunXrhvHjx+Ozzz6zelqmWr58OS6++GJnIa6BAwfirbfesnpaIbN48WLYbDYUFhZaPRVTLViwADabze2Wnp5u9bRMV11djdtvvx2pqalISEjAL37xC1RWVlo9LdP06tWr1c/ZZrNh2rRpVk/NNKdPn8Yf//hH9O7dG/Hx8TjvvPPw5z//GWfOnLF6aoZjBWWTHDt2DD//+c9x55134vrrr7d6Oqbbtm0bpk2bhgEDBuD06dN44IEHMGrUKHz66adITEy0enqmyMzMxKOPPorzzz8fALBq1Srk5eXhX//6F/r162fx7MxVUVGB5557DhdffLHVUwmJfv36YcuWLc6v7Xa7hbMx35EjR3DFFVdg2LBheOutt9CtWzccOHAA55xzjtVTM01FRQUcDofz671792LkyJG48cYbLZyVuR577DE888wzWLVqFfr164ddu3bhzjvvRHJyMmbMmGH19AzFYMcko0ePxujRo62eRshs2rTJ7esVK1agW7duqKysxFVXXWXRrMw1duxYt68feeQRLF++HB9++GFUBztNTU247bbb8Le//Q0LFy60ejoh0b59+zaxmqN67LHHkJWVhRUrVjgf69Wrl3UTCoGuXbu6ff3oo4+iT58+GDJkiEUzMt8HH3yAvLw8XHfddQDEz/jll1/Grl27LJ6Z8XgZi0xRX18PAEhJSbF4JqHhcDhQWlqKY8eOYeDAgVZPx1TTpk3DddddhxEjRlg9lZDZv38/MjIy0Lt3b9x888348ssvrZ6SqTZu3IhLL70UN954I7p164ZLLrkEf/vb36yeVsi0tLRgzZo1uOuuuwxtDh1urrzySrz77rv4/PPPAQD//ve/sWPHDvz617+2eGbG48oOGU5RFMyaNQtXXnklcnJyrJ6Oqfbs2YOBAwfi5MmT6NixI9atW4ef/exnVk/LNKWlpfj4449RUVFh9VRC5rLLLsOLL76Ivn374rvvvsPChQsxaNAg7Nu3D6mpqVZPzxRffvklli9fjlmzZuH+++/HRx99hHvvvRdxcXG44447rJ6e6davX4+jR49i8uTJVk/FVPfddx/q6+tx4YUXwm63w+Fw4JFHHsEtt9xi9dQMx2CHDDd9+nR88skn2LFjh9VTMd0FF1yA3bt34+jRo1i7di0mTZqEbdu2RWXAc/DgQcyYMQPvvPMOOnToYPV0Qsb1cnRubi4GDhyIPn36YNWqVZg1a5aFMzPPmTNncOmll2LRokUAgEsuuQT79u3D8uXL20Sw88ILL2D06NHIyMiweiqmeuWVV7BmzRqUlJSgX79+2L17NwoLC5GRkYFJkyZZPT1DMdghQxUUFGDjxo14//33kZmZafV0TBcbG+tMUL700ktRUVGBp556Cs8++6zFMzNeZWUl6urq0L9/f+djDocD77//PpYtW4bm5uaoT9wFgMTEROTm5mL//v1WT8U03bt3bxWwX3TRRVi7dq1FMwqdr7/+Glu2bEFZWZnVUzHd3Llz8Yc//AE333wzABHMf/3111i8eDGDHSJvFEVBQUEB1q1bh/LycvTu3dvqKVlCURQ0NzdbPQ1TDB8+HHv27HF77M4778SFF16I++67r00EOgDQ3NyM//znPxg8eLDVUzHNFVdc0ap0xOeff46ePXtaNKPQUTdXqEm70ez48eNo1849dddut3PrOclramrCF1984fy6qqoKu3fvRkpKCnr06GHhzMwxbdo0lJSUYMOGDUhKSkJtbS0AIDk5GfHx8RbPzhz3338/Ro8ejaysLDQ2NqK0tBTl5eWtdqZFi6SkpFY5WImJiUhNTY3q3Kw5c+Zg7Nix6NGjB+rq6rBw4UI0NDRE3V++rmbOnIlBgwZh0aJFmDhxIj766CM899xzeO6556yemqnOnDmDFStWYNKkSWjfPvo/HseOHYtHHnkEPXr0QL9+/fCvf/0LS5YswV133WX11IynkCm2bt2qAGh1mzRpktVTM4W39wpAWbFihdVTM81dd92l9OzZU4mNjVW6du2qDB8+XHnnnXesnlZIDRkyRJkxY4bV0zDVTTfdpHTv3l2JiYlRMjIylPz8fGXfvn1WT8t0r732mpKTk6PExcUpF154ofLcc89ZPSXTvf322woA5bPPPrN6KiHR0NCgzJgxQ+nRo4fSoUMH5bzzzlMeeOABpbm52eqpGc6mKIpiTZhFREREZD7W2SEiIqKoxmCHiIiIohqDHSIiIopqDHaIiIgoqjHYISIioqjGYIeIiIiiGoMdIiIiimoMdoiIiCiqMdghooizcuVKnHPOOZbOYejQoSgsLLR0DkQkhxWUicgwkydPxqpVq1o9fs011xjaM+zEiRNobGxEt27dDDumVj/++CNiYmKQlJRk2RyISE70dzojopC69tprsWLFCrfH4uLiDD1HfHy85Q1mU1JSLD0/EcnjZSwiMlRcXBzS09Pdbp07d3Y+b7PZ8Pzzz2PChAlISEhAdnY2Nm7c6HaMjRs3Ijs7G/Hx8Rg2bBhWrVoFm82Go0ePAmh9GWvBggX4xS9+gdWrV6NXr15ITk7GzTffjMbGRucYRVFQVFSE8847D/Hx8fj5z3+OV1991e97efrpp5GdnY0OHTogLS0NN9xwg/M518tY5eXlsNlsrW6TJ092jn/ttdfQv39/dOjQAeeddx4efvhhnD59WuN3l4j0YLBDRCH38MMPY+LEifjkk0/w61//Grfddht+/PFHAMBXX32FG264AePHj8fu3btxzz334IEHHgh4zAMHDmD9+vV4/fXX8frrr2Pbtm149NFHnc//8Y9/xIoVK7B8+XLs27cPM2fOxO23345t27Z5Pd6uXbtw77334s9//jM+++wzbNq0CVdddZXXsYMGDUJNTY3z9t5776FDhw7O8W+//TZuv/123Hvvvfj000/x7LPPYuXKlXjkkUe0fuuISA9Le64TUVSZNGmSYrfblcTERLfbn//8Z+cYAMof//hH59dNTU2KzWZT3nrrLUVRFOW+++5TcnJy3I77wAMPKACUI0eOKIqiKCtWrFCSk5Odzz/00ENKQkKC0tDQ4Hxs7ty5ymWXXeY8R4cOHZSdO3e6HXfKlCnKLbfc4vW9rF27VunUqZPbMV0NGTJEmTFjRqvHf/jhB6VPnz7K1KlTnY8NHjxYWbRokdu41atXK927d/d6bCIyFnN2iMhQw4YNw/Lly90e88xvufjii53/TkxMRFJSEurq6gAAn332GQYMGOA2/le/+lXA8/bq1cstWbh79+7OY3766ac4efIkRo4c6faalpYWXHLJJV6PN3LkSPTs2RPnnXcerr32Wlx77bXOS2++nDp1Ctdffz169OiBp556yvl4ZWUlKioq3FZyHA4HTp48iePHj/s9JhEFj8EOERkqMTER559/vt8xMTExbl/bbDacOXMGgMitsdlsbs8rEptG/R1TvX/jjTdw7rnnuo3zlTydlJSEjz/+GOXl5XjnnXfw4IMPYsGCBaioqPC57f33v/89vvnmG1RUVKB9+7P/ez1z5gwefvhh5Ofnt3pNhw4dAr43IgoOgx0iCisXXngh3nzzTbfHdu3aFdQxf/aznyEuLg7ffPMNhgwZIv269u3bY8SIERgxYgQeeughnHPOOXjvvfe8Bi1LlizBK6+8gg8++ACpqaluz/3yl7/EZ599FjAIJCJzMNghIkM1NzejtrbW7bH27dujS5cuUq+/5557sGTJEtx3332YMmUKdu/ejZUrVwJAqxUfWUlJSZgzZw5mzpyJM2fO4Morr0RDQwN27tyJjh07YtKkSa1e8/rrr+PLL7/EVVddhc6dO+PNN9/EmTNncMEFF7Qau2XLFsybNw9//etf0aVLF+f7j4+PR3JyMh588EGMGTMGWVlZuPHGG9GuXTt88skn2LNnDxYuXKjrPRGRPO7GIiJDbdq0Cd27d3e7XXnlldKv7927N1599VWUlZXh4osvxvLly527sYKp1/Pf//3fePDBB7F48WJcdNFFuOaaa/Daa6+hd+/eXsefc845KCsrw9VXX42LLroIzzzzDF5++WX069ev1dgdO3bA4XDgd7/7ndv7njFjBgBRVPH111/H5s2bMWDAAFx++eVYsmQJevbsqfv9EJE8VlAmorD3yCOP4JlnnsHBgwetngoRRSBexiKisPP0009jwIABSE1NxT/+8Q88/vjjmD59utXTIqIIxWCHiMLO/v37sXDhQvz444/o0aMHZs+ejfnz51s9LSKKULyMRURERFGNCcpEREQU1RjsEBERUVRjsENERERRjcEOERERRTUGO0RERBTVGOwQERFRVGOwQ0RERFGNwQ4RERFFtf8PvJlBIb+scX0AAAAASUVORK5CYII=\n",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.scatter(cdf.ENGINESIZE, cdf.CO2EMISSIONS, color='blue')\n",
|
||
"plt.xlabel(\"Engine size\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Creating train and test dataset\n",
|
||
"Train/Test Split involves splitting the dataset into training and testing sets respectively, which are mutually exclusive. After which, you train with the training set and test with the testing set. \n",
|
||
"This will provide a more accurate evaluation on out-of-sample accuracy because the testing dataset is not part of the dataset that have been used to train the model. Therefore, it gives us a better understanding of how well our model generalizes on new data.\n",
|
||
"\n",
|
||
"We know the outcome of each data point in the testing dataset, making it great to test with! Since this data has not been used to train the model, the model has no knowledge of the outcome of these data points. So, in essence, it is truly an out-of-sample testing.\n",
|
||
"\n",
|
||
"Let's split our dataset into train and test sets. Around 80% of the entire dataset will be used for training and 20% for testing. We create a mask to select random rows using the __np.random.rand()__ function: \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"msk = np.random.rand(len(df)) < 0.8\n",
|
||
"train = cdf[msk]\n",
|
||
"test = cdf[~msk]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Train data distribution\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABwSUlEQVR4nO3deXxU5dk//s8wJCGEECBAQkxYVNBKwCrgglKgLIoCwWhR3KClVR+WElar9rHYr4KNlugjBbW1qGCMz08ColZkMaCI1hikAj4vizTUsIRQhIRImMDk/v1xeyYzk1nuc+bMnJnJ5/16zWvIzDXnnEmic+VerssmhBAgIiIiilNtrL4AIiIionBiskNERERxjckOERERxTUmO0RERBTXmOwQERFRXGOyQ0RERHGNyQ4RERHFtbZWX0A0aGpqwpEjR5CamgqbzWb15RAREZECIQROnz6NrKwstGnjf/yGyQ6AI0eOICcnx+rLICIiIgOqqqqQnZ3t93kmOwBSU1MByG9Wx44dLb4aIiIiUlFXV4ecnBzX57g/THYA19RVx44dmewQERHFmGBLUCxdoLx48WLYbDaPW2Zmput5IQQWL16MrKwsJCcnY8SIEdi3b5/HMRwOB2bPno2uXbsiJSUFEydOxKFDhyL9VoiIiChKWb4bq3///jh69KjrtmfPHtdzhYWFWLZsGZYvX47y8nJkZmZizJgxOH36tCumoKAA69atQ0lJCXbs2IH6+nqMHz8eTqfTirdDREREUcbyaay2bdt6jOZohBB45pln8MgjjyA/Px8A8MorryAjIwPFxcW4//77UVtbi5deegmrV6/G6NGjAQBr1qxBTk4OtmzZghtuuMHnOR0OBxwOh+vrurq6MLwzIiIiigaWj+zs378fWVlZ6NOnD+644w7861//AgBUVlaiuroaY8eOdcUmJSVh+PDh2LlzJwCgoqIC586d84jJyspCbm6uK8aXpUuXIi0tzXXjTiwiIqL4ZWmyc/XVV+PVV1/F+++/jz//+c+orq7G0KFDceLECVRXVwMAMjIyPF6TkZHheq66uhqJiYno3Lmz3xhfHnroIdTW1rpuVVVVJr8zIiIiihaWTmONGzfO9e8BAwbg2muvxUUXXYRXXnkF11xzDYCWK6yFEEFXXQeLSUpKQlJSUghXTkRERLHC8mksdykpKRgwYAD279/vWsfjPUJTU1PjGu3JzMxEY2MjTp486TeGiIiIWreoSnYcDgf+7//+Dz169ECfPn2QmZmJzZs3u55vbGzE9u3bMXToUADAoEGDkJCQ4BFz9OhR7N271xVDRERErZul01gLFizAhAkT0LNnT9TU1ODxxx9HXV0dpk6dCpvNhoKCAixZsgR9+/ZF3759sWTJErRv3x533nknACAtLQ3Tp0/H/PnzkZ6eji5dumDBggUYMGCAa3cWERERtW6WJjuHDh3ClClT8J///AfdunXDNddcg08//RS9evUCACxatAgNDQ2YMWMGTp48iauvvhqbNm3yKAtdVFSEtm3bYvLkyWhoaMCoUaPw8ssvw263W/W2iIgoCjidwEcfAUePAj16AMOGAfxoaJ1sQghh9UVYra6uDmlpaaitrWW7CCKiOFBaCsyZA7gX1M/OBp59FvihdBvFAdXP76has0NERBSq0lLgtts8Ex0AOHxYPl5aas11kXWY7BARUdxwOuWIjq85C+2xggIZR60Hkx0iIoobH33UckTHnRBAVZWMo9aDyQ4REcWNo0fNjaP4wGSHiIjiRo8e5sZRfGCyQ0REcWPYMLnryl/HIJsNyMmRcdR6MNkhIqK4YbfL7eVAy4RH+/qZZ1hvp7VhskNERHElPx94803gggs8H8/Olo+zzk7rY2kFZSIionDIzwfy8lhBmSQmO0REFJfsdmDECKuvgqIBp7GIiIgorjHZISIiorjGZIeIiIjiGpMdIiIiimtMdoiIiCiuMdkhIiKiuMZkh4iIiOIakx0iIiKKa0x2iIiIKK4x2SEiIqK4xmSHiIiI4hqTHSIiIoprTHaIiIgorjHZISIiorjGZIeIiIjiGpMdIiIiimtMdoiIiCiuMdkhIiKiuMZkh4iIiOIakx0iIiKKa0x2iIiIKK4x2SEiIqK4xmSHiIiI4lrUJDtLly6FzWZDQUGB67Fp06bBZrN53K655hqP1zkcDsyePRtdu3ZFSkoKJk6ciEOHDkX46omIiChaRUWyU15ejhdffBEDBw5s8dyNN96Io0ePum5/+9vfPJ4vKCjAunXrUFJSgh07dqC+vh7jx4+H0+mM1OUTERFRFLM82amvr8ddd92FP//5z+jcuXOL55OSkpCZmem6denSxfVcbW0tXnrpJfzxj3/E6NGjccUVV2DNmjXYs2cPtmzZEsm3QURERFHK8mRn5syZuPnmmzF69Gifz2/btg3du3dHv3798Ktf/Qo1NTWu5yoqKnDu3DmMHTvW9VhWVhZyc3Oxc+dOv+d0OByoq6vzuBEREVF8amvlyUtKSrBr1y6Ul5f7fH7cuHH42c9+hl69eqGyshL//d//jZ/+9KeoqKhAUlISqqurkZiY2GJEKCMjA9XV1X7Pu3TpUjz22GOmvhciIiKKTpYlO1VVVZgzZw42bdqEdu3a+Yy5/fbbXf/Ozc3F4MGD0atXL7z77rvIz8/3e2whBGw2m9/nH3roIcybN8/1dV1dHXJycgy8CyIiIop2liU7FRUVqKmpwaBBg1yPOZ1OfPjhh1i+fDkcDgfsdrvHa3r06IFevXph//79AIDMzEw0Njbi5MmTHqM7NTU1GDp0qN9zJyUlISkpyeR3RERERNHIsjU7o0aNwp49e7B7927XbfDgwbjrrruwe/fuFokOAJw4cQJVVVXo0aMHAGDQoEFISEjA5s2bXTFHjx7F3r17AyY7RERE1HpYNrKTmpqK3Nxcj8dSUlKQnp6O3Nxc1NfXY/Hixbj11lvRo0cPHDx4EA8//DC6du2KW265BQCQlpaG6dOnY/78+UhPT0eXLl2wYMECDBgwwO+CZyIiImpdLF2gHIjdbseePXvw6quv4tSpU+jRowdGjhyJN954A6mpqa64oqIitG3bFpMnT0ZDQwNGjRqFl19+2efIEBEREbU+NiGEsPoirFZXV4e0tDTU1taiY8eOVl8OERERKVD9/La8zg4RERFROEXtNBYREVmnsRFYsQI4cAC46CJgxgwgMdHqqyIyhskOERF5WLQIWLYMcG8xuGABMG8eUFho3XURGcVkh4iIXBYtAp56quXjTmfz40x4KNZwgTK4QJmICJBTV+3be47oeLPbgTNnOKVF0YELlImISJcVKwInOoB8fsWKyFwPkVmY7BAREQC5GNnMOKJowWSHiIgAAD17mhtHFC2Y7BAREVFcY7JDREQAgG+/NTeOKFow2SEiIgCyeKCZcUTRglvPwa3nREQAt55T7OHWcyIi0iUxUVZJDmTePCY6FHtYQZmIKAo4ncBHHwFHjwI9egDDhslRlEjTqiN7t4uw29kugmIXp7HAaSwislZpKTBnDnDoUPNj2dnAs88C+fnWXBMbgVIsUP38ZrIDJjtErU20jKIAMtG57TbA+//ENpu8f+MNoFu36LhWomij+vnNaSwialWiaRTF6ZTX4utPTu2xKVM8p5OsHvEhikVcoExErYY2iuKe6ADA4cPy8dLSyF7PRx+1vBZv3jujrLpWoljGZIeIWgWVUZSCguCNMM109Kj+11h1rUSxjMkOEbUKwUZRhACqqmRcpPToYex1VlwrUSzjmh0iahVUR1GMjLYYNWyYXINz+LDvEadgInmtwUTTom8ibxzZIaJWQXUUxehoixF2u1xsDDTvvtIjnNfa2Ag88wwwe7a8b2z0H1taCvTuDYwcCdx5p7zv3Zvriih6cOs5uPWcqDVwOoFOnYD6ev8xqanAyZORH5HwtUPMbve/JsdmkyNClZXhudZFi4A//hFoamp+rE0bYP78lkUFg22df/NN7hyj8GGdHR2Y7BDFv8ZGIDnZ8wPcW5s2QEODNcXzvKeB/vMfYPJk+Zz7/6XDnUQsWgQ89ZT/5xcubE54nE45guNvLVS4kzIi9sYiInKzYkXgRAeQz69YEfq59EwBaex2YMQIWVdnxAg5WvLmm8AFF3jGZWeHL9FpbASefjpwzNNPN7+faFz0TeQLFygTUatw4IC5cf4sWtSyr9SCBcb6SuXnA3l5kVv4++yzwRdKCyHjFi6MzkXfRL5wZIeIwsrIKEc4XHSRuXG+aFNA3mttnE75+KJFxo8dCW+9pS8uGhd9E/nCNTvgmh2icPE1ymFV9+zGRqB9+8CF+Ox24MwZY2t2wnH8SLe2uP564OOPg8dddx2wY0fzmh1/W+e5ZofCjWt2iMhS0TbKkZgok6xA5s0zvjh5xYrgFY2dTvU1QVa0tsjL0xcXaOu89vUzzzDRIesx2SEi0zU2yhGdQJYti/yUVmGhXGvi/eFrt3vuMjLCzDVBVrW2mDMneL0fm03GafLzI7+QmkgvJjtEZDqzRznMVFgop5KKioBZs+T9mTOhT6uZuSbIql1OiYlyMXUgCxa0HP3Kz5dJnPv39JtvmOhQ9OBuLCIyXaR2PhmVmChHRsw0Y4ZMBIKt2ZkxI/ixrNzlpCV9Tz/tObLkr6gg4Htt0R//GL61RUR6cWSHiEwXiZ1P0cbMNUFW73IqLATOnvUcqWlo8J/oRHptEZFe3I0F7sYiMlu4dz5Fs0mTfG/hzssD1q9XO0as7HJiBWWyWsztxlq6dClsNhsK3MaWhRBYvHgxsrKykJycjBEjRmDfvn0er3M4HJg9eza6du2KlJQUTJw4EYcCTXYTUdiFe+dTtCotBTZsaPm4zSYfVx3lUNnl9Mc/yjU7r78ObNtm/mJlFaygTLEiKpKd8vJyvPjiixg4cKDH44WFhVi2bBmWL1+O8vJyZGZmYsyYMTh9+rQrpqCgAOvWrUNJSQl27NiB+vp6jB8/Hk4r/ssnIpdw7nyKRmbvoAq0y0mryGx1l3FWUKaYISx2+vRp0bdvX7F582YxfPhwMWfOHCGEEE1NTSIzM1M8+eSTrtizZ8+KtLQ08fzzzwshhDh16pRISEgQJSUlrpjDhw+LNm3aiI0bN/o959mzZ0Vtba3rVlVVJQCI2tra8LxJolbM4RCiqEiIWbPkvcNh9RWFR1mZEDKtCXwrK9N33PPn5WuKi+X9//f/CWGztTyuzSZva9ea/978Cdd7JlJVW1ur9Plt+cjOzJkzcfPNN2P06NEej1dWVqK6uhpjx451PZaUlIThw4dj586dAICKigqcO3fOIyYrKwu5ubmuGF+WLl2KtLQ01y0nJ8fkd0VEGm3n03PPyft4m7rShGuUw71B6LBhwNy5ka+/48+wYXKkyV9tHpsNyMmRcURWsjTZKSkpwa5du7B06dIWz1VXVwMAMjIyPB7PyMhwPVddXY3ExER07tzZb4wvDz30EGpra123qqqqUN8KEbVykdhBFW1rZKKlgnK09F+j6GVZslNVVYU5c+ZgzZo1aNeund84m9d/QUKIFo95CxaTlJSEjh07etyIiEIRiVGOaFwjY3UF5UWL5M6/uXOB5cvlffv20d90lSLLsmSnoqICNTU1GDRoENq2bYu2bdti+/bt+J//+R+0bdvWNaLjPUJTU1Pjei4zMxONjY04efKk3xgiokiIxCiH1fV3/MnPBw4eBMrKgOJieV9ZGZlEJ5r6r1H0sizZGTVqFPbs2YPdu3e7boMHD8Zdd92F3bt348ILL0RmZiY2b97sek1jYyO2b9+OoUOHAgAGDRqEhIQEj5ijR49i7969rhgiokgJ9yhHNK+RcV9bNGJEZKauorH/GkUny9pFpKamIjc31+OxlJQUpKenux4vKCjAkiVL0LdvX/Tt2xdLlixB+/btceeddwIA0tLSMH36dMyfPx/p6eno0qULFixYgAEDBrRY8ExEFAn5+bKA4EcfyemkHj1k8mHGh782enTbbTKxcV+o3Nq6jOvpv2Z2axBS19gofwYHDsiK6TNmWLNJIap7Yy1atAgNDQ2YMWMGTp48iauvvhqbNm1CamqqK6aoqAht27bF5MmT0dDQgFGjRuHll1+GvTX8105EUUkb5QgHbfTIuxdVdrZMdFpLL6po779Gchpx2TLPpFSrERXpOltsFwG2iyCi2ON0hmf0KFY884xcjBxMURFHdqygrafyx6zCoqqf30x2wGSHKNa19g/+1qg191+LdpH82cRcbywiIiNKS2WrBKtbJ1Bktdb+a7FAz3qqSGGyQ0Qxq7RULtb1LrR3+LB8nAlPfGtt/ddiRTSup2KyQ0QxyezGm1ZzOmX3ciu7mIeivh645RZg4EB5X18fmfMWFsrpkKIiYNYseX/mDBMdK110kblxZuCaHXDNDlEs2rZNTlkFU1YWvp1RZikt9b276tlnY2N31VVXAeXlLR8fMgT47LPIXw9Zi2t2iIhMEo2tE4I5fhzo0wfo0EHeHz9ufCrO30iQWSNEqv2m/CU6gHz8qquMnZ9iVzSup4rqOjtERP5Ea+sEfzp1Amprm7/+/nuge/eWxQE1QsjnCgpkkUL3dSn+RoKmTJFJTqgjRKr1Uerr/Sc6mvJyGdehg/r5KfZpvyfev0d2O+vsWIbTWESxx+mUu64OH/adLNhs8oO+stL6bejeiY5e7lNx2kiQ6v+5tcrKqu0q9NRHueUWYP364MecNAlYty54HMWfcFdQZp0dHZjsEMUm7YMf8N06IRJdt4M5flyO4ISiuFiO2mgJnveUVzCqiZ/etRYDBgB79wY/f24usGePvmsmUsE1O0QU98LdeNMMZqxZ0abiPvpIf6IDyESwqkq+PhC99VHS0tTOrxpHFC5cs0NEMS2cjTfNcPy48ddqIzJaF/NQF1sHe73e+ijTpwMffxw8fvp0teMShQtHdoiIwqhbN2Ov89XFPNTF1sFer7c+Sna2WrxqHFG4MNkhopgW7e0iVOvMZGR4fu1rKm7YMPm4lgjpkZPTPELkz4wZwUfE7HYZB6ivw+F6HbIakx0iilmx0C6iW7fga1bS0uQ1l5XJxchlZXIxsfeaI7tdbiMH9Cc8d9wRPJHRWx+lslLt3KpxROHCZIeIoo5KYbxYahdx6pT/hCctTT5vt8vt5VOmyHt/iYm/RdnBEpmSErXvhZ5+U9HYFoDIF249B7eeE0UT1dYJsdgu4vhxuTvr+HE54vPZZ8bX9DidzYuyjx0D5s4N/ho93wuV+iiRbAtA5Ivq5zd3YxFR1PBXME+blnJfwxKL7SK6dfM/peOevKjsKNNGggA5AqZCz/ciMVGOjAWLmTcvcBFCM9sChLtAHcUvTmMRUVTQOy0Va+0iAP/9pkJdZG3l90Kb9mrj9Wnia9orFIsWyVGkuXOB5cvlffv28nGiYJjsEFFUCFYwz7sw3rBhQHp64GOmpwffgRQp/j6sJ00KfZF1sF1aNpvabiyjrrmmZSKVmSkfN4PWwsJ7uszplI8z4aFgmOwQUVSIxWkpVYE+rN96K/RF1oF2afmq12Mmberx8GHPx48cMWdHXGOjbCYZyLJl/ruyEwFMdogoSuidivnoI+DEicCxJ04Eb5EQbiof1v5oo1nPPRd4ZxpgTeuMSOyI09vCgsgXLlAmoqigTcUE62Kut3WC1SNBKh/WwbjvtPK1M00T6dYZeqYeje6I09vCgsgXJjtEFBW0qZjbbpOJja8u5kZaJ1i9QNnsD2FfO9Pcue/SCjfVRHLrVuPJF2v5kBk4jUVEUUPPVIzVi3JVmf0hHE0FE1UTyccfN97KQ28LCyJfWFQQLCpIFG1Ua85oi2MB3yNBb7wha9tY2Q29thbo1Ck8xy4qkj21QnlvDQ1yi/j+/UDfvnIhdXKy2mudTvne6uvVz6f9bPSsI9IWePtj5hZ3ii2qn99MdsBkhyiW+aq4nJMje0G9/nrwSszhNmsW8Kc/hf88Rt7bpElyN5i3vDxg/frgr29slIlRU5P6OYHm9VeVleoJWqjXSvGJyY4OTHaIYpv3SNB//gNMntxyobORUYVQ3XADsGlT+M+jdzTLX/KgmTAB+OlPA1crfuYZtTYV/qi2r/BXWduKnydFFyY7OjDZIYofTqdcF+Jvl5CRUYVQRGpkR2O3e67l8TXi09AgCxrqPe68eZ7TRbNnywKJRhUXy8angUTbz5Oii+rnNxcoE1Fc0VuJWYVKF3Z37m0hevZUP48ZvK/NVyXmhQuNHde7WnGoi69VFjiH4+dJrQ+THSKKK2bX39Hbt8q7LcSDD6qdJ1yEkDf33Vv79xs/nnu1YpWdUr7o2SkXK/WUKLox2SGiuGJm/R1trYhq3yp/bSECadfO//Z5M7mPfvTta/w47tWKExOBK6/U93q97StipZ4SRTcmO0QUV4YOVavLMnRo4Bi9rRBU20I88AAwdiwwcyZw5gzw2mvy8UgkPFr/qkDbuFVohRIbG4Fdu/S9Vm/7ilipp0TRjckOEcWVnTvVeint3Bk4Ru9aEdW2EJdcArz/vpziSk72X0gxHI4fl/fJyXLLtlHaWh3V9zxzplyMXFYmFxLr2TllZZNTih+WJjsrV67EwIED0bFjR3Ts2BHXXnst3nvvPdfz06ZNg81m87hdc801HsdwOByYPXs2unbtipSUFEycOBGHAv0fiojimllrPPQeJ5QeTvn5wMGDMhkoLga2bAk8mgEY+3Dv1q353+vXG0t43KsVq679EULuuhoxwth1W9HklOKLpb2xsrOz8eSTT+Liiy8GALzyyivIy8vDF198gf79+wMAbrzxRqxatcr1mkSvQg8FBQV4++23UVJSgvT0dMyfPx/jx49HRUUF7Ez1iaJaY6McHQhUy0WFe52dY8fUXhNsjYfetSKh9nDy7mkVrE/Y668319M5dkyt3o13srB+fcsKygkJcqTEn3nzmn9GqlNvZkzRRbrJKcUZEWU6d+4s/vKXvwghhJg6darIy8vzG3vq1CmRkJAgSkpKXI8dPnxYtGnTRmzcuFH5nLW1tQKAqK2tNXzdRKTPwoVC2O3aXiF5s9vl43qsXStEdrbncYLd7HYhHI7Axz1/Pvhxc3JknBDyeN7vR895HQ4hioqEmDVL3jscvt9bTo58PJRrDUb1Z/Pqq2rf71dfVTsvkV6qn99Rs2bH6XSipKQE33//Pa699lrX49u2bUP37t3Rr18//OpXv0JNTY3ruYqKCpw7dw5jx451PZaVlYXc3FzsDDAh73A4UFdX53Ejosjxt2vJVy2XQPztlgpGZc2O3Q4MGhQ45sorm0cWEhPlqEcg7qMi7ry3q8+dK7/+9FPP6S33NS/utX8++kj2yQq0iFfPupbCQrl4uqhIFkUsKpJfe/efyslRO55qHFHYRCj58uvLL78UKSkpwm63i7S0NPHuu++6nispKRHvvPOO2LNnj9iwYYO4/PLLRf/+/cXZs2eFEEK89tprIjExscUxx4wZI+677z6/5/zd734nALS4cWSHKPxCHQHRqIxmBLqtWROe6ww0KnL6tBCTJgkxYIC8P31aPh7oHL5GunyN+GRny1iVkSCzmPWzJDJKdWTH8mTH4XCI/fv3i/LycvGb3/xGdO3aVezbt89n7JEjR0RCQoJY+8N/uf6SndGjR4v777/f7znPnj0ramtrXbeqqiomO0QRUlSklowUFQU+TlmZ8URH5fihXKevKakhQ4xdp3eysHatEDZbyzibTd7+93/l96a4WN6rTl0ZofozKCsL3zVQ66aa7Fi6QBmQC461BcqDBw9GeXk5nn32WbzwwgstYnv06IFevXph/w9bADIzM9HY2IiTJ0+ic+fOrriamhoMDVBEIykpCUlJSSa/EyJSEcquJXehVsx135nki+pOI19xiYmyBo/mqquA8nLlS/OgFfHTavoEqv1jswHz50euTxSrG1OsiJo1OxohBBwOh8/nTpw4gaqqKvT4YfvDoEGDkJCQgM2bN7tijh49ir179wZMdojIOqHuWtKEWjE3WF0bs3Ya1dcbT3Q0WuKnWvvnuefU+3iFgtWNKVZYOrLz8MMPY9y4ccjJycHp06dRUlKCbdu2YePGjaivr8fixYtx6623okePHjh48CAefvhhdO3aFbfccgsAIC0tDdOnT8f8+fORnp6OLl26YMGCBRgwYABGjx5t5VsjIj9mzAAWLAj8Iexey8UfrbLu4cO+RzoCUam4O2SI2rGCxd1zj9pxAtESP9UREvdt6L66nptF+xkESsBY3ZiigaUjO8eOHcM999yDSy65BKNGjcLf//53bNy4EWPGjIHdbseePXuQl5eHfv36YerUqejXrx8++eQTpKamuo5RVFSESZMmYfLkybjuuuvQvn17vP3226yxQxSlVHYtzZoF3H47MHAgcMstcnTEW6DKuoGo7kxy2/gZUpzqtJ0/7omfkRESf328zGC3B7+mzEzWwiHr2YTQ+zdR/Kmrq0NaWhpqa2vRsWNHqy+HqFVYtEj2knIf4bHbga5dfRcGHDIE+Oyzlo+Xlsp1LO6jCzk58kPW1/RRXp4sphfM3Xc3960K5K67gDVr/D9/yy1q5/Nn4cLmLd9Op+y4rnc0y2aTIzBmr+VpaJBb5IM5c0a2qCAym+rnd9St2SGi+NLYKEdSZs+W942N8nFftVx+/GP/FZDLy+VCX2/erRbKyoDJk/2vk3nrLbU6Pt9/HzxGJW71arXjtPH6v7Hd7pnoaI8ZGc3S1vJofbzMsnChuXFE4cKRHXBkhyhc/I3ezJvXskBdfT3gNkPt1+nTQIcO/p9vbJSjDcHWBJ05E7g1hWpxw8LC4B/mwXZjDRkC7Nih3jrD12iWiuJi2aPKLGPGyD5ewYweDbjtIyEyjernt+Vbz4limXtPpljt1ROu96BVSfZ1Pu1x94RHdSHvPfcA69b5f16lE7f7dm5/Lr9c7XpU4j77zH/C4z49F+h63Hn3iVLtjWX2rqiGBnPjiMKF01hEBpWWyvUTI0cCd94p73v3Ds9C0HAJ13tobJQjOoEsW9Y8pQWYV3/HrOMcP652HNW43/wGyMryfCwrSz5uhNY4dMoUOUUYqEu6zRaeXVEDBpgbRxQuTHaIDPDXkymcO1/MFs73oGd0RWNW/R2zjmNmsqN9r48c8Xz86FFzfl8CreXRvtbTG0vVJZeYG0cULkx2iHQKVsUWaK52G63C/R6MjK6oLuQNFjdjRvAPdZU6PunpatcTLC5Svy/5+bJ+kfdC5zZt5OPhqLNj1veaKNyY7BDppFrF1uydL2YK93swMrrSoUPwAn1DhvhenOzeAXznzuBrX/x1H3d34kTg51XjIvX7UloKPP20707yTz8dntHGUDq9E0USkx0ineKhH1C434PRv/g/+8x/whOozo73uqM33pALeL2vwdd2bn/MGtmJxO9LoNEjTbhGGwsLA//MVL7XROHG3VhEOsVDP6BQ3oPK7i3tL35fu7E0/v7i/+wzuQ39nnuat2GvXu17REdbC+P9IX/4sLy99hrw8ceyWWffvvJ6VIvbmTWyE4nfFz2jRyNGqB1TdZfeokX+t9WXl8vnmfCQ5cLfgD36qbaIJxJCiPPnhcjOFsJmE0J+jHjebDYhcnJkXLQy+h7WrpWvc4/NzpaP+7JwoRB2u2e83S4fN+s9+Lp+93OpXqu3NWsCH1u7rVmjdp3h/H0pLla71uJiteOp/pwdjpbfY18/A4fD+HsjCkT185vTWEQ6WbXzxUxG3oOR3Vu+qiSfOWPOX/rBRjOAltM2enaaBeuKrhoXid8XM0eP9Pycjey6I7JEhJKvqMaRHTJi7VohLrjA+MhBNPD1F3xOTsv3EGwUxezRrPPnhSgrkyMRZWW+j6s6mmH0WlVGjvS8Z9XvtRFmjR7p/TnPmqX2PZ81K/T3SOSL6ue34TU7p06dwmeffYaamho0NTV5PHfvvfeGmIIRxQY9/YmiUX4+MH588DYF4VgT4o+vVgjZ2XJ0xH37tNE1LqrXqo3I3HZb8+s0RkZkvKsem1mtWrvWW2/1/bwQateq9+dsVk0jorAzkklt2LBBpKamijZt2oi0tDTRqVMn161z586GsjMrcWSH9Fq71vdf0TabvMXK6I7q2gyz14QEuh7V72uw0Yxwrl8xa0TGTGvXBn6/Kter9+fscAT//ttsXLND4aP6+W2oEWi/fv1w0003YcmSJWjfvr35GViEsREo6eF0yq3O/v4CttnkSERlZXSv2/G3k0kbtXjzzeaRlG3b5JbuYMrKjI/sGPm+au8BaPk+gikqAjIy1EZYGhvVm3RawazfSb0/58ZGICkpeLzD0fL7FQ995ch6yp/fRjKp9u3biwMHDhh5aVTiyA7pUVam9tdvWZnVV+qf3rUZZ86oveczZ4xfk9Hvq68dX8FuenZp6d2BZgWzfif1rv0pLFQ7b2Gh53li4XtKsSGsu7FuuOEGfP7558bSMKIYFw9FBfVW9X3hBbXjqsb5YuT76q9qcDCqu7T87Uw6dCi6eqCZ9Tupd+fYW2+pndc9Lh76ylHsMbRA+eabb8bChQvx1VdfYcCAAUhISPB4fuLEiaZcHFE0ipaigqFMA+j9cPznP9XiVeN86d5dX5xK1WC73TOx8f5aI4T8MC8oaK68HOz4QnjGqzh+HLjqKnnfrZssoNitm9prAzHzdzI/X05h+lok/swzofXYCtYnzPtnQGQWQ8nOr371KwDA73//+xbP2Ww2OKO5AyJRiIYNk//jP3zY9/+0tfURw4aF7xpUdyz5o/fDMRpHs1Tr7Ghrc44dA+bO9R/rPpo1YoTa8fXsQOvUCaitbf76++9l4paWBpw6Ffz1gZj9O6m6cywvT1aoDiYvT95HclcfkTtD01hNTU1+b0x0KN5ZXVTQjGkA7cPR39Z5mw3IyWn+cMzMVLs21Thfamr0xakmVhkZwJQp8l6FdtzDh9XiVeK8Ex13tbXy+VCE43fSbpcJx5Qp8t7Xa+fMCV5+wWaTcUB0Js3UOrCCMpEB2lC/d/Xc7GzPXUxmCzYNAMjnt26VHcC3bfM9baP3w/GSS9SuTzXOly5d9MXpHZ3SG3/8uFp8sLjjx/0nOpraWvXz+ePvd/KCC8L3O5mYCCxYEDhmwYLmnViqSV2oyR+RN8PJzvbt2zFhwgRcfPHF6Nu3LyZOnIiPtNWMRK1Afj5w8KDchltcLO8rK8OX6ABq0wCHDgGjRzd3AO/d2/doj56EbcYMtb/gvbuY66F3save0Sm98apraYLFXXWV2nFU44LxToT1FxfRp7BQdpJv4/Vp4qvD/IYNasdUjSNSZSjZWbNmDUaPHo327dvj17/+NWbNmoXk5GSMGjUKxcXFZl8jUdRSGeo3k5Hh/UDTW1YkbP4cOKAvTu/olN54s0YhzBohCkab3vSeVjtyJPy7nAoLgYaG4D3Q/vUvteOpxhEpM7Kv/dJLLxXLli1r8fgf//hHcemllxo5pKVYZ4dihWo9lWD1UfQqKlI7T1GR8fc2c6baOWbO9Hyd3grHqvETJ6pdz8SJgd9X795qx+nd2/frVfqERbp3mVFGf8ZE/oS1gnJSUhL27duHiy++2OPxb775Brm5uTh79qxJqVhksIIyxQqtUq6/XTfBGK1wPHs2sHx58LhZs4DnntN/fECODKgUZD9zBkhO9nxM7zZ8lfiBA4E9e4Jfz4ABwJdf+n/++HG1bfU1NS2nxFR33UWiwrUZQvkZE/mi+vltaBorJycHW7dubfH41q1bkZOTY+SQRKTAfSrGiGALl/0JpeGj0ynPF+y8ycnNW5T9ycvz/SGodzpRJd6sJpfdusnt5YGkpflOdFR33cXKLqdQfsZEITEybLRixQqRmJgoHnjgAfHqq6+K1atXi/vvv18kJSWJ559/3sghLcVpLIo1RlokeN/0lOc32i7CSFuAvDzfx87LM/rdMub0abX3fPq02vHS0ny/Pi2tZazeaalYa2ESLT9jin2qn9+Gkh0hhCgtLRXXXXed6NKli+jSpYu47rrrxPr1640ezlJMdiiW+OsMrvemp0O7kQ/TUDrDnzkj122MHSvvQ+m5FYohQwK/3yFD9B2vpkauzUlJkfc1Nb7j9H6/z58XIj09cGx6uvVrdtxFy8+YYltY1+zEG67ZIaMi3bk5WHdrvVS7Yb/+utzKHkxxsZwaUrnOnJzo7wwPyK7ejY0tH09MlN28w8HI9zsjAzhxwn9sejrwxhtybRC7jFO8COuaHSKSayZ695YLQ4PVtDGLSgsDPYTwbPjpj96CfHpaLUSziy/2negA8nGvPRqmMfL9DpToAPJ5lfpLRPFIOdnp0qUL/vOf/wAAOnfujC5duvi9EcU7qzo3h2uBabDjDh2qtuh36FD5bzNbLViltjZ47Z8DB4JXRzZCbwFEs+svEcUb5UagRUVFSE1Ndf3bFqycKlGcsrJzc7g6qQc77s6dwXdvOZ0ybsSIyBXSC6dx49Tjdu4099zarrvbbpO/T+6/a74KIBr5vQj37ypRNFFOdqZOner697Rp08JxLUQxwcrOzcG6W+ul2g1b79Zms1otWOmbb8yN0ys/X/aVWrbMM9Fs0waYN8+zzo7R34tw/q4SRRNDa3Z27dqFPW7Vtt566y1MmjQJDz/8MBr9TXD7sHLlSgwcOBAdO3ZEx44dce211+K9995zPS+EwOLFi5GVlYXk5GSMGDEC+/bt8ziGw+HA7Nmz0bVrV6SkpGDixIk4ZOaiBiIvVtY0CdTyQC893bD1riHx7rflj2qc2VRq/4SjaaVqzSFATi89/XTLGKdTPu4+/RTq74XV9XeIws7IVq/BgweLN998UwghxIEDB0RSUpKYMmWKuPjii8WcOXOUj7Nhwwbx7rvviq+//lp8/fXX4uGHHxYJCQli7969QgghnnzySZGamirWrl0r9uzZI26//XbRo0cPUVdX5zrGAw88IC644AKxefNmsWvXLjFy5Ehx+eWXi/M69lhy6znpEQ01TYzU2fGOD9RSwZveOjvB6sRo57diK7Rq7Z+1a9Xes+r3UE/NIaPtH3ydw+rfVaJwCmudnY4dO4pvvvlGCCETkrFjxwohhNixY4fIzs42ckiXzp07i7/85S+iqalJZGZmiieffNL13NmzZ0VaWpqrcOGpU6dEQkKCKCkpccUcPnxYtGnTRmzcuFH5nEx2SA/tg8hfrZtw9yEKpc5OUVHLHksqvZeM9MYKdJ2q9X1UORzy3LNmyXuHQ//3zvuatmxRe89btgS/Pr01h0JJqN1/nlu2WPu7ShRuqp/fhqaxhBBoamoCAGzZsgU33XQTANlGQtuxpZfT6URJSQm+//57XHvttaisrER1dTXGjh3riklKSsLw4cOx84fVgBUVFTh37pxHTFZWFnJzc10xvjgcDtTV1XnciFTp7Z5tpkCLo1VkZHi2SFDdPq+3Izkg15S8+aZcS+IuJ0c+blZn9UWLZL+luXNl/665c+XXixZ5xgX73gkhF+tq00Y1NWrnDxYXbEE74HleILSpUvdWGKNGWfe7ShRNDCU7gwcPxuOPP47Vq1dj+/btuPnmmwEAlZWVyMjI0HWsPXv2oEOHDkhKSsIDDzyAdevW4bLLLkN1dTUAtDheRkaG67nq6mokJiaic+fOfmN8Wbp0KdLS0lw39vMivbQP8qwsz8cvuCD4B7medRveQq2z4772Rs/2eaN9ovLzgYMHZQPK4mJ5X1lpbqLz1FO+17U89ZRnwqO39o/edUr+6FnQrnrMQHENDbIh6w03yPtx4+TvpPf6qOxsc5POUH6vicLOyLDRP/7xD5Gbmys6duwoFi9e7Hp81qxZYsqUKbqO5XA4xP79+0V5ebn4zW9+I7p27Sr27dsnPv74YwFAHDlyxCP+l7/8pbjhhhuEEEK89tprIjExscUxR48eLe6//36/5zx79qyora113aqqqjiNRboZ6ftk5DXuiouNTV8Bcs2ONr2jd01ITY3aOfy1PwgHhyP4uiX397xmjdp7WLNG7XsEqE0Bqf7MiouNvzdNoJ5TKtOVRoX6e01kVNh7Y/nS0NAgGhsbQzrGqFGjxH333ScOHDggAIhdu3Z5PD9x4kRx7733CiGE2Lp1qwAgvvvuO4+YgQMHikcffVT5nFyzQ3oZWY8SSq8ojepajmBrPPSuCbnuOrX4664z5/t74oQQublCdOki70+caBmjdx2RkXVHCxcGjl24MPh7MbL+xshr/CU67glPOERybRaRt7Cu2amqqvLY3v3ZZ5+hoKAAr776KhISEkIdaYLD4UCfPn2QmZmJzZs3u55rbGzE9u3bMfSHMq2DBg1CQkKCR8zRo0exd+9eVwyR2fSu/Qj2Gu0x79f4MniwkStuVlkp7/WuCfn2W7V41bhAMjNlH6e9e4HvvpP36enycXd61xGlp6vFa3FOp5ySCaSkJPjPrH9/tfO6x+n9+TQ0AG+9FTj2rbdknJmM/LdAZAVDyc6dd96JsrIyAHLdzJgxY/DZZ5/h4Ycfxu9//3vl4zz88MP46KOPcPDgQezZswePPPIItm3bhrvuugs2mw0FBQVYsmQJ1q1bh71792LatGlo37497vyhQ15aWhqmT5+O+fPnY+vWrfjiiy9w9913Y8CAARg9erSRt0YUlJG+T0bWbfjym9+oX6cvy5bJD/Bjx9TitTUhPXuqxavGabzXeWRk+L+2Y8c8Ex6964iC9Y7SaHFm9ff66U/Vzusep3fNzsKFavGqcaripQcaxT/lCsru9u7di6uuugoA8L//+7/Izc3Fxx9/jE2bNuGBBx7Ao48+qnScY8eO4Z577sHRo0eRlpaGgQMHYuPGjRgzZgwAYNGiRWhoaMCMGTNw8uRJXH311di0aZOrbQUgW1e0bdsWkydPRkNDA0aNGoWXX34Zdm4voDCpqtIfZ1Yhwn/+U+04/uzd29xN2273/xe3d2XlDRvURkY2bFC/ltJSOSqgZ8H1sWNytKdLF2DGDFlhONCogd0u4wD9Iztm/cyOHFE7jnuc1oss2HvTBrD371c7h2qcqnjogUatg6Fk59y5c0hKSgIgt55PnDgRAHDppZfiqI5SnC+99FLA5202GxYvXozFixf7jWnXrh2ee+45PPfcc8rnpfBwOuVfcEePyr84hw2L3JbWSJ77739Xj7vnHvlvs3b2pKSoHUdFoEQH8NyS/OWXasf88ku1tgPaTjB/0x+BDB8O7NkDJCbKtglPPeU/dt48GQfoH9kx62emOrPvHqe3F1nfvsCmTcHP0bev2rWoioceaNQ6GJrG6t+/P55//nl89NFH2Lx5M2688UYAwJEjR5Cu+ucTxRXVei3xcG7VD2j3OL1drP2ZNEnt3Hp4J4W+tiSb+Rd8qLWC3EdACgvl1Iz3e7Db5eOFhc2P6e3Xpbo+KljcD5U5gnKP0zuqFCjhc6capyoeeqBR62Ao2fnDH/6AF154ASNGjMCUKVNw+eWXAwA2bNjgmt6i1kNPvZZ4OLfqX8fucWYVIuzVS+3cejidQFFR4Do4Zv4FH2qtIO/aRoWFwJkz8j3MmiXvz5zxTHQA/f26VNdHBYsbMEDtOO5xekeVkpNl5/JA8vJknJmivQcakYvR7V7nz59vseW7srJSHDt2zOghLcOt58YZ7eETy+d2OIRo0ybwNt82bXy3LPBVj0RPjyqV+itGbq++Gvi8r75qznGECK1WEOB7G7oKvXVzxo5Vu54fuuX4ZaRmjtGWJIHq7IRDNPdAo9YhrFvPAcBut7eoXNy7d2907949xPSLYolZu4xi6dyqa4F8xYVaUVhlLYcRwdYh6V3vEojqqIUvGRlycbIR2uhaoKlE99E1IyN4vmhriwJxX1vkfq3adXlfJyB31n30kWfF4vXr5ajWzJnA2LHy/swZ+Xg4uH9PfV2n9/eUyCrKC5SvvPJKbN26FZ07d8YVV1wBm7//YwDYtWuXKRdH0c+sHSuxdO5Nm4AfWsP51dQk48aNa/mc1rvIiHDtagm2fsbMtRlXX612LG8ZGUCALjBKtDYf3rvAcnLkh7J70vnUU8Cf/hT8mCrrYLQptWXLPJNVu10mOt5TboGuNTsbuOMO2QPM+/Fnn5WvW748+DWZJdB1en9PiayinOzk5eW5dmBNCscqSYpJZu1YiaVzK1ZWwKOP+k52QhGuXS3BRifMXJvxwgtqx+rQATh3DujUCdi9u2VRQaPy8+X6lWC797R1MIGK9elZB1NYCDz+OLBihSx0eNFFclu8+4iOyrUePw7cfnvLBFVbp2ZmvytVqt9TIqvYhDC6JyJ+1NXVIS0tDbW1tejYsaPVlxNTGhtlh+lg9UDOnAn8P/VYOnefPnIqKpjevZsrFpvltdeAu+8295gAcOoUkJbm/3mnU76fQNOGOTny/Qb7gJs9W//IQ6ARkHCbNMl3wpOXF77pIX+C/Ry0+kgqPweieKD6+W14zY6mvr4edXV1HjdqPfTUA4mXc6vWujGzJo4mXLtaHnkk8PN2OzBoUOCYK69U+4BVrXzszlcX80jp18/3epR+/SJ/LVaukSOKZYaSncrKStx8881ISUlBWloaOnfujM6dO6NTp04tFi1TfGuNa3ZUqyuEowqDVq/HbF9/Hfj5xkbgnXcCx7zzjowLZsYM46MOy5apnUPj3Y5C7+LuRYtkkuU9/i2EseSrsVGuY5k9W97reS+Atf+9EcUyQ8nOXXfdhZMnT+Kvf/0rtm7dig8++AAffPABysrK8MEHH5h9jRTFWuOaHdWWDaG2dvDFfZeOmYI1iFyxQm0UbcWK4OdS2Z0U6jkAWWOpVy/PYpO9eqnXXmpslMlVIHqSr0WL5LTr3LlyGm/uXPm1noTJyv/eggk1sSQKJ0PtIr788ktUVFTgkksuMft6KMZoIw2HD/ve0ePdYykezq26INXsAm6aTz81/5jBCt/p7TAejL/dSWado7QUuPXWlo8fPiwfX7s2+CJePQleQUHgOG2EyNfrtcdV1iNZ+d9bIL76nLnvDiOymqGRnSFDhqBKtRsixTWzKgNH+tyh/BXau7e5cXo0NgJPP23+cffsAW64QVYg9jXKo7fDuArvyseqmzyDncPpBO67L3DMffcF/5mbleCZOUJk5X9v/lhZQZ1ImZGKhd98840YPXq0ePnll8Xnn38u/vGPf3jcYg0rKIcu1MrAkTy3r/jsbPVrHT9erbLu+PHmvUdNYaH51ZNVKu4aqQKsl1nn2LJF7T1u2RL4OEVFascpKorMcdxZ+d+bOysrqBMJof75bSjZ+eSTT0SfPn2EzWZz3dq0aeO6jzVMdsxx/rwQZWWyHUBZWWT/B6d67rVrfZfgt9nkTeXDIjdX7cMrN9fMdyhdd11kkh1fCc/ChYHjFy4M/f2ZcY7f/lbt/f32t4GPY1byNWuW2vXMmqX+fRLC2v/eNGVlau+trCzy10atg+rnt6E1O7/4xS9wxRVX4PXXX0dGRkbAasrUeoRSGTgS5w7UbVsIOQ1QUCDrpwSaBghUj8ZInPv1RVNRtrfeklNa2tojI1WAg/F+z0uXmn8Oo7SF1IEqJHu3efAlHFOAgLX/vWm4O4xihpFMqn379mL//v2GsrBoxJGd1sGsv0L/+le14/z1r+rXpjq1FqlpLO02c2bLa3U45JTLrFny3ujUVaD3HMo5zJrG0ixc2HKEx25XH8mKxBSgVTiyQ1YL6zTW+PHjxZtvvmnowqIRk53WQbXbdnFx4OOY/T94PVNrDkdkk51gHb2N8veetfcdytqT8+eFSE8P/L7S0/VN+4Sa4EViCtAKRruzE5klrNNYEyZMwNy5c7Fnzx4MGDAACQkJHs9PnDgx5BEnij3RNg3jrXt3c+JUG1mqxOmdWot07RLVzt96BHrPgHxcZTrRH7sdePFF31vPNS++qO/YiYnBt5e3RtrusNtuk7+r7j9Tq3aHEflkJJNyX5jsfeMC5dYp1B1OkRBtu3SE0D9KNHNmZEd2zpwJ7Xtuxns2IppGUuJ5GksTLbvDqPVR/fw2VGenqanJ783JspmtTqzU2aipMSfOzAJ7ehd4hqMqsz96OnrroVqiy2gpL7MrH4fKzOrT0So/XzbHLSsDiovlfWUlCwpS9NCV7Nx0002ora11ff3EE0/g1KlTrq9PnDiByy67zLSLo+gXbBoGkMP/0ZADm1Vqv1cvteP4i3MvaHjkiNqxtKm1du3U4kMVzo7ef/+7uXHewpFchFKE0uzq09FK2x02ZYq859QVRRNdyc77778Ph8Ph+voPf/gDvvvuO9fX58+fx9fBOgpSXImlLsxaqX1/lRJsNiAnJ7yl9ktLZWVlrV/TggX6Xv+jH4XlstC/PzB2LDBzpqxqHK5EB/C/VsdonDezkwvvn9nIkfJr1RHLcG09JyJ1upId4fV/H++vqfWJpTobZpXa//e/1c7nHedvuk+FNrXW1tCWguCysoD335cNKsPV00ujuujZ6OJoM5MLfz+zQ4fUp2hVurzb7TKOiMLD0JodIo1ZO5wiJT8fePNN4IILPB/PzpaPq6wxyMlRO5d7XLAdSMFoU2sdOhh7fTDt24fnuL6E+8PfrOOr7hoLNqWl0uVdpTghERmnK9mx2WwtqiWzejJFkr+1E3rWVIS6mLKyUn9csOm+QNLTm6fWPvjA2DGCufRS9dhQ1q8A4f/wT0wExo8PHDN+fPDjq/zMVKdoCwuBhQtbJmF2u3w8kpWhiVojXYPiQghMmzYNSUlJAICzZ8/igQceQEpKCgB4rOeh1qG62ty4QEpL5V/a7h9A2dlyQeRrr3ku9s3KAp57zn8CE0qpfSNrQsyaxnPbD2CqQ4dk8hKsPpK/n8Gzz+rbeROO1hMapxOoqAgcs2uXjAs0AnT4sNr5VOMKC4HHH5cLow8ckNNoM2bEz4hOtNfZotZNV7IzdepUj6/vvvvuFjH33ntvaFdEMeX4cXPj/NHWTnhPKRw65Lt30ZEjsqjc2rXmb3/9IbfXFae6E8yXEyfkh8iIEcCQIcDnnxs/lj+vvSZvgP/kxd/PQCsxoDoNqAnXh7+eEZlACW84frfjtTihWUkwUbjoSnZWrVoVruugGNWtm7lxvoSy3mXqVOOVeP256Sa13Uo33dT876FDgTZtgKYmY+fURoaWLgVWrjR2DFW+khezmqh6C8eHv1mL5iPxux0PzE6CicKBC5QpJN4LfUON8yWU9S719cDWrcbP7ctbb+mP++gj44kO0LzA+y9/MX4MVb7qI8VSiQGz6ilF4nc71sVSnS1q3ZjsUEi02jWBhFq7JtT1LqtXh/Z6b599pj9u2zZzzr1jhznHCcY7eYmlEgNm1VOKxO92rIulJJhaNyY7FBKtdo3N5rt2jc0WeiPAUNa7AHJ0x0znz5sbp0Lb/WT2ewlGS17MGi2JBLPqKUXidzvWxVISTK0bkx0KmRm1awIZPDi0119/fWiv9zZ0qP44ozu/NI8/Lqv3btkS2nH00qbPoqH6tB5m/U6G+3c71sVSEkytW5jqsVJrk58vF6eGY+vpb35j/LVt2gCzZ7d8PJRtssOGAe++qxanGTFCFgSM9MiMWbRRjttuk4mN+xoNPaMlkWTW72Q4f7djnZYEHz7se92OzSafj5YkmFovJjtkmlBq1wSyf7/x186f33Irc6jbZI22i0hKir1kx712kTbK4et798wz0TnKYdbvZLh+t2NdLCbB1DpZOo21dOlSDBkyBKmpqejevTsmTZrUopHotGnTXJWbtds111zjEeNwODB79mx07doVKSkpmDhxIg4Z3b5DUcdIjyR/lWn99TrStsmq9Doysk7ho49kvZxY4915PNTq0xR/ONVHscDSkZ3t27dj5syZGDJkCM6fP49HHnkEY8eOxVdffeWqygwAN954o0eNn0SvP9ULCgrw9ttvo6SkBOnp6Zg/fz7Gjx+PiooK2PknRcx78kngT39Sizt0yH9xOrNqxRipvxKrCzR9bRnmKAd541QfRTtLk52NGzd6fL1q1Sp0794dFRUV+MlPfuJ6PCkpCZmZmT6PUVtbi5deegmrV6/G6NGjAQBr1qxBTk4OtmzZghtuuKHFaxwOh0dri7q6OjPeTqvX2BieUviqFYOvvhp48EH/z+vZJmt2Zd1YXaDJDyvrxUobBibBFM2iajdWbW0tAKBLly4ej2/btg3du3dHv3798Ktf/Qo1NTWu5yoqKnDu3DmMHTvW9VhWVhZyc3Oxc+dOn+dZunQp0tLSXLcc1TbW5NeiRbJz9ty5wPLl8r59e/l4qMza3mrWcYzsQBk6NDo/oIIZNMjqK2jdSkuB3r2BkSPlbryRI+XXKtOtRNQsapIdIQTmzZuH66+/Hrm5ua7Hx40bh9deew0ffPAB/vjHP6K8vBw//elPXSMz1dXVSExMROfOnT2Ol5GRgWo/3Scfeugh1NbWum5VVVXhe2OtwKJFsj+V95SH0ykfDzXhMWt7q1nH6ddP7TjucTt3xmYV2WANNSl8zFhfRkRS1CQ7s2bNwpdffonXX3/d4/Hbb78dN998M3JzczFhwgS89957+Oc//4l3g+z9FULA5qcoSFJSEjp27OhxI2MaG2Xn6kCWLZNxRl19tTlxZtWK+eUv1a7HPS6e1uxQ+LENA5G5oiLZmT17NjZs2ICysjJkB6nP3qNHD/Tq1Qv7f9iPnJmZicbGRpw8edIjrqamBhkZGWG7ZpJWrAj+P1ynU8YZ9cIL5sSZVVlXtT+VexzX7JAebMNAZC5Lkx0hBGbNmoXS0lJ88MEH6NOnT9DXnDhxAlVVVejxw6fHoEGDkJCQgM2bN7tijh49ir1792KoaqlbMuzAAXPjfFGts6MSZ8Y2WSPXo9JnKRoTiyFDrL6C1oltGIjMZWmyM3PmTKxZswbFxcVITU1FdXU1qqur0dDQAACor6/HggUL8Mknn+DgwYPYtm0bJkyYgK5du+KWW24BAKSlpWH69OmYP38+tm7dii+++AJ33303BgwY4NqdReFz0UXmxvnib9rJ25Ejsn/Utm2BR5tCrRWjej3ucXY7MGVK4PiCguZrmjRJ7Rzh5jVgShHCNgxEJhMWAuDztmrVKiGEEGfOnBFjx44V3bp1EwkJCaJnz55i6tSp4ttvv/U4TkNDg5g1a5bo0qWLSE5OFuPHj28RE0htba0AIGpra818e63CqVNCyEH1wLdTp4yf49VX1c7hfsvOFmLtWvPep5HrefXV5tecPy+vKVB8To6ME0KI06f1v+dw3NasCc/3kALTfl9sNt8/F5vN8/eFqLVS/fy2tM6O8LX6zk1ycjLef//9oMdp164dnnvuOTz33HNmXRopeuQR9bjly42dw0hlAG3Hir+pqVBql6hej3tcsDUYgGeNH9XaQuHmPd1HkcE2DETmiooFyhS7zFxP44/KehdvgXashFq7ROV6vHd16V2DEQ3VEKKpi3lrxDYMROZhskMhUe1bZaS/lcZuN1bczteOFX+1Sw4dUq9dYrcHXyuRmen5V7feNRjePakizWbjyEE0YC8yInPYRLC5pFagrq4OaWlpqK2tZc0dnWprgU6dgsedOgWkpRk7R2OjrMZstKZIcbFcHOx0yhGcQNNJOTnywyTQh3xDg7yeYM6cAZKT5b/1nnvGDGDlyuDnCNVFFwEOh+d15eREbxdzIiJ3qp/fHNmhkLj1ZzUlzheVWj6BaKMletbNBLJwodp53eNUdmPdcUdzktUmQv9lHjgA3H47Rw6IKL4x2aGQ7NtnbpwvX39t/LXu605U18EEi/vnP9WO4x7ndMpt8YGUlDQndapVo83wzDOyd9eUKXJxNKeuiCjeMNmhkHz6qVrcli1qNXB82bNH92W5XHll84e36jqYYHEpKWrHcY/TO6oUyd60oVa4JiKKdkx2KCRNTWpxBw8a79qclGTkyqR33mnuy6W6Oi1Y3Pjxasdxj9O7GyvSXdJDqXBNRBTtmOxQSM6c0f8avV2bf2hwb4j7qIVZO8e++ELtOO5xendjRbpLeigVromIoh2THQpJz576X6O3a/OFF+o/hztt1GLGjOCjJdpOqEDOnVM7r3uc3o7rkex5pPKeiYhiGZMdCsm33xp7nZ6uze+8Y+wcGm3UIjEx+BTU+PEyLhAji7L1dlyPZM+jefOCv2cioljGZKcVcTrlAmGjC4V9CWU9DaA2ghHKNBYA/PKX8t7pBCoqAsfu2hX8+6LVzgnGO05PRdxgI0FmsNvl9vjCwvCdg4goGjDZaSVCbZHgT6iJiMoIRmpqaOf4y1/kvVl1di6+WO28vuJUK+JqI0Fml/y88kpg1iygqEiut2KiQ0StgaWNQCkySkuBW29t+fihQ/LxtWuNF5G78EL54a2XzSZHLlR6Lz32GPDAA/rPodHW7OjdEeXPxInA888HP87Eib4ft9tlPZtgVLf167F0KTB2rPnHJSKKZhzZiXNOJ3DffYFj7rvP+JSWkXowers2h9p5W2vaqXdHlD+nTqkdRzXOl8ZGYNky46/3pUMHYNQoc49JRBQLmOzEuW3bgBMnAsecOCHjjPjgA/2v0du1eelS/edw99VX8l7vjih/undXO69qnC+htsjwZdQoVkcmotaJyU6cU01ijCY7x4+rxSUkGO+9pNrmwZ+1a+W93h1RVgpHkT/3AotERK0Jkx0KiUr3b0AuMjbae8lILR937vVu9OyI8qe6Wu28qnG+hKPIH9tCEFFrxWQnzqkshNUT561rV3PjfHn3XeOvBYDOnT2/Vt0R5Y/qaJZqnC8qBRCNYFsIImqNuBsrzo0YIRem1tf7j+nQwXey09goRwIOHJAjDTNmtCw+p9ouwkhbCU1amhxBMnqMm29u+ZjqjihfunUzN86XxERZ7O+pp4wfwxe2hSCi1ogjO61AsMJ/vp5ftEgmGHPnAsuXy/v27eXj7lR3Y4XSxbuhIbRkqX9/46/1RXV3WKi7yAoLZdE/s0Z42BaCiForJjtx7qOP1HZjuRfSW7RIjih47wZyOuXj7gmPkQ7gei1caPy1ADBgQGiv96bt6gpEZVeXisJCmegVFcligE8+afxYbAtBRK0Vp7FimNMpk5SjR2VtmGHDWo4CHD6sdiwtTqW+y7JlwOOPyw/Oykq146vG+fJ//2f8tQBQU9PyMZUpOn/sdrnYOtAU0x13mDcik5gom6ZqPvkEeOst9dfb7TLRYbVkImqtOLITo1TbP+jdOaRS38V9V8/HH6sdXzXOF1/Jih7eC4VVp+j8cTqBv/41cMxf/2p+nRzN+vVAXp7v5/LyZAsPbSSIbSGIiDiyE5NKS4HbbmvZN+nwYfm4+xbq775TO6YWp7pbR4sL1mtKoxrnS0YGsHev8de7LxTWpui8aVN0QPDEQE+hxnBVLF6/Xq5lWrgQ2L8f6NtXXr/WfNR9JIiIqLXjyE6McTqBOXN8N4jUHisoaB5VaKP4E9biVHfraHFNTWrxqnG+XHqp8dcCzQuFVafoghXeU60abaS6tB6JiTK5nTZN3nM9DhGRb0x2Ykywzt1CeHbu1ltnR6W+i/uuHtWigqpxvoSy/dp9obDeKTp/vv1W7dyqcUaEq4s9EVE8YrITY/R27tbq7ATiXmdHq+8SiPuunkjUnElOlrV29LLZPNs/6J2i80e1onOolZ/90aYxvZNebRqTCQ8RkScmOzHGSOduvXV2tPou3lNgbdrIx93XtESiKWZ9PVBbq/91F17oWRVZ7xSdPz/9qdpxVOP00DuNSURETHZizrBhQHp64Jj09OapGyN1dgDgmmtaJlY9esjH3YW70SgA3HOPsdcdOABcdVXz13qn6PwZMULtZ2C0QnMgeqcxiYiIyU7cM1IHR5sm8a7Rc+SINdMkofRzKi9vbpWhd4rOH7sdePHFwDEvvhie3lZ6pzGJiIjJTszRO1Lz5z+rHVeLi8ZpklD7OU2Z0vxvfy0Y7PaWU3SB5OcDa9e2rKScnS0fV20qqpeRaUwiotaOdXZijN6/7PUWFdQzTTJihKzvsn9/8OP37at2Hb6sXg2kphp/vXdBw8JCWQHaaAVlTX6+LOIXrIq1mbRWFYcP+05IbTb5vBmtKoiI4gWTnRij9y/7zp3VprI6d5b3epOp/v3Vkp1QmnF26CALCx47Zuz1vpIP7xYMRoXSPd3o+Z59Vk4n2myeCY/NJu/dd6AREZHF01hLly7FkCFDkJqaiu7du2PSpEn4+uuvPWKEEFi8eDGysrKQnJyMESNGYN++fR4xDocDs2fPRteuXZGSkoKJEyfiUCgle6OY3iaUjz6qdlwtTm8ytXKlWrxqnC+NjcB//mP89RMnGn9tNMrPl1WyvbuqZ2d7Vs8mIiLJ0mRn+/btmDlzJj799FNs3rwZ58+fx9ixY/H999+7YgoLC7Fs2TIsX74c5eXlyMzMxJgxY3D69GlXTEFBAdatW4eSkhLs2LED9fX1GD9+PJxxuP9Wa0IZiHsTymA1djRa3LBhanV5tGTqv/5L7fiqcb6oFAMM5Gc/M/7aaJWfDxw8CJSVAcXF8r6ykokOEZFPIorU1NQIAGL79u1CCCGamppEZmamePLJJ10xZ8+eFWlpaeL5558XQghx6tQpkZCQIEpKSlwxhw8fFm3atBEbN25UOm9tba0AIGpra018N+Fx/rwQ2dlCyAkM37fsbCG2bBGiuFiIhx8OHKvd1qyRx3c4hGjTJnBsmzYyTgghLrtM7fiXXWb8Pd93n9o5/N2Ki0P/vhMRUfRR/fyOqt1YtT9UjuvSpQsAoLKyEtXV1Rg7dqwrJikpCcOHD8fOnTsBABUVFTh37pxHTFZWFnJzc10x3hwOB+rq6jxusSLYAmJAPj96tGwjsGSJ2nG1zuArVgTvY9XU1NxSIdjOMI1qnC9es5a6cWcSEVHrFjXJjhAC8+bNw/XXX4/c3FwAQPUPW4QyMjI8YjMyMlzPVVdXIzExEZ21FbY+YrwtXboUaWlprltOTo7ZbydswlU/RSuS57Vkyi8trlMntXjVOF/atTP+WgC44orQXk9ERLEtapKdWbNm4csvv8Trr7/e4jmbts3kB0KIFo95CxTz0EMPoba21nWrqqoyfuERFkrbhUC00SLvQoL+aHGqbRyMtHvQpKQYfy1gvAIzERHFh6hIdmbPno0NGzagrKwM2W5bjTIzMwGgxQhNTU2Na7QnMzMTjY2NOHnypN8Yb0lJSejYsaPHrbVbtUre652WisQ01o9+ZPy1ALB3b2ivJyKi2GZpsiOEwKxZs1BaWooPPvgAffr08Xi+T58+yMzMxObNm12PNTY2Yvv27Rg6dCgAYNCgQUhISPCIOXr0KPbu3euKiSc1NeE57qlT8j7IgJmLFnfunFq8apwvCQnGXws01xAKB6dT9v16/XV5H8kNgFaem4gollia7MycORNr1qxBcXExUlNTUV1djerqajQ0NACQ01cFBQVYsmQJ1q1bh71792LatGlo37497rzzTgBAWloapk+fjvnz52Pr1q344osvcPfdd2PAgAEYPXq0lW8vLMI1jaVVOJ40SS1ei1NdTxPKuptQi/Y99lhor/entBTo3RsYOVIuBh85Un4did5hVp6biCjmRGBnmF8AfN5WrVrlimlqahK/+93vRGZmpkhKShI/+clPxJ49ezyO09DQIGbNmiW6dOkikpOTxfjx48W3336rfB2xtPV8y5bQtmH7u506JY/vcKjFa1vPO3ZUi+/Y0fh7Pn9eiPR0Y+8rIUG+3mxr1wphs7U8n80mb2vXmn/OYOfWzh/OcxMRRRPVz2+bEL467LQudXV1SEtLQ21tbdSv31m9Grj3XvOPe/QokJkJNDQA7dsHjz9zBkhOBpKSZIXjYBITAYfD+PWVlgK33qr/deFoyul0ylEUfyUAtP5UlZXmt20Idm5AVtAOx7mJiKKN6ud3VCxQJnV//3t4jvvjH8v7hQvV4rU41eaZeptsRjM9zVIjfW4gfOcmIopVTHZijOo4XF6ebCOgurhXW6Cst86OWy3HgFTjfHE6gTlzjL22oMD8hbt6m6Wa6d//NjeOiKg1YLITY7SFxMGMGCF7aP1QjDoorejfD2vDg9LirrlGLV41zheV0Qx/wjHKobdZqpnWrzc3joioNWCyE2NmzAi+FsNul3EA8NlnasfV4gYMUIvX4rp2VYtXjfNFtdBhuF7vTes872+bvs3m2XneTG49ck2JIyJqDZjsxJjERODKKwPHXHll8xoZ1a3IWtwll6jFa3EbNqjFq8b5ovXtsur13ux24Nln5b+9Ex7t62eeCc8C4X79zI0jImoNmOzEmMZGYNeuwDG7djXvkNq9W+24Wtwvf6kWr8Wp9lANpddqt27GXws09/0yU34+8OabwAUXeD6enS0fN3sHmOapp8yNIyJqDZjsxJgVK4IvuHU6m7uSFxerHVeL+8tf1OK1ONWKzqFUfvZOKPQKpVVFIPn5wMGDQFmZ/P6Vlckt3+FKdAC53T8vL3BMXp6MIyIiqa3VF0D67NunL+78ebV4LU7vbizVis6hVH4eOlROCRndVRXqyFAgdnvoFZ71Wr9eVrB+662Wz+XlcXEyEZE3juzEmE8/VYt7+21g9mygrWI6q3UW9+q56pcWF4k1JDt3hrZ9PNSRoWi0fr0s7DhzptzWP3Om/JqJDhFRSxzZiVPHjgHLl6vHayNBerdVT5wIPP988PiJE9WvxVso9WrCtSsqGiQn6/sZExG1Vkx2YkxODrB3r/nH1dZ4XHSRWrwWp3ckyIhQ6tXccUf8tk1wOmUNoaNH5fdo2LD4fa9ERKHgNFaMOXgwPMcdNEjeX3aZWrwW9+KLavGqcb4Eq2sTSEmJ+RWUowG7nhMRqWOyE2OMVhIORiu8t3OnWrwWp5p8hZKkBaprE0w89okqLQVuu63l78Lhw/JxJjxERJ6Y7MSYtLTwHLeNwd+Edu3MjfPHX10bFVVVoZ07mmh9wnz1SNMeC0c/MCKiWMZkJ8b8z/+E57gdO8p71W3UWtx996nFq8YF4l3XZtIktdeFq1O8FazsuE5EFKuY7MSYm28Oz3EzMuT9iBHBKw6npzcnO/Pnqx1fNS4Yra7NlClAVpbaa1Q7xccCKzuuExHFKiY7MSZcf7Frva7s9uCLiV98sXnXT2IisHBh4PiFC5t7dZlJtQO8alwsiEQRRyKieMNkJ8Zs2xae465ebfy111wT2vNG6e0AT0RErROTHcJFFwEdOsh/O53B19fcd1/zAlhtwaw/Nlv4FswmJsrt1oH07h2eUSWrRKIXGRFRvGGyE2PCUQ24sbE5Gdm2LXjjzBMnmkeYrFww29AAHDgQOObAARkXL/RWuCYiIiY7MSccFXLdkxHVaTItzsoFs8HWCumNiwXBCizabPHdIoOIyAgmOzEmlLYLgWjJSFOTWrwW16mTWrxqnB7795sbFwsCFVjUvn7mGbaNICJyx2Qnxhw/Hp7jatMewbada7S4DRvU4lXj9GiNu7EA/wUWs7Pl4/n51lwXEVG0YiPQGNOtm7nHs9nkh6Q27aHV2wlGi/vXv9TiVeP0eOop4E9/UouLN/n5QF4eG4ESEalgshNFVLpYZ2aadz5f0x6qx9fiLrxQLV41To/kZPmB/9Zb/mPy8po7uscbrcAiEREFxmmsKBHOLtZ2u/zQz872fNyMaY/x482N02v9evnefMnLk88TEVHrxpGdKKB1sfZua6B1sXZPSIzUT3E65ZqZN96Q02CBRo6OHFE7pha3Y4da/I4d4Wt1sX693F6+cKFcjNy3r5y6itcRHSIi0ofJjsWCdbHWivLl5cnEJJT6KfPnA5WVgdd1fPKJ2rE++QS45x7g88/V4lXjjEpOBpYvD+85iIgoNnEay2J6i/JpdVb0Ui3up3dkR7VgXzwV9iMiotjCZMdieovy2e2y43e4ztexo9pxtLhg7Ro0qnFERERmY7JjMb3l/51O4PXXw3e+u+5SO44Wd++9avGqcURERGZjshMmTqdsqfD66/LeXyNMveX/g017+aPV09GSJX/X1FZxFZcWN2pUcxNRfzp0kHFERERWYLITBnq2kest/2+kx5TNJtfsNDQAo0cHvia9XbXtduCVVwLHvvIKi90REZF1mOyYTNtG7j36om0j95Xw6Cn/b2Q3Vpcu8t67m7mvazLSVTs/H1i7FsjK8oy54AL5ONsXEBGRlSxNdj788ENMmDABWVlZsNlsWO9VAW7atGmw2Wwet2uuucYjxuFwYPbs2ejatStSUlIwceJEHDIyz2OCYNvIAbmN3Nf0UX4+cPAgUFYGFBfL+8rKlomCyrRXdjawZYs8zpYt/uvN+Lomo1218/OBb7/1vP5//5uJDhERWc/SZOf777/H5ZdfjuUBCqTceOONOHr0qOv2t7/9zeP5goICrFu3DiUlJdixYwfq6+sxfvx4OP0tkgkjvdvIjVCZ9nr2WblGZsoUGa/nmkLpqq21L5gyRd5z6oqIiKKBpUUFx40bh3HjxgWMSUpKQqafhk21tbV46aWXsHr1aowePRoAsGbNGuTk5GDLli244YYbfL7O4XDA4XC4vq6rqzP4Djzp3UburrRUjgq5JybZ2TLx8B4d0aa9fMU/84xnvJFr0nN8IiKiaBf1FZS3bduG7t27o1OnThg+fDieeOIJdO/eHQBQUVGBc+fOYezYsa74rKws5ObmYufOnX6TnaVLl+Kxxx4z/VqNrHcB9LWL0ATqeu3eUPTYMWPXZKSrtkoj01BF4hxERBRfbEL4WmESeTabDevWrcOkSZNcj73xxhvo0KEDevXqhcrKSvz3f/83zp8/j4qKCiQlJaG4uBg///nPPUZpAGDs2LHo06cPXnjhBZ/n8jWyk5OTg9raWnRUrarnQ0MD0L598LgzZ5rX0TidcleUv6kmbQ1OsDYPGl8jRFoCZMbx9ZzX38hUNJ+DiIhiR11dHdLS0oJ+fkf1yM7tt9/u+ndubi4GDx6MXr164d1330V+gE83IQRs/lbYQk6NJSUlmXqtAOAnt/IZV1Ag/626zue554CMjMCjGf5GiAIlOoD/NTiqjIxMReM5iIgoPsXU1vMePXqgV69e2L9/PwAgMzMTjY2NOHnypEdcTU0NMjIyIn59Bw7oj1NdUzN3buD6OIF2gmm8ExpfW9v1CmUHmlnnECL0cxARUfyKqWTnxIkTqKqqQo8fFpgMGjQICQkJ2Lx5syvm6NGj2Lt3L4YOHRrx67voIv1xRurm+KqPo1JZ2ekEiooCb23XKxI70FTeW6jnICKi+GVpslNfX4/du3dj9+7dAIDKykrs3r0b3377Lerr67FgwQJ88sknOHjwILZt24YJEyaga9euuOWWWwAAaWlpmD59OubPn4+tW7fiiy++wN13340BAwa4dmdF0owZwaeD7HYZpwlW18YXXyMmqiNEGRnmbg0PZQeaqsOHzY0jIqLWxdJk5/PPP8cVV1yBK664AgAwb948XHHFFXj00Udht9uxZ88e5OXloV+/fpg6dSr69euHTz75BKmpqa5jFBUVYdKkSZg8eTKuu+46tG/fHm+//TbsFmzRSUwE5s0LHDNvnozTBKprE4j3iInRnWChisR5jx9Xi3vzTWD2bLkGqbHR+PmIiCi+RM1uLCupruZWtWgRsGyZ5xoSu10mOoWF6q9RUVwsR2q0XV2HD/te22LWritvwXaTAbLicijnfe014O679b0m2PebiIhin+rnd0yt2YkVhYVye3lRETBrlrw/c8b/B29pKfD008YW2GojJqFUPg6F3S6TrUDuuCO083r3DFPhdAJPPSWTSCIiat04sgPzR3b0UBkZ8cXfSI2RUaVQRGJkx+j3CJDnPHPGc+qQiIjiA0d2YoTKTiNv/kZq/I0QOZ3ycV8d10MViZ1S2qiVnjVNGqcTWLHC+LmJiCj2MdmxmJFdSr7q46jU2QlHLZpI7MYCmvt1ZWfrf61q/SMiIopPUV1BuTVQ3aVUVBS4grKeejcjRhi+3BYiuQvMu1/Xxx8Df/pT8Nep1j8iIqL4xDU7iI41O6Huonr9dVlhORht95ZZrNoFBsjt5e3bBx6t4podIqL4xTU7McKsXVThGGFxOoFt22QitW2b76TCql1ggExgxo8PHDN+PBMdIqLWjslOFNDWo3hvsdbTuypYJWabTe6KGjZM7ZpKS+WIzciRgXtymXX9RjidQEVF4Jhdu9gzi4ioteM0FqydxnLndDavRwnU3dwfrTM44DmlpCVAqomHvw7jwY4T6vXrtW2bTMKCKSszd50SERFFB05jxSC7XX4oG+1dZcYISyS6mJslUjvBiIgotnE3VgzzNZLivWNJ7wiL0V1dpaUySXJ/bXa2XM8Trmksq/qBERFRbGGyE6OCJRdGp22MjJb4m/Y6fFg+Hq51O9o6pWA7wVTXKRERUXziNFYM0pIL7xEYLbkIpVKy3tESK6e9rNwJRkREsYPJTowJd3Khd1eXnmmvcLBqJxgREcUOJjsxJtzJhd7RkmhYJJyfDxw8KHddFRfL+8pKJjpERCRxzU6MiURyoY2W+FoT9MwznklEtCwS1nayEREReWOyE2MilVyo7uriImEiIop2THZiTCSTC5XREm3a67bb5Ll9FTPkImEiIrIS1+zEmGjcgcRFwkREFM3YLgLR0y5CD191dnJyWq6piaRIt4sgIqLWTfXzm8kOYjPZAZhcEBFR66b6+c01OzGMO5CIiIiC45odIiIiimsc2SG/9E6TcVqNiIiiEZMd8klvF3Mrup4TERGp4DQWtaC30Wg4G5MSERGFiruxELu7scLB6QR69/bff0srWlhZKaeo9MYTERGZRfXzmyM75EFvo1Gru54TEREFw2SHPOhtNBoNXc+JiIgCYbJDHvQ2Go2WrudERET+MNkhD1qjUe++WxqbTbal0BqN6o0nIiKKNCY75EFvo9FobExKRETkjskOtaC3izm7nhMRUTSzNNn58MMPMWHCBGRlZcFms2H9+vUezwshsHjxYmRlZSE5ORkjRozAvn37PGIcDgdmz56Nrl27IiUlBRMnTsShQNuDSEl+PnDwIFBWBhQXy/vKSv+Ji954IiKiSLE02fn+++9x+eWXY/ny5T6fLywsxLJly7B8+XKUl5cjMzMTY8aMwenTp10xBQUFWLduHUpKSrBjxw7U19dj/PjxcDqdkXobcUtrNDplirwPNhWlN56IiCgSoqaooM1mw7p16zBp0iQAclQnKysLBQUFePDBBwHIUZyMjAz84Q9/wP3334/a2lp069YNq1evxu233w4AOHLkCHJycvC3v/0NN9xwg9K5WVSQiIgo9sR8UcHKykpUV1dj7NixrseSkpIwfPhw7Ny5EwBQUVGBc+fOecRkZWUhNzfXFeOLw+FAXV2dx42IiIjiU9QmO9XV1QCAjIwMj8czMjJcz1VXVyMxMRGdO3f2G+PL0qVLkZaW5rrl5OSYfPVEREQULaI22dHYvPYzCyFaPOYtWMxDDz2E2tpa162qqsqUayUiIqLoE7XJTmZmJgC0GKGpqalxjfZkZmaisbERJ0+e9BvjS1JSEjp27OhxIyIiovgUtclOnz59kJmZic2bN7sea2xsxPbt2zF06FAAwKBBg5CQkOARc/ToUezdu9cVQ0RERK1bWytPXl9fj2+++cb1dWVlJXbv3o0uXbqgZ8+eKCgowJIlS9C3b1/07dsXS5YsQfv27XHnnXcCANLS0jB9+nTMnz8f6enp6NKlCxYsWIABAwZg9OjRVr0tIiIiiiKWJjuff/45Ro4c6fp63rx5AICpU6fi5ZdfxqJFi9DQ0IAZM2bg5MmTuPrqq7Fp0yakpqa6XlNUVIS2bdti8uTJaGhowKhRo/Dyyy/DziIvREREhCiqs2Ml1tkhIiKKPaqf35aO7EQLLd9jvR0iIqLYoX1uBxu3YbIDuNpPsN4OERFR7Dl9+jTS0tL8Ps9pLABNTU04cuQIUlNTg9bw0aOurg45OTmoqqpqNdNjfM98z/GK75nvOV7F8nsWQuD06dPIyspCmzb+N5hzZAdAmzZtkJ2dHbbjt8ZaPnzPrQPfc+vA99w6xOp7DjSio4naOjtEREREZmCyQ0RERHGNyU4YJSUl4Xe/+x2SkpKsvpSI4XtuHfieWwe+59ahNbxnLlAmIiKiuMaRHSIiIoprTHaIiIgorjHZISIiorjGZIeIiIjiGpOdMPnwww8xYcIEZGVlwWazYf369VZfUlgtXboUQ4YMQWpqKrp3745Jkybh66+/tvqywmrlypUYOHCgqxDXtddei/fee8/qy4qYpUuXwmazoaCgwOpLCavFixfDZrN53DIzM62+rLA7fPgw7r77bqSnp6N9+/b48Y9/jIqKCqsvK2x69+7d4udss9kwc+ZMqy8tbM6fP4/f/va36NOnD5KTk3HhhRfi97//PZqamqy+NNOxgnKYfP/997j88svx85//HLfeeqvVlxN227dvx8yZMzFkyBCcP38ejzzyCMaOHYuvvvoKKSkpVl9eWGRnZ+PJJ5/ExRdfDAB45ZVXkJeXhy+++AL9+/e3+OrCq7y8HC+++CIGDhxo9aVERP/+/bFlyxbX13a73cKrCb+TJ0/iuuuuw8iRI/Hee++he/fuOHDgADp16mT1pYVNeXk5nE6n6+u9e/dizJgx+NnPfmbhVYXXH/7wBzz//PN45ZVX0L9/f3z++ef4+c9/jrS0NMyZM8fqyzMVk50wGTduHMaNG2f1ZUTMxo0bPb5etWoVunfvjoqKCvzkJz+x6KrCa8KECR5fP/HEE1i5ciU+/fTTuE526uvrcdddd+HPf/4zHn/8casvJyLatm3bKkZzNH/4wx+Qk5ODVatWuR7r3bu3dRcUAd26dfP4+sknn8RFF12E4cOHW3RF4ffJJ58gLy8PN998MwD5M3799dfx+eefW3xl5uM0FoVFbW0tAKBLly4WX0lkOJ1OlJSU4Pvvv8e1115r9eWE1cyZM3HzzTdj9OjRVl9KxOzfvx9ZWVno06cP7rjjDvzrX/+y+pLCasOGDRg8eDB+9rOfoXv37rjiiivw5z//2erLipjGxkasWbMGv/jFL0xtDh1trr/+emzduhX//Oc/AQD/+Mc/sGPHDtx0000WX5n5OLJDphNCYN68ebj++uuRm5tr9eWE1Z49e3Dttdfi7Nmz6NChA9atW4fLLrvM6ssKm5KSEuzatQvl5eVWX0rEXH311Xj11VfRr18/HDt2DI8//jiGDh2Kffv2IT093erLC4t//etfWLlyJebNm4eHH34Yn332GX79618jKSkJ9957r9WXF3br16/HqVOnMG3aNKsvJawefPBB1NbW4tJLL4XdbofT6cQTTzyBKVOmWH1ppmOyQ6abNWsWvvzyS+zYscPqSwm7Sy65BLt378apU6ewdu1aTJ06Fdu3b4/LhKeqqgpz5szBpk2b0K5dO6svJ2Lcp6MHDBiAa6+9FhdddBFeeeUVzJs3z8IrC5+mpiYMHjwYS5YsAQBcccUV2LdvH1auXNkqkp2XXnoJ48aNQ1ZWltWXElZvvPEG1qxZg+LiYvTv3x+7d+9GQUEBsrKyMHXqVKsvz1RMdshUs2fPxoYNG/Dhhx8iOzvb6ssJu8TERNcC5cGDB6O8vBzPPvssXnjhBYuvzHwVFRWoqanBoEGDXI85nU58+OGHWL58ORwOR9wv3AWAlJQUDBgwAPv377f6UsKmR48eLRL2H/3oR1i7dq1FVxQ5//73v7FlyxaUlpZafSlht3DhQvzmN7/BHXfcAUAm8//+97+xdOlSJjtEvgghMHv2bKxbtw7btm1Dnz59rL4kSwgh4HA4rL6MsBg1ahT27Nnj8djPf/5zXHrppXjwwQdbRaIDAA6HA//3f/+HYcOGWX0pYXPddde1KB3xz3/+E7169bLoiiJH21yhLdqNZ2fOnEGbNp5Ld+12O7eek7r6+np88803rq8rKyuxe/dudOnSBT179rTwysJj5syZKC4uxltvvYXU1FRUV1cDANLS0pCcnGzx1YXHww8/jHHjxiEnJwenT59GSUkJtm3b1mJnWrxITU1tsQYrJSUF6enpcb02a8GCBZgwYQJ69uyJmpoaPP7446irq4u7v3zdzZ07F0OHDsWSJUswefJkfPbZZ3jxxRfx4osvWn1pYdXU1IRVq1Zh6tSpaNs2/j8eJ0yYgCeeeAI9e/ZE//798cUXX2DZsmX4xS9+YfWlmU9QWJSVlQkALW5Tp061+tLCwtd7BSBWrVpl9aWFzS9+8QvRq1cvkZiYKLp16yZGjRolNm3aZPVlRdTw4cPFnDlzrL6MsLr99ttFjx49REJCgsjKyhL5+fli3759Vl9W2L399tsiNzdXJCUliUsvvVS8+OKLVl9S2L3//vsCgPj666+tvpSIqKurE3PmzBE9e/YU7dq1ExdeeKF45JFHhMPhsPrSTGcTQghr0iwiIiKi8GOdHSIiIoprTHaIiIgorjHZISIiorjGZIeIiIjiGpMdIiIiimtMdoiIiCiuMdkhIiKiuMZkh4iIiOIakx0iijkvv/wyOnXqZOk1jBgxAgUFBZZeAxGpYQVlIjLNtGnT8Morr7R4/IYbbjC1Z1hDQwNOnz6N7t27m3ZMvb777jskJCQgNTXVsmsgIjXx3+mMiCLqxhtvxKpVqzweS0pKMvUcycnJljeY7dKli6XnJyJ1nMYiIlMlJSUhMzPT49a5c2fX8zabDX/5y19wyy23oH379ujbty82bNjgcYwNGzagb9++SE5OxsiRI/HKK6/AZrPh1KlTAFpOYy1evBg//vGPsXr1avTu3RtpaWm44447cPr0aVeMEAKFhYW48MILkZycjMsvvxxvvvlmwPeyYsUK9O3bF+3atUNGRgZuu+0213Pu01jbtm2DzWZrcZs2bZor/u2338agQYPQrl07XHjhhXjsscdw/vx5nd9dIjKCyQ4RRdxjjz2GyZMn48svv8RNN92Eu+66C9999x0A4ODBg7jtttswadIk7N69G/fffz8eeeSRoMc8cOAA1q9fj3feeQfvvPMOtm/fjieffNL1/G9/+1usWrUKK1euxL59+zB37lzcfffd2L59u8/jff755/j1r3+N3//+9/j666+xceNG/OQnP/EZO3ToUBw9etR1++CDD9CuXTtX/Pvvv4+7774bv/71r/HVV1/hhRdewMsvv4wnnnhC77eOiIywtOc6EcWVqVOnCrvdLlJSUjxuv//9710xAMRvf/tb19f19fXCZrOJ9957TwghxIMPPihyc3M9jvvII48IAOLkyZNCCCFWrVol0tLSXM//7ne/E+3btxd1dXWuxxYuXCiuvvpq1znatWsndu7c6XHc6dOniylTpvh8L2vXrhUdO3b0OKa74cOHizlz5rR4/D//+Y+46KKLxIwZM1yPDRs2TCxZssQjbvXq1aJHjx4+j01E5uKaHSIy1ciRI7Fy5UqPx7zXtwwcOND175SUFKSmpqKmpgYA8PXXX2PIkCEe8VdddVXQ8/bu3dtjsXCPHj1cx/zqq69w9uxZjBkzxuM1jY2NuOKKK3web8yYMejVqxcuvPBC3HjjjbjxxhtdU2/+nDt3Drfeeit69uyJZ5991vV4RUUFysvLPUZynE4nzp49izNnzgQ8JhGFjskOEZkqJSUFF198ccCYhIQEj69tNhuampoAyLU1NpvN43mhsGk00DG1+3fffRcXXHCBR5y/xdOpqanYtWsXtm3bhk2bNuHRRx/F4sWLUV5e7nfb+3/913/h22+/RXl5Odq2bf7fa1NTEx577DHk5+e3eE27du2CvjciCg2THSKKKpdeein+9re/eTz2+eefh3TMyy67DElJSfj2228xfPhw5de1bdsWo0ePxujRo/G73/0OnTp1wgcffOAzaVm2bBneeOMNfPLJJ0hPT/d47sorr8TXX38dNAkkovBgskNEpnI4HKiurvZ4rG3btujatavS6++//34sW7YMDz74IKZPn47du3fj5ZdfBoAWIz6qUlNTsWDBAsydOxdNTU24/vrrUVdXh507d6JDhw6YOnVqi9e88847+Ne//oWf/OQn6Ny5M/72t7+hqakJl1xySYvYLVu2YNGiRfjTn/6Erl27ut5/cnIy0tLS8Oijj2L8+PHIycnBz372M7Rp0wZffvkl9uzZg8cff9zQeyIiddyNRUSm2rhxI3r06OFxu/7665Vf36dPH7z55psoLS3FwIEDsXLlStdurFDq9fy///f/8Oijj2Lp0qX40Y9+hBtuuAFvv/02+vTp4zO+U6dOKC0txU9/+lP86Ec/wvPPP4/XX38d/fv3bxG7Y8cOOJ1OPPDAAx7ve86cOQBkUcV33nkHmzdvxpAhQ3DNNddg2bJl6NWrl+H3Q0TqWEGZiKLeE088geeffx5VVVVWXwoRxSBOYxFR1FmxYgWGDBmC9PR0fPzxx3jqqacwa9Ysqy+LiGIUkx0iijr79+/H448/ju+++w49e/bE/Pnz8dBDD1l9WUQUoziNRURERHGNC5SJiIgorjHZISIiorjGZIeIiIjiGpMdIiIiimtMdoiIiCiuMdkhIiKiuMZkh4iIiOIakx0iIiKKa/8/MyiPoFMi4GAAAAAASUVORK5CYII=\n",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n",
|
||
"plt.xlabel(\"Engine size\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2 id=\"multiple_regression_model\">Multiple Regression Model</h2>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"In reality, there are multiple variables that impact the co2emission. When more than one independent variable is present, the process is called multiple linear regression. An example of multiple linear regression is predicting co2emission using the features FUELCONSUMPTION_COMB, EngineSize and Cylinders of cars. The good thing here is that multiple linear regression model is the extension of the simple linear regression model.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/utils/validation.py:37: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n",
|
||
" LARGE_SPARSE_SUPPORTED = LooseVersion(scipy_version) >= '0.14.0'\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Coefficients: [[10.35812428 7.84477461 9.62504321]]\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:35: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" eps=np.finfo(np.float).eps,\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:597: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" eps=np.finfo(np.float).eps, copy_X=True, fit_path=True,\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:836: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" eps=np.finfo(np.float).eps, copy_X=True, fit_path=True,\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:862: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" eps=np.finfo(np.float).eps, positive=False):\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1097: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" max_n_alphas=1000, n_jobs=None, eps=np.finfo(np.float).eps,\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1344: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" max_n_alphas=1000, n_jobs=None, eps=np.finfo(np.float).eps,\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1480: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" eps=np.finfo(np.float).eps, copy_X=True, positive=False):\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:152: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" precompute=False, eps=np.finfo(np.float).eps,\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:320: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" eps=np.finfo(np.float).eps, random_state=None,\n",
|
||
"/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:580: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
|
||
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
|
||
" eps=4 * np.finfo(np.float).eps, n_jobs=None,\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn import linear_model\n",
|
||
"regr = linear_model.LinearRegression()\n",
|
||
"x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n",
|
||
"y = np.asanyarray(train[['CO2EMISSIONS']])\n",
|
||
"regr.fit (x, y)\n",
|
||
"# The coefficients\n",
|
||
"print ('Coefficients: ', regr.coef_)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"As mentioned before, __Coefficient__ and __Intercept__ are the parameters of the fitted line. \n",
|
||
"Given that it is a multiple linear regression model with 3 parameters and that the parameters are the intercept and coefficients of the hyperplane, sklearn can estimate them from our data. Scikit-learn uses plain Ordinary Least Squares method to solve this problem.\n",
|
||
"\n",
|
||
"#### Ordinary Least Squares (OLS)\n",
|
||
"OLS is a method for estimating the unknown parameters in a linear regression model. OLS chooses the parameters of a linear function of a set of explanatory variables by minimizing the sum of the squares of the differences between the target dependent variable and those predicted by the linear function. In other words, it tries to minimizes the sum of squared errors (SSE) or mean squared error (MSE) between the target variable (y) and our predicted output ($\\hat{y}$) over all samples in the dataset.\n",
|
||
"\n",
|
||
"OLS can find the best parameters using of the following methods:\n",
|
||
"* Solving the model parameters analytically using closed-form equations\n",
|
||
"* Using an optimization algorithm (Gradient Descent, Stochastic Gradient Descent, Newton’s Method, etc.)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2 id=\"prediction\">Prediction</h2>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Mean Squared Error (MSE) : 539.55\n",
|
||
"Variance score: 0.86\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"y_hat= regr.predict(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n",
|
||
"x = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n",
|
||
"y = np.asanyarray(test[['CO2EMISSIONS']])\n",
|
||
"print(\"Mean Squared Error (MSE) : %.2f\"\n",
|
||
" % np.mean((y_hat - y) ** 2))\n",
|
||
"\n",
|
||
"# Explained variance score: 1 is perfect prediction\n",
|
||
"print('Variance score: %.2f' % regr.score(x, y))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"__Explained variance regression score:__ \n",
|
||
"Let $\\hat{y}$ be the estimated target output, y the corresponding (correct) target output, and Var be the Variance (the square of the standard deviation). Then the explained variance is estimated as follows:\n",
|
||
"\n",
|
||
"$\\texttt{explainedVariance}(y, \\hat{y}) = 1 - \\frac{Var\\{ y - \\hat{y}\\}}{Var\\{y\\}}$ \n",
|
||
"The best possible score is 1.0, the lower values are worse.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2 id=\"practice\">Practice</h2>\n",
|
||
"Try to use a multiple linear regression with the same dataset, but this time use FUELCONSUMPTION_CITY and FUELCONSUMPTION_HWY instead of FUELCONSUMPTION_COMB. Does it result in better accuracy?\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Coefficients: [[10.36732914 7.75178526 5.55573159 3.98216814]]\n",
|
||
"Residuel sum of squares: 539.21\n",
|
||
"Variance score: 0.86\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# write your code here\n",
|
||
"\n",
|
||
"regr = linear_model.LinearRegression()\n",
|
||
"x = np.asanyarray(train[['ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_CITY', 'FUELCONSUMPTION_HWY']])\n",
|
||
"y = np.asanyarray(train[['CO2EMISSIONS']])\n",
|
||
"regr.fit (x, y)\n",
|
||
"print ('Coefficients: ', regr.coef_)\n",
|
||
"y_ = regr.predict(test[['ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_CITY', 'FUELCONSUMPTION_HWY']])\n",
|
||
"x = np.asanyarray(test[['ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_CITY', 'FUELCONSUMPTION_HWY']])\n",
|
||
"y = np.asanyarray(test[['CO2EMISSIONS']])\n",
|
||
"print(\"Residuel sum of squares: %.2f\"% np.mean((y_ - y) ** 2))\n",
|
||
"print(\"Variance score: %.2f\" % regr.score(x,y))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<details><summary>Click here for the solution</summary>\n",
|
||
"\n",
|
||
"```python\n",
|
||
"regr = linear_model.LinearRegression()\n",
|
||
"x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n",
|
||
"y = np.asanyarray(train[['CO2EMISSIONS']])\n",
|
||
"regr.fit (x, y)\n",
|
||
"print ('Coefficients: ', regr.coef_)\n",
|
||
"y_= regr.predict(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n",
|
||
"x = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n",
|
||
"y = np.asanyarray(test[['CO2EMISSIONS']])\n",
|
||
"print(\"Residual sum of squares: %.2f\"% np.mean((y_ - y) ** 2))\n",
|
||
"print('Variance score: %.2f' % regr.score(x, y))\n",
|
||
"\n",
|
||
"```\n",
|
||
"\n",
|
||
"</details>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Thank you for completing this lab!\n",
|
||
"\n",
|
||
"\n",
|
||
"## Author\n",
|
||
"\n",
|
||
"Saeed Aghabozorgi\n",
|
||
"\n",
|
||
"\n",
|
||
"### Other Contributors\n",
|
||
"\n",
|
||
"<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>\n",
|
||
"\n",
|
||
"## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\n",
|
||
" \n",
|
||
"<!--\n",
|
||
"\n",
|
||
"## Change Log\n",
|
||
"\n",
|
||
"\n",
|
||
"| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n",
|
||
"|---|---|---|---|\n",
|
||
"| 2020-11-03 | 2.1 | Lakshmi | Made changes in URL |\n",
|
||
"| 2020-08-27 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n",
|
||
"| | | | |\n",
|
||
"| | | | |\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"--!>\n"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python",
|
||
"language": "python",
|
||
"name": "conda-env-python-py"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.7.12"
|
||
},
|
||
"prev_pub_hash": "c1170d4cb1c9bbce7dbbef74b645fc6b265a5aaf4ce89c4ac861feed8769ed99"
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|