1106 lines
119 KiB
Plaintext
1106 lines
119 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",
|
||
"# Simple 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 simple Linear Regression\n",
|
||
"* Create a model, train it, test it and use the model\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Importing Needed packages\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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": [
|
||
"In case you're working **locally** uncomment the below line. \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#!curl https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%202/data/FuelConsumptionCo2.csv -o FuelConsumptionCo2.csv"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"\n",
|
||
"## Understanding the Data\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",
|
||
"- **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": [
|
||
"## Reading the data in\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"df = pd.read_csv(\"FuelConsumption.csv\")\n",
|
||
"\n",
|
||
"# take a look at the dataset\n",
|
||
"df.head()\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Data Exploration\n",
|
||
"Let's first have a descriptive exploration on our data.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"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>ENGINESIZE</th>\n",
|
||
" <th>CYLINDERS</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>count</th>\n",
|
||
" <td>1067.0</td>\n",
|
||
" <td>1067.000000</td>\n",
|
||
" <td>1067.000000</td>\n",
|
||
" <td>1067.000000</td>\n",
|
||
" <td>1067.000000</td>\n",
|
||
" <td>1067.000000</td>\n",
|
||
" <td>1067.000000</td>\n",
|
||
" <td>1067.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>2014.0</td>\n",
|
||
" <td>3.346298</td>\n",
|
||
" <td>5.794752</td>\n",
|
||
" <td>13.296532</td>\n",
|
||
" <td>9.474602</td>\n",
|
||
" <td>11.580881</td>\n",
|
||
" <td>26.441425</td>\n",
|
||
" <td>256.228679</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>1.415895</td>\n",
|
||
" <td>1.797447</td>\n",
|
||
" <td>4.101253</td>\n",
|
||
" <td>2.794510</td>\n",
|
||
" <td>3.485595</td>\n",
|
||
" <td>7.468702</td>\n",
|
||
" <td>63.372304</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>2014.0</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" <td>4.600000</td>\n",
|
||
" <td>4.900000</td>\n",
|
||
" <td>4.700000</td>\n",
|
||
" <td>11.000000</td>\n",
|
||
" <td>108.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>2014.0</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>10.250000</td>\n",
|
||
" <td>7.500000</td>\n",
|
||
" <td>9.000000</td>\n",
|
||
" <td>21.000000</td>\n",
|
||
" <td>207.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>2014.0</td>\n",
|
||
" <td>3.400000</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>12.600000</td>\n",
|
||
" <td>8.800000</td>\n",
|
||
" <td>10.900000</td>\n",
|
||
" <td>26.000000</td>\n",
|
||
" <td>251.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>2014.0</td>\n",
|
||
" <td>4.300000</td>\n",
|
||
" <td>8.000000</td>\n",
|
||
" <td>15.550000</td>\n",
|
||
" <td>10.850000</td>\n",
|
||
" <td>13.350000</td>\n",
|
||
" <td>31.000000</td>\n",
|
||
" <td>294.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>2014.0</td>\n",
|
||
" <td>8.400000</td>\n",
|
||
" <td>12.000000</td>\n",
|
||
" <td>30.200000</td>\n",
|
||
" <td>20.500000</td>\n",
|
||
" <td>25.800000</td>\n",
|
||
" <td>60.000000</td>\n",
|
||
" <td>488.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" MODELYEAR ENGINESIZE CYLINDERS FUELCONSUMPTION_CITY \\\n",
|
||
"count 1067.0 1067.000000 1067.000000 1067.000000 \n",
|
||
"mean 2014.0 3.346298 5.794752 13.296532 \n",
|
||
"std 0.0 1.415895 1.797447 4.101253 \n",
|
||
"min 2014.0 1.000000 3.000000 4.600000 \n",
|
||
"25% 2014.0 2.000000 4.000000 10.250000 \n",
|
||
"50% 2014.0 3.400000 6.000000 12.600000 \n",
|
||
"75% 2014.0 4.300000 8.000000 15.550000 \n",
|
||
"max 2014.0 8.400000 12.000000 30.200000 \n",
|
||
"\n",
|
||
" FUELCONSUMPTION_HWY FUELCONSUMPTION_COMB FUELCONSUMPTION_COMB_MPG \\\n",
|
||
"count 1067.000000 1067.000000 1067.000000 \n",
|
||
"mean 9.474602 11.580881 26.441425 \n",
|
||
"std 2.794510 3.485595 7.468702 \n",
|
||
"min 4.900000 4.700000 11.000000 \n",
|
||
"25% 7.500000 9.000000 21.000000 \n",
|
||
"50% 8.800000 10.900000 26.000000 \n",
|
||
"75% 10.850000 13.350000 31.000000 \n",
|
||
"max 20.500000 25.800000 60.000000 \n",
|
||
"\n",
|
||
" CO2EMISSIONS \n",
|
||
"count 1067.000000 \n",
|
||
"mean 256.228679 \n",
|
||
"std 63.372304 \n",
|
||
"min 108.000000 \n",
|
||
"25% 207.000000 \n",
|
||
"50% 251.000000 \n",
|
||
"75% 294.000000 \n",
|
||
"max 488.000000 "
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# summarize the data\n",
|
||
"df.describe()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's select some features to explore more.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"cdf = df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB','CO2EMISSIONS']]\n",
|
||
"cdf.head(9)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can plot each of these features:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"viz = cdf[['CYLINDERS','ENGINESIZE','CO2EMISSIONS','FUELCONSUMPTION_COMB']]\n",
|
||
"viz.hist()\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now, let's plot each of these features against the Emission, to see how linear their relationship is:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"plt.scatter(cdf.FUELCONSUMPTION_COMB, cdf.CO2EMISSIONS, color='blue')\n",
|
||
"plt.xlabel(\"FUELCONSUMPTION_COMB\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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": [
|
||
"## Practice\n",
|
||
"Plot __CYLINDER__ vs the Emission, to see how linear is their relationship is:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIEElEQVR4nO3df1xUdb4/8Nc4wAgIIz+SmQn8kaJtgV1TsygLFTVT0cgwdUvL2rz+yAkR0243awsKv6K2pmY/tHRd2i38sZu5aiXJta6Ilw3dNsmwUJmlDAZRZGg43z9OTg0MMMOcmXOYeT0fj3nAfM6Lmc804bz5nM/5fFSCIAggIiIi8lHd5O4AERERkSex2CEiIiKfxmKHiIiIfBqLHSIiIvJpLHaIiIjIp7HYISIiIp/GYoeIiIh8WoDcHVCC5uZmnD9/HmFhYVCpVHJ3h4iIiJwgCAIuXrwIg8GAbt3aHr9hsQPg/PnziIuLk7sbRERE1AmVlZWIjY1t8ziLHQBhYWEAxP9Y4eHhMveGiIiInFFXV4e4uDjb53hbWOwAtlNX4eHhLHaIiIi6mI6moMg6QXnlypVQqVR2N51OZzsuCAJWrlwJg8GA4OBgJCcn4+TJk3aP0djYiEWLFiE6OhqhoaFITU3F2bNnvf1SiIiISKFkvxrrxhtvRFVVle1WVlZmO5abm4u8vDysX78excXF0Ol0GDt2LC5evGjLGI1G7Ny5E/n5+SgqKkJ9fT0mTZoEq9Uqx8shIiIihZH9NFZAQIDdaM5VgiBg7dq1ePrpp5GWlgYAePvttxETE4MdO3bg8ccfh9lsxptvvolt27YhJSUFALB9+3bExcXh4MGDGD9+vMPnbGxsRGNjo+1+XV2dB14ZERERKYHsIzvl5eUwGAzo168fHnjgAXzzzTcAgIqKCphMJowbN86W1Wg0uOuuu3DkyBEAQElJCZqamuwyBoMBCQkJtowjOTk50Gq1thuvxCIiIvJdshY7I0aMwDvvvIO///3veP3112EymZCUlIQLFy7AZDIBAGJiYux+JiYmxnbMZDIhKCgIERERbWYcWb58Ocxms+1WWVkp8SsjIiIipZD1NNaECRNs3ycmJuK2225D//798fbbb+PWW28F0HqGtSAIHc667iij0Wig0Wjc6DkRERF1FbKfxvq10NBQJCYmory83DaPp+UITXV1tW20R6fTwWKxoKamps0MERER+TdFFTuNjY348ssvodfr0a9fP+h0Ohw4cMB23GKxoLCwEElJSQCAoUOHIjAw0C5TVVWFEydO2DJERETk32Q9jZWZmYnJkyejd+/eqK6uxgsvvIC6ujrMnj0bKpUKRqMR2dnZiI+PR3x8PLKzsxESEoKZM2cCALRaLebOnYslS5YgKioKkZGRyMzMRGJiou3qLCIiIvJvshY7Z8+exYwZM/DDDz/gmmuuwa233orPP/8cffr0AQBkZWWhoaEB8+fPR01NDUaMGIH9+/fbLQu9Zs0aBAQEID09HQ0NDRgzZgy2bt0KtVot18siIiKZWK3A4cNAVRWg1wMjRwL8OCCVIAiC3J2QW11dHbRaLcxmM7eLICLqogoKgMWLgV8voh8bC6xbB/y8XBv5GGc/vxU1Z4eIiKgzCgqAadPsCx0AOHdObC8okKdfpAwsdoiIqEuzWsURHUfnKa62GY1ijvwTix0iIurSDh9uPaLza4IAVFaKOfJPLHaIiKhLq6qSNke+h8UOERF1aXq9tDnyPSx2iIioSxs5Urzqqq1dglQqIC5OzJF/YrFDRERdmlotXl4OtC54rt5fu5br7fgzFjtERNTlpaUB770HXHutfXtsrNjOdXb8m6wrKBMREUklLQ2YMoUrKFNrLHaIiMhnqNVAcrLcvSCl4WksIiIi8mksdoiIiMinsdghIiIin8Zih4iIiHwaix0iIiLyaSx2iIiIyKex2CEiIiKfxmKHiIiIfBqLHSIiIvJpLHaIiIjIp7HYISIiIp/GYoeIiIh8GosdIiIi8mksdoiIiMinsdghIiIin8Zih4iIiHwaix0iIiLyaSx2iIiIyKex2CEiIiKfxmKHiIiIfBqLHSIiIvJpLHaIiIjIp7HYISIiIp+mmGInJycHKpUKRqPR1jZnzhyoVCq726233mr3c42NjVi0aBGio6MRGhqK1NRUnD171su9JyIiIqVSRLFTXFyMzZs3Y/Dgwa2O3X333aiqqrLd9u7da3fcaDRi586dyM/PR1FREerr6zFp0iRYrVZvdZ+IiIgUTPZip76+HrNmzcLrr7+OiIiIVsc1Gg10Op3tFhkZaTtmNpvx5ptvYvXq1UhJScGQIUOwfft2lJWV4eDBg958GURERKRQshc7CxYswMSJE5GSkuLw+KFDh9CrVy8MHDgQjz32GKqrq23HSkpK0NTUhHHjxtnaDAYDEhIScOTIkTafs7GxEXV1dXY3IiIi8k0Bcj55fn4+jh8/juLiYofHJ0yYgPvvvx99+vRBRUUFnnnmGYwePRolJSXQaDQwmUwICgpqNSIUExMDk8nU5vPm5OTgueeek/S1EBERkTLJVuxUVlZi8eLF2L9/P7p37+4wM336dNv3CQkJGDZsGPr06YMPPvgAaWlpbT62IAhQqVRtHl++fDkyMjJs9+vq6hAXF9eJV0FERERKJ1uxU1JSgurqagwdOtTWZrVa8emnn2L9+vVobGyEWq22+xm9Xo8+ffqgvLwcAKDT6WCxWFBTU2M3ulNdXY2kpKQ2n1uj0UCj0Uj8ioiIiEiJZJuzM2bMGJSVlaG0tNR2GzZsGGbNmoXS0tJWhQ4AXLhwAZWVldDr9QCAoUOHIjAwEAcOHLBlqqqqcOLEiXaLHSIiIvIfso3shIWFISEhwa4tNDQUUVFRSEhIQH19PVauXIn77rsPer0eZ86cwYoVKxAdHY17770XAKDVajF37lwsWbIEUVFRiIyMRGZmJhITE9uc8ExERET+RdYJyu1Rq9UoKyvDO++8g9raWuj1eowaNQrvvvsuwsLCbLk1a9YgICAA6enpaGhowJgxY7B161aHI0NERETkf1SCIAhyd0JudXV10Gq1MJvNCA8Pl7s7RNSFWK3A4cNAVRWg1wMjRwL8W4vIO5z9/FbsyA4RkdIVFACLFwO/3qEmNhZYtw5o54JRIvIy2RcVJCLqigoKgGnT7AsdQLw/bZp4nIiUgcUOEZGLrFZxRKetSQCCABiNYo6I5Mdih4jIRYcPtx7RaamyUswRkfxY7BARuaiyUtocEXkWix0iIhf97/9KmyMiz2KxQ0TkImfn4nDODpEysNghInKRySRtjog8i8UOEZGLdDppc0TkWSx2iIhcNGiQtDki8ixuFwFuF0FErrFYgJCQ9ufkqNXA5ctAUJD3+kXkb5z9/ObIDhGRi4KCgIyM9jMZGSx0iJSCe2MREXVCbq74NS/PfoRHrRYLnavHiUh+PI0FnsYios5raACWLgXKy4H4eGDVKiA4WO5eESmD1SquJF5VBej1wMiR4h8EUuFpLCIiDysoAAYOBF59Fdi/X/w6cCA3ASUCxN+Dvn2BUaOAmTPFr337yvP7wWKHiKgTuOs5Udva+v04d06e3w+exgJPYxGRa6xW8S/U9jYDjYsDKiqkHbIn6go6+v1QqYDYWGl+P3gai4jIQ7jrOVHbOvr9EATv/36w2CEictG330qbI/IlVVXS5qTAYoeIyEW7dkmbI/Iler20OSmw2CEictGlS9LmiHzJyJHinByVyvFxlUqc0zZypPf6xGKHiMhFAwdKmyPyJWo1sG6d+H3Lgufq/bVrvTt5n8UOEZGLnn9e2hyRr0lLA957D7j2Wvv22FixPS3Nu/3hdhFERC5avtz53GuvebYvREqVlgZMmeLZFZSdxWKHiMhFhw5JmyPpWCzAhg3A6dNA//7A/PnckFVOajWQnCx3L1jsEBG5LDBQ2hxJIyur9casmZncmJU4Z4eIyGV9+0qbI/dlZYmbsP660AHE+6tWicfJf7HYISJyUVyctDlyj8Uijui0Jy9PzJF/YrFDROSiQYOkzZF7NmxoPaLTktUq5sg/sdghInLRww9LmyP3nD4tbY58D4sdIiIXPf20tDlyT//+0ubI97DYISJyUXm5tDlyz/z5Ha/dolaLOfJPLHaIiFwUHy9tjtwTFCReXt6ejAyut+PPFFPs5OTkQKVSwWg02toEQcDKlSthMBgQHByM5ORknDx50u7nGhsbsWjRIkRHRyM0NBSpqak4e/asl3tPRP7kpZekzZH7cnPF1XodmTKF6+z4O0UUO8XFxdi8eTMGDx5s156bm4u8vDysX78excXF0Ol0GDt2LC5evGjLGI1G7Ny5E/n5+SgqKkJ9fT0mTZoEa0dT84mIOunYMWlz5L6CAmDPntbtKpXYXlDg/T6Rcshe7NTX12PWrFl4/fXXERERYWsXBAFr167F008/jbS0NCQkJODtt9/G5cuXsWPHDgCA2WzGm2++idWrVyMlJQVDhgzB9u3bUVZWhoMHD8r1kojIx1VVSZsj91itwOLFgCC0Pna1zWjs+PJ08l2yFzsLFizAxIkTkZKSYtdeUVEBk8mEcePG2do0Gg3uuusuHDlyBABQUlKCpqYmu4zBYEBCQoIt40hjYyPq6ursbkREztLrpc2Rew4fBtqbvSAIQGWlmCP/JOveWPn5+Th+/DiKi4tbHTOZTACAmJgYu/aYmBh8++23tkxQUJDdiNDVzNWfdyQnJwfPPfecu90nIj+VlAR06wY0N7ed6dZNzJHncaSNOiLbyE5lZSUWL16M7du3o3v37m3mVCqV3X1BEFq1tdRRZvny5TCbzbZbZWWla50nIr92+HD7hQ4gHudIgndwpE256uuBe+8FBg8Wv9bXy9MP2YqdkpISVFdXY+jQoQgICEBAQAAKCwvxyiuvICAgwDai03KEprq62nZMp9PBYrGgpqamzYwjGo0G4eHhdjciImcdOiRtjtwzciQQGytORnZEpRL3KRs50rv98ne33AKEhQG7dgFlZeLXsDCx3dtkK3bGjBmDsrIylJaW2m7Dhg3DrFmzUFpaiuuuuw46nQ4HDhyw/YzFYkFhYSGSfh4bHjp0KAIDA+0yVVVVOHHihC1DRES+Ta0G1q0Tv29Z8Fy9v3ZtxwsPknRuuQVwMEMFgNju7YJHtjk7YWFhSEhIsGsLDQ1FVFSUrd1oNCI7Oxvx8fGIj49HdnY2QkJCMHPmTACAVqvF3LlzsWTJEkRFRSEyMhKZmZlITExsNeGZiEgqycnACy84lyPvSEsD3nsPWLQIOH/+l3aDAXjlFfE4eUd9fduFzlXFxWKuRw/v9EnWCcodycrKQkNDA+bPn4+amhqMGDEC+/fvR1hYmC2zZs0aBAQEID09HQ0NDRgzZgy2bt0KNUt4IvKQ5GQgKgq4cKHtTFQUix1v+/xz4N//tm8zmcR2Fjve8+CDzud27vRsX65SCYKjlQn8S11dHbRaLcxmM+fvEJFTCgqA++5r+/j77/MD1puysoBVq9o+vnQpV1H2lsGDxTk6HUlMBL74wr3ncvbzW/Z1doiIuqK0NLGgMRjs26+9loWOt1ksQF5e+5m8PDFHnqfEXehZ7BARuaFbi39FO1gZgzxgw4aOV0e2WsUced62bdLmpMBih4ioEwoKgGnTWq/ce/as2M69mLzn9Glpc+SeHj2A4cPbzwwf7r3JyQCLHSIil7W3FxMgtnMvJu9R4mkTf3f0aNsFz/Dh4nFvYrFDROSijvZiArgXkzfNn9/xGjpqtZgj7zl6FLh4EZg6VZyMPHWqeN/bhQ7AYoeIyGXnzkmbI/cEBQEZGe1nMjLEHHmXWi1O2tfrxa9yrQrDYoeIyEXffy9tjtyXmyteXt7yw1St5mXncpk6FQgJAV59Fdi/X/waEiK2exuLHSIiF4WGSpsjaeTmApcvA2vWAAsXil8vX2ahI4epU4Hdux0f273b+wUPFxUEFxUkItcMGODclT39+wNff+35/hApSUODOILTkcuXgeBg956LiwoSEXkIL3UmatvSpdLmpMBih4iIiCRTXi5tTgosdoiIXOTsFSXcj5j8UXy8tDkpsNghInLRk09KmyPyJe1tyNqZnBRY7BARuejKFWlzRL4kOBiYMqX9zJQp7k9OdgWLHSIiF3F7AqL27drVdsEzZYp43Jt46Tl46TkRuaa+HggL6zh38aJ3NzskUpqGBvGqq/JycY7OqlXSjujw0nMiIg954w1pc0S+Sq0W16UaOFD8Ktek/QB5npaIqOtS4qW1REqTlQXk5QFW6y9tmZniPmXeXtWaxQ4RkYtUKmlzRL4mK8vx1VZW6y/t3ix4eBqLiMhFQ4ZImyPyJRaLOKLTnrw8MectLHaIiFz0t79JmyPyJRs22J+6csRqFXPewmKHiMhFZrO0OSJfosS94zhnh4jIRd9/L22OpGO1AocPA1VVgF4PjBzJbTu8TYnrUHFkh4jIRddcI22OpFFQAPTtC4waBcycKX7t21dsJ++ZP7/jAlOtFnPewmKHiMhFly9LmyP3FRQA06YBZ8/at587J7az4PGeoCBg0qT2M5MmiTlvYbFDROSi8+elzZF7rFZg8WLA0X4AV9uMxo4nzZI0rFagpKT9zPHj3n0/WOwQEbmopkbaHLnn8OHWIzq/JghAZaWYI8/r6P0AvP9+sNghInJRSIi0OXJPVZW0OXJPRYW0OSmw2CEicpHBIG2O3KPXS5sj97z5prQ5KbDYISJyUe/e0ubIPSNHArGx7Wfi4sQceZ4S16FisUNE5KKkJGlz5B61Ghg6tP3MzTdzvR1v6ddP2pwUWOwQEbmIl54ri8XS8dYcf/ubd/di8mdK/GOAxQ4RkYvWrJE2R+5R4l5M/uzcOWlzUpC12Nm4cSMGDx6M8PBwhIeH47bbbsOHH35oOz5nzhyoVCq726233mr3GI2NjVi0aBGio6MRGhqK1NRUnO3omjciIjdcuSJtjtyjxL2Y/Bm3i2ghNjYWL730Eo4dO4Zjx45h9OjRmDJlCk6ePGnL3H333aiqqrLd9u7da/cYRqMRO3fuRH5+PoqKilBfX49JkybBytWjiMhDeOm5sijxw9WfcbuIFiZPnox77rkHAwcOxMCBA/Hiiy+iR48e+Pzzz20ZjUYDnU5nu0VGRtqOmc1mvPnmm1i9ejVSUlIwZMgQbN++HWVlZTh48KAcL4nI4ywWYO1aYNEi8SvnIXjf1KnS5sg9Svxw9WdBQUBGRvuZjAw/3S7CarUiPz8fly5dwm233WZrP3ToEHr16oWBAwfiscceQ3V1te1YSUkJmpqaMG7cOFubwWBAQkICjhw50uZzNTY2oq6uzu5G1BVkZYmjBU8+CaxfL34NCRHbyXuUeGmtP1Pih6u/y80Fli5tXYSq1WJ7bq53+xPg3adrraysDLfddhuuXLmCHj16YOfOnbjhhhsAABMmTMD999+PPn36oKKiAs888wxGjx6NkpISaDQamEwmBAUFISIiwu4xY2JiYDKZ2nzOnJwcPPfccx59XURSy8oCVq1q3W61/tLu7X9A/BUXsVOeq//v5+XZT1ZWq8VCh78b3pebC7zwgjgx/PRp8TTi/PnyFJ0qQXC0dZr3WCwWfPfdd6itrcX777+PN954A4WFhbaC59eqqqrQp08f5OfnIy0tDTt27MDDDz+MxsZGu9zYsWPRv39/bNq0yeFzNjY22v1MXV0d4uLiYDabER4eLu0LJJKAxSKO4LQ3FU2tFi915l+vnrdyJeDM30vPPitmyXssFmV8uJJ31NXVQavVdvj5LfvITlBQEAYMGAAAGDZsGIqLi7Fu3Tq89tprrbJ6vR59+vRBeXk5AECn08FisaCmpsZudKe6uhpJ7VzAr9FooNFoJH4lRJ7jyqW1RqNXuuTX3nrL+RyLHe8KCuLvALWmmDk7VwmC0Gqk5qoLFy6gsrIS+p/HhocOHYrAwEAcOHDAlqmqqsKJEyfaLXaIuhpeWqss7Zwl71SOiDxL1pGdFStWYMKECYiLi8PFixeRn5+PQ4cOYd++faivr8fKlStx3333Qa/X48yZM1ixYgWio6Nx7733AgC0Wi3mzp2LJUuWICoqCpGRkcjMzERiYiJSUlLkfGlEkuKltcrS1CRtjog8S9Zi59///jcefPBBVFVVQavVYvDgwdi3bx/Gjh2LhoYGlJWV4Z133kFtbS30ej1GjRqFd999F2FhYbbHWLNmDQICApCeno6GhgaMGTMGW7duhZqboJAPmT8fyMzseM4OL60lImpN9gnKSuDsBCciObV1NdZVclzO6a+0WsCZFSvCw3n5OZEnOfv5rbg5O0TkmNLWrfBnt9wibY6IPIsjO+DIDnUtvLRWfpGRQE1Nx7mICODHHz3fHyJ/1WUuPSci16jVwH/8BxATIy5ax+lp3tfQIG2OiDyLxQ5RF1JQACxeDJw9+0tbbCywbh2QliZfv/wNdz0n6lo4Z4eoiygoAKZNsy90AODcObG9oECefhERKR2LHaIuwGoVR3QczbC72mY0drzKMhGRP2KxQ9QFHD7cekTn1wQBqKwUc+R50dHS5ojIs1jsEHUBVVXS5sg9vXpJmyMiz2KxQ9QF/LwdnGQ5cs9110mbIyLPYrFD1AWMHCleddWeuDgxR57n7D7D3I+YSBlY7BB1AWo1MGNG+5kHHuCaO97y7bfS5ojIs1jsEHUBVivwpz+1n8nP59VY3lJWJm2OiDyLxQ5RF9DR1VgAr8bypu+/lzZHRJ7V6RWUa2trcfToUVRXV6O5udnu2EMPPeR2x4joF7waS1k0GmlzRORZnSp2/vrXv2LWrFm4dOkSwsLCoFKpbMdUKhWLHSKJ8VJnZUlPB06ccC5HRPLr1GmsJUuW4JFHHsHFixdRW1uLmpoa2+1HbvFLRD6uuFjaHBF5VqeKnXPnzuGJJ55ASEiI1P0hIgfOn5c2R+755htpc0TkWZ0qdsaPH49jx45J3RciasNnn0mbI/fU1UmbIyLP6tScnYkTJ2Lp0qX45z//icTERAQGBtodT01NlaRzRCTiyI6y/PCDtDki8qxOFTuPPfYYAOD5559vdUylUsHKxT6IJBUWJm2O3NPiAlS3c0TkWZ06jdXc3NzmjYUOkfRmzZI2R+7p2VPaHBF5FhcVJOoCWpwpdjtH7vn3v6XNEZFndbrYKSwsxOTJkzFgwADEx8cjNTUVh7l8K5FHcM4OEVHndarY2b59O1JSUhASEoInnngCCxcuRHBwMMaMGYMdO3ZI3Uciv/e//yttjojIn3RqgvKLL76I3NxcPPnkk7a2xYsXIy8vD7///e8xc+ZMyTpIRM5v8Mkpc95xzTXO7Xt1zTWe7wsRdaxTIzvffPMNJk+e3Ko9NTUVFRUVbneKiOyp1dLmyD0xMdLmiMizOlXsxMXF4aOPPmrV/tFHHyEuLs7tThGRveHDpc2Re+bNkzZHRJ7VqdNYS5YswRNPPIHS0lIkJSVBpVKhqKgIW7duxbp166TuI5Hfq6mRNkfu+dOfnM8tWODZvhBRxzpV7Pznf/4ndDodVq9ejT//+c8AgN/85jd49913MWXKFEk7SERAcLC0OXKPs/sdc19kImVQCYIgyN0JudXV1UGr1cJsNiM8PFzu7hC10q8fcOZMx7m+fQFOm/M8nc65NXRiYgCTyfP9IfJXzn5+c1FBoi6gtlbaHLnH2b+J+LcTkTI4fRorMjISp06dQnR0NCIiIqBSqdrM/sixWyJJ9ezpXCHD7Qm8o7JS2hwReZbTxc6aNWsQ9vMug2vWrGm32CEiaT31lHNX9jz1lOf7QkTU1Thd7MyePdv2/Zw5czzRFyJqQ0ODtDkiIn/SqTk7x48fR1lZme3+7t27MXXqVKxYsQIWi8Xpx9m4cSMGDx6M8PBwhIeH47bbbsOHH35oOy4IAlauXAmDwYDg4GAkJyfj5MmTdo/R2NiIRYsWITo6GqGhoUhNTcXZs2c787KIFOvnQVXJcuQeZ5cT47JjRMrQqWLn8ccfx6lTpwCIqylPnz4dISEh+Mtf/oKsrCynHyc2NhYvvfQSjh07hmPHjmH06NGYMmWKraDJzc1FXl4e1q9fj+LiYuh0OowdOxYXL160PYbRaMTOnTuRn5+PoqIi1NfXY9KkSbBy3XzyIVu2SJsj99TVSZsjIg8TOiE8PFz4+uuvBUEQhJdeekkYN26cIAiCUFRUJMTGxnbmIW0iIiKEN954Q2hubhZ0Op3w0ksv2Y5duXJF0Gq1wqZNmwRBEITa2lohMDBQyM/Pt2XOnTsndOvWTdi3b1+bz3HlyhXBbDbbbpWVlQIAwWw2u9V3Ik9JSBAEoONbQoLcPfUP11/v3Ptx/fVy95TIt5nNZqc+vzs1siMIApqbmwEABw8exD333ANA3Ebihx9+6FTRZbVakZ+fj0uXLuG2225DRUUFTCYTxo0bZ8toNBrcddddOHLkCACgpKQETU1NdhmDwYCEhARbxpGcnBxotVrbjVtckNJptdLmyD1XrkibIyLP6lSxM2zYMLzwwgvYtm0bCgsLMXHiRABARUUFYlzc+a6srAw9evSARqPBvHnzsHPnTtxwww0w/bwSV8vHi4mJsR0zmUwICgpCREREmxlHli9fDrPZbLtV8vpQUrgZM6TNkXv0emlzRORZndouYu3atZg1axZ27dqFp59+GgMGDAAAvPfee0hKSnLpsQYNGoTS0lLU1tbi/fffx+zZs1FYWGg73vISd0EQOrzsvaOMRqOBRqNxqZ9Ectq0yfkc92LyvF9dnyFJjog8q1PFzuDBg+2uxrpq1apVUKvVLj1WUFCQrVgaNmwYiouLsW7dOixbtgyAOHqj/9WfR9XV1bbRHp1OB4vFgpqaGrvRnerqapeLLiIlc/bscCfPIpOLmpqkzRGRZ3XqNFZlZaXd5d1Hjx6F0WjEO++8g8DAQLc6JAgCGhsb0a9fP+h0Ohw4cMB2zGKxoLCw0FbIDB06FIGBgXaZqqoqnDhxgsUO+RRn9mFyJUfuaWyUNkdEntWpkZ2ZM2fid7/7HR588EGYTCaMHTsWN954I7Zv3w6TyYT//u//dupxVqxYgQkTJiAuLg4XL15Efn4+Dh06hH379kGlUsFoNCI7Oxvx8fGIj49HdnY2QkJCMHPmTACAVqvF3LlzsWTJEkRFRSEyMhKZmZlITExESkpKZ14akSI5u10vt/UlImqtU8XOiRMncMsttwAA/vznPyMhIQH/8z//g/3792PevHlOFzv//ve/8eCDD6KqqgparRaDBw/Gvn37MHbsWABAVlYWGhoaMH/+fNTU1GDEiBHYv3+/bdsKQNy6IiAgAOnp6WhoaMCYMWOwdetWl0+nUdsaGoClS4HyciA+Hli1CggOlrtX/kWlcq6Q4S4uREStqQTB9b8Fe/TogRMnTqBv375ITU3F7bffjmXLluG7777DoEGD0NDF1qx3dot4fzR1KrB7d+v2KVOAXbu83Rv/dc01zs3HiY4Gvv/e8/3xd64UlRxtI/IcZz+/OzVn58Ybb8SmTZtw+PBhHDhwAHfffTcA4Pz584iKiupcj0lx2ip0ALF96lRv9sa//fijtDkiIn/SqWLn5ZdfxmuvvYbk5GTMmDEDN910EwBgz549ttNb1LU1NLRd6Fy1ezc3nvQWztlRlp8vIJUsR0Se1ak5O8nJyfjhhx9QV1dnd8n37373O4SEhEjWOZLP0qXO59av92xfCAgIcO4y5oBO/UaTq2JigK+/di5HRPLr1MgOAKjV6lYrF/ft2xe9evVyu1Mkv/JyaXPknsREaXPknrlzpc0RkWc5/XfgzTffjI8++ggREREYMmRIuysUHz9+XJLOkXzi44H9+53Lkef93/9JmyP39OsnbY6IPMvpYmfKlCm2LRamcmaqz3vxReDVV53Lkedxzo6yjBghbY6IPMvpYufZZ591+D35pi1bnM8ZjR7tCpHivPaa8zn+fhDJz+3pjPX19WhubrZr41o1Xd/p09LmiHzJl19KmyMiz+rUBOWKigpMnDgRoaGh0Gq1iIiIQEREBHr27Nlq0jJ1Tf37S5sj8iVFRdLmiMizOjWyM2vWLADAW2+9hZiYmHYnK1PXNH8+kJkJWK1tZ9RqMUeeFxzs3JpG3MbDO7gLPVHX0qli54svvkBJSQkGDRokdX9IIYKCgIwMcR+stmRkiDnyvMhI4Nw553Lkec4WlSw+iZShU6exhg8fjsrKSqn7QgqTmwsMH+742PDh4nHyDmf3u+K+WN7h7GKBXFSQSBk6NbLzxhtvYN68eTh37hwSEhIQGBhod3zw4MGSdI7klZUFFBc7PlZcLB5nweMdFou0OXJPTY20OSLyrE4VO99//z1Onz6Nhx9+2NamUqkgCAJUKhWs7U30oC7BYgHy8trP5OUBL7zAU1nkf35eckyyHBF5VqdOYz3yyCMYMmQIPvvsM3zzzTeoqKiw+0pd34YN7U9OBsTjGzZ4pz9ESvLb30qbIyLP6tTIzrfffos9e/ZgALf09VlcZ0dZNBqgsdG5HHnek08CTz3lXI6I5NepkZ3Ro0fjH//4h9R9IQXh3j/K0mJanNs5ck9QUNuT968aPpyneImUolMjO5MnT8aTTz6JsrIyJCYmtpqgnJqaKknnSD7cZVtZ6uulzZF7LBbg2LH2M8eOiTkWPETy61SxM2/ePADA888/3+oYJyj7Bi6aRtS2V17peNNVQRBzmZne6RMRta1Tp7Gam5vbvLHQ8Q1RUdLmiHzJrl3S5ojIs1wqdu655x6YzWbb/RdffBG1tbW2+xcuXMANN9wgWedIPmVl0uaIfMmv/hmUJEdEnuVSsfP3v/8djb+6JOTll1/Gjz/+aLv/008/4auvvpKudySbM2ekzRH5EmfXTeX6qkTK4FKxI7Q4Sd3yPvmOvn2lzRH5kpkzpc0RkWd1as4O+T5ejUXUNmcHsDnQTaQMLhU7KpUKKpWqVRv5Hm48SdS28nJpc0TkWS5dei4IAubMmQPNz8u0XrlyBfPmzUNoaCgA2M3noa6NxQ5R20wmaXNE5FkuFTuzZ8+2u/9bBxu/PPTQQ+71iBQhIkLaHJEv0emkzRGRZ7lU7GzZssVT/SCF+ewz53MtamAiIiJF4QRlcujECWlzRL6kZ09pc0TkWSx2yCFn551zfjr5owAnx8SdzRGRZ7HYIYfuvlvaHJEvSU6WNkdEnsVihxw6elTaHLmHIwnKkpzc8b5wUVEsdoiUgsUOOfTNN9LmyD0//SRtjtyjVgObN7ef2bxZzBGR/GQtdnJycjB8+HCEhYWhV69emDp1aqu9tebMmWNbzPDq7dZbb7XLNDY2YtGiRYiOjkZoaChSU1Nx9uxZb74UnxMWJm2OyNekpQHvvw/Extq3x8aK7Wlp8vSLiFqTtdgpLCzEggUL8Pnnn+PAgQP46aefMG7cOFy6dMkud/fdd6Oqqsp227t3r91xo9GInTt3Ij8/H0VFRaivr8ekSZNgtVq9+XJ8Su/e0uaIfFFamrgZ7iefADt2iF/PnGGhQ6Q0sp7h37dvn939LVu2oFevXigpKcGdd95pa9doNNC1sTqX2WzGm2++iW3btiElJQUAsH37dsTFxeHgwYMYP358q59pbGy0W+25rq5OipfjU5xdDJuLZhMRkdIpas6O2WwGAERGRtq1Hzp0CL169cLAgQPx2GOPobq62naspKQETU1NGDdunK3NYDAgISEBR44ccfg8OTk50Gq1tltcXJwHXk3XlpQkbY7IFxUUAH37AqNGiTucjxol3i8okLtnRPRriil2BEFARkYG7rjjDiQkJNjaJ0yYgD/+8Y/4+OOPsXr1ahQXF2P06NG2kRmTyYSgoCBEtNi3ICYmBqY2NqZZvnw5zGaz7VZZWem5F9ZF3XSTtDlyT/fu0ubIfQUFwLRpQMvpgefOie0seIiUQzEXqi5cuBBffPEFioqK7NqnT59u+z4hIQHDhg1Dnz598MEHHyCtnRPjgiC0uSO7RqOxbWZKjjlb/7FOJH9ktQKLFwOC0PqYIIiLbRqNwJQpvCKLSAkUMbKzaNEi7NmzB5988gliW17a0IJer0efPn1QXl4OANDpdLBYLKipqbHLVVdXIyYmxmN99nVr10qbI/dwDpWyHD7cekTn1wRB/EPg8GHv9YmI2iZrsSMIAhYuXIiCggJ8/PHH6NevX4c/c+HCBVRWVkKv1wMAhg4disDAQBw4cMCWqaqqwokTJ5DECSWdVlsrbY7cw+07lKWqStocEXmWrKexFixYgB07dmD37t0ICwuzzbHRarUIDg5GfX09Vq5cifvuuw96vR5nzpzBihUrEB0djXvvvdeWnTt3LpYsWYKoqChERkYiMzMTiYmJtquzyHXdnCyDnc2Re5qbpc2Re37+W0uyHBF5lqzFzsaNGwEAyS3WVN+yZQvmzJkDtVqNsrIyvPPOO6itrYVer8eoUaPw7rvvIuxXq9mtWbMGAQEBSE9PR0NDA8aMGYOtW7dCzZPlnRYcLG2OyJeMHCkuHnjunON5OyqVeHzkSO/3jYhaUwmCo19V/1JXVwetVguz2Yzw8HC5u6MIgwYBp051nBs4EGix6DV5gCunp/gb7R1Xr8YC7P+bX32v3nuPiwsSeZqzn988CUEO/WpNR0ly5B5nByk5mOk9aWliQXPttfbtsbEsdIiURjGXnpOyDBggbY7c07MncOGCcznynrQ08fLyw4fFych6vXjqikUnkbKw2CGHfr6yX7IcucfZHU2484n3qdVAi2mHRKQwLHbIoY8+kjanBBYLsGEDcPo00L8/MH8+EBQkd6+c09QkbY6IyJ+w2CGHLl+WNie3rCwgL09c+faqzEwgIwPIzZWvX0RE5Hksdsih77+XNienrCxg1arW7VbrL+0seIiIfBcvPQcvPXekWzfnLmFWqZS9kJ3FAoSE2I/otKRWiyNUSj6l1b27c1tBaDTAlSue7w8RkRLw0nNyi7MlsNJL5Q0b2i90APH4hg3e6U9n/fSTtDkiIn/CYoccCnDyBKezObmcPi1tTi5c0ZqIqPNY7JBDvjKS0L+/tDm5+NqEcSIib+KcHXDOjiO+sj2Br8zZ8ZX3g4hISpyzQwSxgLn55vYzN9+s7EIHcL7YcaUoIiLyFyx2yKdZLMDx4+1njh8Xc0rWo4e0OSIif8Jih3yar1yNFRgobY6IyJ+w2CGf9tVX0uaIiKjrYbFDPs1kkjYnF1+5Oo6ISA4sdsihPn2kzclFp5M2JxdfWfeIiEgOLHbIobNnpc3JRa2WNicXrrNDRNR5LHbIp40YIW1OLrz0nIio81jskEMhIdLm5GIwSJuTS79+0uaIiPwJix1yyNlF9pS+GF9Hl527mpPL4cPS5oiI/AmLHXLowgVpc3LxlSIhMrLjUbSQEDFHRET2WOwQdQEWC3DlSvuZK1eUvxI0EZEcWOyQT0tOljYnlz/8AWhubj/T3CzmiIjIHosdcqibk/9nOJuTS3IyEBXVfiYqSvnFTmGhtDkiIn+i8I8qkosgSJuTi1oNbN7cfmbzZuWvs/Ovf0mbIyLyJyx2yCFfWrE3LQ14/30gNta+PTZWbE9Lk6dfrggLkzZHRORPusBHFckhNBSorXUu1xWkpQFTpohXXVVVAXo9MHKk8kd0rho+HDh+3LkcERHZY7FDDjlT6LiSUwK1Wvlzc9oyZQrw2mvO5YiIyB5PYxF1Ab5YfBIReQuLHaIuQK+XNkdE5E9Y7BB1ASNHtp5g3VJcnJgjIiJ7LHbIoeBgaXPkHrUamDGj/cwDD3SdCddERN4ka7GTk5OD4cOHIywsDL169cLUqVPx1Vdf2WUEQcDKlSthMBgQHByM5ORknDx50i7T2NiIRYsWITo6GqGhoUhNTcXZs2e9+VJ8TlyctDlyj9UK/OlP7Wfy85W/oSkRkRxkLXYKCwuxYMECfP755zhw4AB++uknjBs3DpcuXbJlcnNzkZeXh/Xr16O4uBg6nQ5jx47FxYsXbRmj0YidO3ciPz8fRUVFqK+vx6RJk2Dlv/ydVlkpbY7cc/gw0FH9Xlmp/A1NiYjkoBIE5ayB+/3336NXr14oLCzEnXfeCUEQYDAYYDQasWzZMgDiKE5MTAxefvllPP744zCbzbjmmmuwbds2TJ8+HQBw/vx5xMXFYe/evRg/fnyHz1tXVwetVguz2Yzw8HCPvsauQqVyPquc/4N815/+BMyc2XFux46OT3cREfkKZz+/FTVnx2w2AwAiIyMBABUVFTCZTBg3bpwto9FocNddd+HIkSMAgJKSEjQ1NdllDAYDEhISbJmWGhsbUVdXZ3cjUjJejUVE1HmKKXYEQUBGRgbuuOMOJCQkAABMJhMAICYmxi4bExNjO2YymRAUFISIiIg2My3l5ORAq9XabnGceEIKd/VqrLZG3FQqXo1FRNQWxRQ7CxcuxBdffIE/OZiFqWrxL7wgCK3aWmovs3z5cpjNZtutkhNPSOHUamDdOvH7lv9bX72/di2vxiIickQRxc6iRYuwZ88efPLJJ4j91WIiOp0OAFqN0FRXV9tGe3Q6HSwWC2pqatrMtKTRaBAeHm53I1K6tDTgvfeAa6+1b4+NFdu7woamRERykLXYEQQBCxcuREFBAT7++GP069fP7ni/fv2g0+lw4MABW5vFYkFhYSGSkpIAAEOHDkVgYKBdpqqqCidOnLBliHxFWhpw6hSwYAEwbpz49auvWOgQEbVH1o1AFyxYgB07dmD37t0ICwuzjeBotVoEBwdDpVLBaDQiOzsb8fHxiI+PR3Z2NkJCQjDz50tTtFot5s6diyVLliAqKgqRkZHIzMxEYmIiUlJS5Hx5RJLLygL+3//75Qq4/fuBDRuAzEwgN1fevhERKZWsxc7GjRsBAMkttqLesmUL5syZAwDIyspCQ0MD5s+fj5qaGowYMQL79+9HWFiYLb9mzRoEBAQgPT0dDQ0NGDNmDLZu3Qo1JzCQD8nKAlatat0uCL+0s+AhImpNUevsyIXr7LTGdXaUxWIBNJqOc42NQFCQ5/tDRKQEXXKdHSJybM0aaXNERP6ExQ5RF7B9u7Q5IiJ/wmKHqAuwWKTNERH5ExY75FD37tLmyD2jRkmbIyLyJyx2yCFnJyi7MpGZOo9zdoiIOo/FDjnU0CBtjtwTHAxMmdJ+ZsoUMUdERPZY7BB1Ebt2tV3wTJkiHiciotZkXVSQiFyza5c4mrZ0KVBeDsTHiwsKckSHiKhtLHaIupjgYGD9erl7QUTUdfA0FhEREfk0juwQdTEWi7j55+nTQP/+wPz53CKCiKg9LHaIupCsLCAvD7Baf2nLzAQyMrgJKBFRW1jsEHURbe16brVy13MiovZw13Nw13NHuOu5slgsQEiI/YhOS2o1cPkyT2kRkf/grudEPmTDhvYLHUA8vmGDd/pDRNSVsNgh6gLKy6XNERH5ExY75JBGI22O3MO9yoiIOo/FDjl0xx3S5sg9I0ZImyMi8icsdsihqippc+SeuDhpc0RE/oTFDjn000/S5sg9I0cCsbHtZ+LixBwREdljsUMOVVRImyP3qNXAunVtz8lRqYC1a8UcERHZY7FD1EWkpQHvvdd6hCcuTmxPS5OnX0RESscVlMmh5mZpcySNtDRgyhTg8GFxvpReL5664ogOEVHbWOyQQwEBHS9idzVH3qVWA8nJcveCiKjr4GkscogjO0RE5CtY7JBDwcHS5oiIiOTCYocc4qXnRETkK1jskEPO7pzNHbaJiEjpWOyQQxzZISIiX8Fihxzq0UPaHBERkVxY7JBD3btLmyMiIpILix1yKCVF2hwREZFcWOyQQzfeKG2OiIhILrIWO59++ikmT54Mg8EAlUqFXbt22R2fM2cOVCqV3e3WW2+1yzQ2NmLRokWIjo5GaGgoUlNTcfbsWS++Ct/06KPS5oiIiOQia7Fz6dIl3HTTTVi/fn2bmbvvvhtVVVW22969e+2OG41G7Ny5E/n5+SgqKkJ9fT0mTZoEqzN7HXhQQwOwcCEwfrz4taFB1u647I03pM0RERHJRdadjSZMmIAJEya0m9FoNNDpdA6Pmc1mvPnmm9i2bRtSfp48sn37dsTFxeHgwYMYP3685H12xtSpwO7dv9zfvx949VVxA8cWg1eKdfq0tDkiIiK5KH7OzqFDh9CrVy8MHDgQjz32GKqrq23HSkpK0NTUhHHjxtnaDAYDEhIScOTIkTYfs7GxEXV1dXY3qbQsdH5t927xeFfQv7+0OSIiIrkoutiZMGEC/vjHP+Ljjz/G6tWrUVxcjNGjR6OxsREAYDKZEBQUhIiICLufi4mJgclkavNxc3JyoNVqbbe4uDhJ+tvQ0Hahc9Xu3V3jlNb8+eLu2u1Rq8UcERGRkim62Jk+fTomTpyIhIQETJ48GR9++CFOnTqFDz74oN2fEwQBKpWqzePLly+H2Wy23SorKyXp79Kl0ubkFBQE9O3bfqZvX24XQUREyqfoYqclvV6PPn36oLy8HACg0+lgsVhQU1Njl6uurkZMTEybj6PRaBAeHm53k8LP3ZIsJ6eGho7n45w+3TVGqYiIyL91qWLnwoULqKyshF6vBwAMHToUgYGBOHDggC1TVVWFEydOICkpyev9i4+XNicnXxqlIiIi/ybr1Vj19fX4+uuvbfcrKipQWlqKyMhIREZGYuXKlbjvvvug1+tx5swZrFixAtHR0bj33nsBAFqtFnPnzsWSJUsQFRWFyMhIZGZmIjEx0XZ1ljetWiVedeVMTum++kraHBERkVxkLXaOHTuGUaNG2e5nZGQAAGbPno2NGzeirKwM77zzDmpra6HX6zFq1Ci8++67CAsLs/3MmjVrEBAQgPT0dDQ0NGDMmDHYunUr1B3NrvWA4GDx8vL2JilPmSLmlM7Z01M8jUVEREqnEgRBkLsTcqurq4NWq4XZbJZk/s4ttwDFxa3bhw8Hjh51++G94j//E9i0qePcvHnAxo2e7w8REVFLzn5+d6k5O11BQQFw7JjjY8eOice7gkGDpM0RERHJhSM7kG5kx2oVL8dua2sulQqIjQUqKjpew0ZuZjPQs2fHudpaQKv1dG+IiIha48iODA4fbrvQAQBBACorxZzSPf20tDkiIiK5sNiRUFWVtDk5nTolbY6IiEguLHYk9PPyP5Ll5BQaKm2OiIhILix2JDRypDgnp62dKlQqIC5OzCmdsxuWdpWNTYmIyH+x2JGQWg2sWyd+37LguXp/7VrlT04GgD59pM0RERHJhcWOxNLSgPfeA6691r49NlZsT0uTp1+uGjkSiIpqPxMV1TVGqYiIyL/JuoKyr0pLE1dKPnxYnIys14tFQVcY0fm1xsb2j1ss3ukHERGRO1jseIhaDSQny92Lzjt0CKivbz9z8aKYGzPGGz0iIiLqHJ7GIocOHZI2R0REJBcWO0REROTTWOyQQ0lJ0uaIiIjkwmKHHPrnP6XNERERyYXFDjn0zTfS5oiIiOTCYoccamsV6M7miIiI5MJihxwaMULaHBERkVxY7JBDcXHS5oiIiOTCYoccurqpaXu6yqamRETk31jskENXNzVVqRxvaqpSdZ1NTYmIyL+x2KE2+cqmpkRE5N+4Nxa1y1c2NSUiIv/FYoc61NU3NSUiIv/GYoc6ZLEAGzYAp08D/fsD8+cDQUFy94qIiMg5LHaoXVlZQF4eYLX+0paZCWRkALm58vWLiIjIWSx2qE1ZWcCqVa3brdZf2lnwEBGR0qkEQRDk7oTc6urqoNVqYTabER4eLnd3FMFiAUJC7Ed0WlKrgcuXeUqLiIjk4eznNy89J4c2bGi/0AHE4xs2eKc/REREncVihxwqL5c2R0REJBcWO+QQdz0nIiJfwWKHHOKu50RE5CtY7JBD3PWciIh8BYsdcoi7nhMRka+Qtdj59NNPMXnyZBgMBqhUKuzatcvuuCAIWLlyJQwGA4KDg5GcnIyTJ0/aZRobG7Fo0SJER0cjNDQUqampOHv2rBdfhW/irudEROQrZC12Ll26hJtuugnr1693eDw3Nxd5eXlYv349iouLodPpMHbsWFy8eNGWMRqN2LlzJ/Lz81FUVIT6+npMmjQJ1o6um6YOcddzIiLyBYpZVFClUmHnzp2YOnUqAHFUx2AwwGg0YtmyZQDEUZyYmBi8/PLLePzxx2E2m3HNNddg27ZtmD59OgDg/PnziIuLw969ezF+/HinnpuLCrbPauWu50REpDxdflHBiooKmEwmjBs3ztam0Whw11134ciRIwCAkpISNDU12WUMBgMSEhJsGUcaGxtRV1dnd6O2Xd31fMYM8SsLHSIi6koUW+yYTCYAQExMjF17TEyM7ZjJZEJQUBAiIiLazDiSk5MDrVZru8XxkiIiIiKfpdhi5ypVi9mxgiC0amupo8zy5cthNpttt8rKSkn6SkRERMqj2GJHp9MBQKsRmurqattoj06ng8ViQU1NTZsZRzQaDcLDw+1uRERE5JsUW+z069cPOp0OBw4csLVZLBYUFhYiKSkJADB06FAEBgbaZaqqqnDixAlbhoiIiPxbgJxPXl9fj6+//tp2v6KiAqWlpYiMjETv3r1hNBqRnZ2N+Ph4xMfHIzs7GyEhIZg5cyYAQKvVYu7cuViyZAmioqIQGRmJzMxMJCYmIiUlRa6XRURERAoia7Fz7NgxjBo1ynY/IyMDADB79mxs3boVWVlZaGhowPz581FTU4MRI0Zg//79CAsLs/3MmjVrEBAQgPT0dDQ0NGDMmDHYunUr1LxkiIiIiKCgdXbkxHV2iIiIup4uv84OERERkRRY7BAREZFPk3XOjlJcPZPHlZSJiIi6jquf2x3NyGGxA9g2FuVKykRERF3PxYsXodVq2zzOCcoAmpubcf78eYSFhXW4OrO/qqurQ1xcHCorKzmJWwH4figL3w9l4fuhLJ58PwRBwMWLF2EwGNCtW9szcziyA6Bbt26IjY2VuxtdAlecVha+H8rC90NZ+H4oi6fej/ZGdK7iBGUiIiLyaSx2iIiIyKex2CGnaDQaPPvss9BoNHJ3hcD3Q2n4figL3w9lUcL7wQnKRERE5NM4skNEREQ+jcUOERER+TQWO0REROTTWOwQERGRT2OxQ07LycmBSqWC0WiUuyt+69y5c/jtb3+LqKgohISE4D/+4z9QUlIid7f81k8//YT/+q//Qr9+/RAcHIzrrrsOzz//PJqbm+Xuml/49NNPMXnyZBgMBqhUKuzatcvuuCAIWLlyJQwGA4KDg5GcnIyTJ0/K01k/0N770dTUhGXLliExMRGhoaEwGAx46KGHcP78ea/0jcUOOaW4uBibN2/G4MGD5e6K36qpqcHtt9+OwMBAfPjhh/jnP/+J1atXo2fPnnJ3zW+9/PLL2LRpE9avX48vv/wSubm5WLVqFf7whz/I3TW/cOnSJdx0001Yv369w+O5ubnIy8vD+vXrUVxcDJ1Oh7Fjx9r2QyRptfd+XL58GcePH8czzzyD48ePo6CgAKdOnUJqaqp3OicQdeDixYtCfHy8cODAAeGuu+4SFi9eLHeX/NKyZcuEO+64Q+5u0K9MnDhReOSRR+za0tLShN/+9rcy9ch/ARB27txpu9/c3CzodDrhpZdesrVduXJF0Gq1wqZNm2TooX9p+X44cvToUQGA8O2333q8PxzZoQ4tWLAAEydOREpKitxd8Wt79uzBsGHDcP/996NXr14YMmQIXn/9dbm75dfuuOMOfPTRRzh16hQA4B//+AeKiopwzz33yNwzqqiogMlkwrhx42xtGo0Gd911F44cOSJjz+gqs9kMlUrlldFpbgRK7crPz8fx48dRXFwsd1f83jfffIONGzciIyMDK1aswNGjR/HEE09Ao9HgoYcekrt7fmnZsmUwm824/vrroVarYbVa8eKLL2LGjBlyd83vmUwmAEBMTIxde0xMDL799ls5ukS/cuXKFTz11FOYOXOmVzZrZbFDbaqsrMTixYuxf/9+dO/eXe7u+L3m5mYMGzYM2dnZAIAhQ4bg5MmT2LhxI4sdmbz77rvYvn07duzYgRtvvBGlpaUwGo0wGAyYPXu23N0jACqVyu6+IAit2si7mpqa8MADD6C5uRkbNmzwynOy2KE2lZSUoLq6GkOHDrW1Wa1WfPrpp1i/fj0aGxuhVqtl7KF/0ev1uOGGG+zafvOb3+D999+XqUe0dOlSPPXUU3jggQcAAImJifj222+Rk5PDYkdmOp0OgDjCo9frbe3V1dWtRnvIe5qampCeno6Kigp8/PHHXhnVAXg1FrVjzJgxKCsrQ2lpqe02bNgwzJo1C6WlpSx0vOz222/HV199Zdd26tQp9OnTR6Ye0eXLl9Gtm/0/o2q1mpeeK0C/fv2g0+lw4MABW5vFYkFhYSGSkpJk7Jn/ulrolJeX4+DBg4iKivLac3Nkh9oUFhaGhIQEu7bQ0FBERUW1aifPe/LJJ5GUlITs7Gykp6fj6NGj2Lx5MzZv3ix31/zW5MmT8eKLL6J379648cYb8X//93/Iy8vDI488InfX/EJ9fT2+/vpr2/2KigqUlpYiMjISvXv3htFoRHZ2NuLj4xEfH4/s7GyEhIRg5syZMvbad7X3fhgMBkybNg3Hjx/H3/72N1itVtu8qsjISAQFBXm2cx6/3ot8Ci89l9df//pXISEhQdBoNML1118vbN68We4u+bW6ujph8eLFQu/evYXu3bsL1113nfD0008LjY2NcnfNL3zyyScCgFa32bNnC4IgXn7+7LPPCjqdTtBoNMKdd94plJWVydtpH9be+1FRUeHwGADhk08+8XjfVIIgCJ4tp4iIiIjkwzk7RERE5NNY7BAREZFPY7FDREREPo3FDhEREfk0FjtERETk01jsEBERkU9jsUNEREQ+jcUOERER+TQWO0TUZSQnJ8NoNNru9+3bF2vXrnXrMQ8dOgSVSoXa2lq3HoeIlIvFDhF5jclkwqJFi3DddddBo9EgLi4OkydPxkcffdSpxysuLsbvfvc7iXtJRL6GG4ESkVecOXMGt99+O3r27Inc3FwMHjwYTU1N+Pvf/44FCxbgX//6l8uPec0113igp66zWCye38iQiDqNIztE5BXz58+HSqXC0aNHMW3aNAwcOBA33ngjMjIy8Pnnn+ORRx7BpEmT7H7mp59+gk6nw1tvveXwMVuexlKpVHjjjTdw7733IiQkBPHx8dizZ4/dz+zduxcDBw5EcHAwRo0ahTNnzrR63CNHjuDOO+9EcHAw4uLi8MQTT+DSpUt2z/vCCy9gzpw50Gq1eOyxx2CxWLBw4ULo9Xp0794dffv2RU5OTuf/gxGRZFjsEJHH/fjjj9i3bx8WLFiA0NDQVsd79uyJRx99FPv27UNVVZWtfe/evaivr0d6errTz/Xcc88hPT0dX3zxBe655x7MmjULP/74IwCgsrISaWlpuOeee1BaWopHH30UTz31lN3Pl5WVYfz48UhLS8MXX3yBd999F0VFRVi4cKFdbtWqVUhISEBJSQmeeeYZvPLKK9izZw/+/Oc/46uvvsL27dvRt29fF/4rEZGnsNghIo/7+uuvIQgCrr/++jYzSUlJGDRoELZt22Zr27JlC+6//3706NHD6eeaM2cOZsyYgQEDBiA7OxuXLl3C0aNHAQAbN27EddddhzVr1mDQoEGYNWsW5syZY/fzq1atwsyZM2E0GhEfH4+kpCS88soreOedd3DlyhVbbvTo0cjMzMSAAQMwYMAAfPfdd4iPj8cdd9yBPn364I477sCMGTOc7jcReQ6LHSLyOEEQAIinmdrz6KOPYsuWLQCA6upqfPDBB3jkkUdceq7Bgwfbvg8NDUVYWBiqq6sBAF9++SVuvfVWu37cdtttdj9fUlKCrVu3okePHrbb+PHj0dzcjIqKCltu2LBhdj83Z84clJaWYtCgQXjiiSewf/9+l/pNRJ7DYoeIPC4+Ph4qlQpffvllu7mHHnoI33zzDT777DPbaaCRI0e69FyBgYF291UqFZqbmwH8UnS1p7m5GY8//jhKS0ttt3/84x8oLy9H//79bbmWp+NuvvlmVFRU4Pe//z0aGhqQnp6OadOmudR3IvIMXo1FRB4XGRmJ8ePH49VXX8UTTzzRqlCora1Fz549ERUVhalTp2LLli347LPP8PDDD0vajxtuuAG7du2ya/v888/t7t988804efIkBgwY4PLjh4eHY/r06Zg+fTqmTZuGu+++Gz/++CMiIyPd6TYRuYkjO0TkFRs2bIDVasUtt9yC999/H+Xl5fjyyy/xyiuv2J1KevTRR/H222/jyy+/xOzZsyXtw7x583D69GlkZGTgq6++wo4dO7B161a7zLJly/DZZ59hwYIFKC0tRXl5Ofbs2YNFixa1+9hr1qxBfn4+/vWvf+HUqVP4y1/+Ap1Oh549e0r6GojIdSx2iMgr+vXrh+PHj2PUqFFYsmQJEhISMHbsWHz00UfYuHGjLZeSkgK9Xo/x48fDYDBI2ofevXvj/fffx1//+lfcdNNN2LRpE7Kzs+0ygwcPRmFhIcrLyzFy5EgMGTIEzzzzDPR6fbuP3aNHD7z88ssYNmwYhg8fjjNnzmDv3r3o1o3/zBLJTSU4cxKbiMhLLl++DIPBgLfeegtpaWlyd4eIfADn7BCRIjQ3N8NkMmH16tXQarVITU2Vu0tE5CNY7BCRInz33Xfo168fYmNjsXXrVgQE8J8nIpIGT2MRERGRT+PMOSIiIvJpLHaIiIjIp7HYISIiIp/GYoeIiIh8GosdIiIi8mksdoiIiMinsdghIiIin8Zih4iIiHza/wdaGeaHhYFbrwAAAABJRU5ErkJggg==\n",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import pandas as pd\n",
|
||
"import pylab as pl\n",
|
||
"import numpy as np\n",
|
||
"%matplotlib inline\n",
|
||
"\n",
|
||
"df = pd.read_csv(\"FuelConsumptionCo2.csv\")\n",
|
||
"\n",
|
||
"df.head()\n",
|
||
"\n",
|
||
"df.describe()\n",
|
||
"cdf = df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB','CO2EMISSIONS']]\n",
|
||
"cdf.head(9)\n",
|
||
"\n",
|
||
"plt.scatter(cdf.CYLINDERS, cdf.CO2EMISSIONS, color='blue')\n",
|
||
"plt.xlabel(\"Cylinders\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<details><summary>Click here for the solution</summary>\n",
|
||
"\n",
|
||
"```python \n",
|
||
"plt.scatter(cdf.CYLINDERS, cdf.CO2EMISSIONS, color='blue')\n",
|
||
"plt.xlabel(\"Cylinders\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"plt.show()\n",
|
||
"\n",
|
||
"```\n",
|
||
"\n",
|
||
"</details>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Creating train and test dataset\n",
|
||
"Train/Test Split involves splitting the dataset into training and testing sets that 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",
|
||
"This means that 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. 80% of the entire dataset will be used for training and 20% for testing. We create a mask to select random rows using __np.random.rand()__ function: \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"msk = np.random.rand(len(df)) < 0.8\n",
|
||
"train = cdf[msk]\n",
|
||
"test = cdf[~msk]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Simple Regression Model\n",
|
||
"Linear Regression fits a linear model with coefficients B = (B1, ..., Bn) to minimize the 'residual sum of squares' between the actual value y in the dataset, and the predicted value yhat using linear approximation. \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Train data distribution\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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": [
|
||
"#### Modeling\n",
|
||
"Using sklearn package to model data.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn import linear_model\n",
|
||
"regr = linear_model.LinearRegression()\n",
|
||
"train_x = np.asanyarray(train[['ENGINESIZE']])\n",
|
||
"train_y = np.asanyarray(train[['CO2EMISSIONS']])\n",
|
||
"regr.fit(train_x, train_y)\n",
|
||
"# The coefficients\n",
|
||
"print ('Coefficients: ', regr.coef_)\n",
|
||
"print ('Intercept: ',regr.intercept_)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"As mentioned before, __Coefficient__ and __Intercept__ in the simple linear regression, are the parameters of the fit line. \n",
|
||
"Given that it is a simple linear regression, with only 2 parameters, and knowing that the parameters are the intercept and slope of the line, sklearn can estimate them directly from our data. \n",
|
||
"Notice that all of the data must be available to traverse and calculate the parameters.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Plot outputs\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can plot the fit line over the data:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n",
|
||
"plt.plot(train_x, regr.coef_[0][0]*train_x + regr.intercept_[0], '-r')\n",
|
||
"plt.xlabel(\"Engine size\")\n",
|
||
"plt.ylabel(\"Emission\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Evaluation\n",
|
||
"We compare the actual values and predicted values to calculate the accuracy of a regression model. Evaluation metrics provide a key role in the development of a model, as it provides insight to areas that require improvement.\n",
|
||
"\n",
|
||
"There are different model evaluation metrics, lets use MSE here to calculate the accuracy of our model based on the test set: \n",
|
||
"* Mean Absolute Error: It is the mean of the absolute value of the errors. This is the easiest of the metrics to understand since it’s just average error.\n",
|
||
"\n",
|
||
"* Mean Squared Error (MSE): Mean Squared Error (MSE) is the mean of the squared error. It’s more popular than Mean Absolute Error because the focus is geared more towards large errors. This is due to the squared term exponentially increasing larger errors in comparison to smaller ones.\n",
|
||
"\n",
|
||
"* Root Mean Squared Error (RMSE). \n",
|
||
"\n",
|
||
"* R-squared is not an error, but rather a popular metric to measure the performance of your regression model. It represents how close the data points are to the fitted regression line. The higher the R-squared value, the better the model fits your data. The best possible score is 1.0 and it can be negative (because the model can be arbitrarily worse).\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.metrics import r2_score\n",
|
||
"\n",
|
||
"test_x = np.asanyarray(test[['ENGINESIZE']])\n",
|
||
"test_y = np.asanyarray(test[['CO2EMISSIONS']])\n",
|
||
"test_y_ = regr.predict(test_x)\n",
|
||
"\n",
|
||
"print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y_ - test_y)))\n",
|
||
"print(\"Residual sum of squares (MSE): %.2f\" % np.mean((test_y_ - test_y) ** 2))\n",
|
||
"print(\"R2-score: %.2f\" % r2_score(test_y , test_y_) )"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Exercise\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Lets see what the evaluation metrics are if we trained a regression model using the `FUELCONSUMPTION_COMB` feature.\n",
|
||
"\n",
|
||
"Start by selecting `FUELCONSUMPTION_COMB` as the train_x data from the `train` dataframe, then select `FUELCONSUMPTION_COMB` as the test_x data from the `test` dataframe\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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7z18+umneOutt1BdXY2hQ4fi0qVLrm4ataO6uhoAEB0dbXE8OjrafI7cx7hx47Bx40bs3bsXy5YtQ2lpKUaOHInGxkZXN82nCYKArKwsPPjgg0hMTATAz5Y7au19Ajz/c8Vdz51o3Lhx5v9OSkrCAw88gF69emHdunXIyspyYcvIGgqFwuJnQRBaHCPXy8jIMP93YmIiBg4ciPj4eHzyySdIT093Yct829y5c3HixAkcPHiwxTl+ttxHW++Tp3+u2LPjQiEhIUhKSsLp06dd3RRqh2nGXPO/NGtqalr8RUruJyYmBvHx8fycudC8efOwY8cO7Nu3D3Fxcebj/Gy5l7bep9Z42ueKYceFGhsb8c033yAmJsbVTaF29OzZExqNBsXFxeZjBoMBJSUlGDp0qAtbRta4dOkSKioq+DlzAUEQMHfuXOh0Ouzduxc9e/a0OM/Plnvo6H1qjad9rngZy4lycnIwYcIE3HbbbaipqcHLL7+Muro6TJ8+3dVN83n19fU4c+aM+efy8nIcP34c4eHhuO2225CZmYklS5YgISEBCQkJWLJkCYKDgzF16lQXtto3tfdehYeHY/HixZg0aRJiYmJw7tw5LFq0CJGRkXj00Udd2GrfNGfOHGzatAkfffQRQkNDzT04arUaQUFBUCgU/Gy5gY7ep/r6es//XLlyKpivycjIEGJiYoSAgAAhNjZWSE9PF06dOuXqZpEgCPv27RMAtLhNnz5dEARxiuyLL74oaDQaQaVSCb///e+FsrIy1zbaR7X3Xl27dk1ISUkRunXrJgQEBAi33XabMH36dOHHH390dbN9UmvvEwBh7dq15jL8bLleR++TN3yuFIIgCM4MV0RERETOxDE7RERE5NUYdoiIiMirMewQERGRV2PYISIiIq/GsENERERejWGHiIiIvBrDDhEREXk1hh0iIiLyagw7RERE5NUYdoicbMaMGVAoFC1uZ86cwfDhw5GZmdmizocffgiFQmH+ubCwsNX76NSpk8XjTJw4sd22fPXVV5g8eTKio6PRqVMn9OnTB0899RS+++47i3Lr1q3D/fffj5CQEISGhuL3v/89du7caVFm//79UCgUSExMhNFotDjXpUsXFBYWWjzu+PHjERUVhU6dOqFHjx7IyMjAxYsXLe7r8uXLLdp87733YvHixeafe/ToAYVCgaKiohZl+/bt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\n",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Coefficients: [[16.0539031]]\n",
|
||
"Intercept: [69.68888946]\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"msk = np.random.rand(len(df)) < 0.8\n",
|
||
"train = cdf[msk]\n",
|
||
"test = cdf[~msk]\n",
|
||
"\n",
|
||
"plt.scatter(train.FUELCONSUMPTION_COMB, train.CO2EMISSIONS, color='blue')\n",
|
||
"plt.xlabel(\"FUELCONSUMPTION_COMB\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"plt.show() \n",
|
||
"\n",
|
||
"from sklearn import linear_model\n",
|
||
"regr = linear_model.LinearRegression()\n",
|
||
"train_x = np.asanyarray(train[['FUELCONSUMPTION_COMB']])\n",
|
||
"train_y = np.asanyarray(train[['CO2EMISSIONS']])\n",
|
||
"regr.fit(train_x, train_y)\n",
|
||
"# The coefficients\n",
|
||
"print ('Coefficients: ', regr.coef_)\n",
|
||
"print ('Intercept: ',regr.intercept_)\n",
|
||
"\n",
|
||
"plt.scatter(train.FUELCONSUMPTION_COMB, train.CO2EMISSIONS, color='blue')\n",
|
||
"plt.plot(train_x, regr.coef_[0][0]*train_x + regr.intercept_[0], '-r')\n",
|
||
"plt.xlabel(\"FUELCONSUMPTION_COMB\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"\n",
|
||
"train_x = train[[\"FUELCONSUMPTION_COMB\"]]\n",
|
||
"\n",
|
||
"test_x = test[[\"FUELCONSUMPTION_COMB\"]]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<details><summary>Click here for the solution</summary>\n",
|
||
"\n",
|
||
"```python \n",
|
||
"train_x = train[[\"FUELCONSUMPTION_COMB\"]]\n",
|
||
"\n",
|
||
"test_x = test[[\"FUELCONSUMPTION_COMB\"]]\n",
|
||
"\n",
|
||
"```\n",
|
||
"\n",
|
||
"</details>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now train a Linear Regression Model using the `train_x` you created and the `train_y` created previously\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Coefficients: [[16.0539031]]\n",
|
||
"Intercept: [69.68888946]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"regr = linear_model.LinearRegression()\n",
|
||
"train_x = np.asanyarray(train[['FUELCONSUMPTION_COMB']])\n",
|
||
"train_y = np.asanyarray(train[['CO2EMISSIONS']])\n",
|
||
"regr.fit(train_x, train_y)\n",
|
||
"# The coefficients\n",
|
||
"print ('Coefficients: ', regr.coef_)\n",
|
||
"print ('Intercept: ',regr.intercept_)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<details><summary>Click here for the solution</summary>\n",
|
||
"\n",
|
||
"```python \n",
|
||
"regr = linear_model.LinearRegression()\n",
|
||
"\n",
|
||
"regr.fit(train_x, train_y)\n",
|
||
"\n",
|
||
"```\n",
|
||
"\n",
|
||
"</details>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Find the predictions using the model's `predict` function and the `test_x` data\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[230.22792044]\n",
|
||
" [316.91899716]\n",
|
||
" [218.99018827]\n",
|
||
" [218.99018827]\n",
|
||
" [249.49260415]\n",
|
||
" [270.36267818]\n",
|
||
" [316.91899716]\n",
|
||
" [271.96806849]\n",
|
||
" [252.70338477]\n",
|
||
" [252.70338477]\n",
|
||
" [292.83814252]\n",
|
||
" [204.54167548]\n",
|
||
" [230.22792044]\n",
|
||
" [215.77940765]\n",
|
||
" [223.8063592 ]\n",
|
||
" [265.54650725]\n",
|
||
" [305.681265 ]\n",
|
||
" [305.681265 ]\n",
|
||
" [305.681265 ]\n",
|
||
" [230.22792044]\n",
|
||
" [247.88721384]\n",
|
||
" [215.77940765]\n",
|
||
" [246.28182353]\n",
|
||
" [263.94111694]\n",
|
||
" [217.38479796]\n",
|
||
" [201.33089486]\n",
|
||
" [241.4656526 ]\n",
|
||
" [222.20096889]\n",
|
||
" [249.49260415]\n",
|
||
" [243.07104291]\n",
|
||
" [275.17884911]\n",
|
||
" [251.09799446]\n",
|
||
" [336.18368088]\n",
|
||
" [336.18368088]\n",
|
||
" [307.2866553 ]\n",
|
||
" [307.2866553 ]\n",
|
||
" [305.681265 ]\n",
|
||
" [424.48014792]\n",
|
||
" [210.96323672]\n",
|
||
" [215.77940765]\n",
|
||
" [329.76211964]\n",
|
||
" [271.96806849]\n",
|
||
" [324.94594871]\n",
|
||
" [405.2154642 ]\n",
|
||
" [334.57829057]\n",
|
||
" [334.57829057]\n",
|
||
" [299.25970376]\n",
|
||
" [228.62253013]\n",
|
||
" [259.12494601]\n",
|
||
" [340.99985181]\n",
|
||
" [296.04892314]\n",
|
||
" [355.4483646 ]\n",
|
||
" [278.38962973]\n",
|
||
" [347.42141305]\n",
|
||
" [202.93628517]\n",
|
||
" [365.08070646]\n",
|
||
" [241.4656526 ]\n",
|
||
" [230.22792044]\n",
|
||
" [238.25487198]\n",
|
||
" [300.86509407]\n",
|
||
" [284.81119097]\n",
|
||
" [244.67643322]\n",
|
||
" [292.83814252]\n",
|
||
" [249.49260415]\n",
|
||
" [275.17884911]\n",
|
||
" [275.17884911]\n",
|
||
" [244.67643322]\n",
|
||
" [307.2866553 ]\n",
|
||
" [207.7524561 ]\n",
|
||
" [247.88721384]\n",
|
||
" [194.90933362]\n",
|
||
" [196.51472393]\n",
|
||
" [421.2693673 ]\n",
|
||
" [345.81602274]\n",
|
||
" [227.01713982]\n",
|
||
" [275.17884911]\n",
|
||
" [267.15189756]\n",
|
||
" [385.95078048]\n",
|
||
" [284.81119097]\n",
|
||
" [191.698553 ]\n",
|
||
" [254.30877508]\n",
|
||
" [275.17884911]\n",
|
||
" [214.17401734]\n",
|
||
" [199.72550455]\n",
|
||
" [220.59557858]\n",
|
||
" [233.43870105]\n",
|
||
" [239.86026229]\n",
|
||
" [281.60041035]\n",
|
||
" [259.12494601]\n",
|
||
" [228.62253013]\n",
|
||
" [231.83331075]\n",
|
||
" [324.94594871]\n",
|
||
" [334.57829057]\n",
|
||
" [358.65914522]\n",
|
||
" [339.3944615 ]\n",
|
||
" [273.5734588 ]\n",
|
||
" [271.96806849]\n",
|
||
" [299.25970376]\n",
|
||
" [262.33572663]\n",
|
||
" [329.76211964]\n",
|
||
" [182.06621114]\n",
|
||
" [190.09316269]\n",
|
||
" [206.14706579]\n",
|
||
" [231.83331075]\n",
|
||
" [206.14706579]\n",
|
||
" [254.30877508]\n",
|
||
" [267.15189756]\n",
|
||
" [255.91416539]\n",
|
||
" [255.91416539]\n",
|
||
" [302.47048438]\n",
|
||
" [235.04409136]\n",
|
||
" [283.20580066]\n",
|
||
" [268.75728787]\n",
|
||
" [283.20580066]\n",
|
||
" [283.20580066]\n",
|
||
" [271.96806849]\n",
|
||
" [227.01713982]\n",
|
||
" [233.43870105]\n",
|
||
" [263.94111694]\n",
|
||
" [320.12977778]\n",
|
||
" [323.3405584 ]\n",
|
||
" [227.01713982]\n",
|
||
" [227.01713982]\n",
|
||
" [233.43870105]\n",
|
||
" [284.81119097]\n",
|
||
" [204.54167548]\n",
|
||
" [220.59557858]\n",
|
||
" [209.35784641]\n",
|
||
" [218.99018827]\n",
|
||
" [235.04409136]\n",
|
||
" [215.77940765]\n",
|
||
" [321.73516809]\n",
|
||
" [227.01713982]\n",
|
||
" [268.75728787]\n",
|
||
" [305.681265 ]\n",
|
||
" [267.15189756]\n",
|
||
" [166.01230804]\n",
|
||
" [246.28182353]\n",
|
||
" [292.83814252]\n",
|
||
" [225.41174951]\n",
|
||
" [236.64948167]\n",
|
||
" [276.78423942]\n",
|
||
" [201.33089486]\n",
|
||
" [233.43870105]\n",
|
||
" [265.54650725]\n",
|
||
" [252.70338477]\n",
|
||
" [170.82847897]\n",
|
||
" [273.5734588 ]\n",
|
||
" [312.10282623]\n",
|
||
" [315.31360685]\n",
|
||
" [302.47048438]\n",
|
||
" [201.33089486]\n",
|
||
" [267.15189756]\n",
|
||
" [188.48777238]\n",
|
||
" [186.88238207]\n",
|
||
" [227.01713982]\n",
|
||
" [186.88238207]\n",
|
||
" [315.31360685]\n",
|
||
" [238.25487198]\n",
|
||
" [233.43870105]\n",
|
||
" [210.96323672]\n",
|
||
" [255.91416539]\n",
|
||
" [252.70338477]\n",
|
||
" [286.41658128]\n",
|
||
" [262.33572663]\n",
|
||
" [263.94111694]\n",
|
||
" [257.5195557 ]\n",
|
||
" [273.5734588 ]\n",
|
||
" [334.57829057]\n",
|
||
" [194.90933362]\n",
|
||
" [194.90933362]\n",
|
||
" [194.90933362]\n",
|
||
" [202.93628517]\n",
|
||
" [202.93628517]\n",
|
||
" [214.17401734]\n",
|
||
" [202.93628517]\n",
|
||
" [198.12011424]\n",
|
||
" [202.93628517]\n",
|
||
" [198.12011424]\n",
|
||
" [202.93628517]\n",
|
||
" [202.93628517]\n",
|
||
" [222.20096889]\n",
|
||
" [254.30877508]\n",
|
||
" [252.70338477]\n",
|
||
" [218.99018827]\n",
|
||
" [267.15189756]\n",
|
||
" [251.09799446]\n",
|
||
" [279.99502004]\n",
|
||
" [244.67643322]\n",
|
||
" [202.93628517]\n",
|
||
" [175.6446499 ]\n",
|
||
" [289.6273619 ]\n",
|
||
" [246.28182353]\n",
|
||
" [249.49260415]\n",
|
||
" [241.4656526 ]\n",
|
||
" [239.86026229]\n",
|
||
" [241.4656526 ]\n",
|
||
" [260.73033632]\n",
|
||
" [260.73033632]\n",
|
||
" [262.33572663]\n",
|
||
" [244.67643322]\n",
|
||
" [275.17884911]\n",
|
||
" [307.2866553 ]\n",
|
||
" [288.02197159]\n",
|
||
" [251.09799446]\n",
|
||
" [252.70338477]\n",
|
||
" [223.8063592 ]\n",
|
||
" [206.14706579]\n",
|
||
" [206.14706579]\n",
|
||
" [270.36267818]\n",
|
||
" [279.99502004]\n",
|
||
" [276.78423942]\n",
|
||
" [223.8063592 ]\n",
|
||
" [186.88238207]\n",
|
||
" [146.74762433]\n",
|
||
" [212.56862703]\n",
|
||
" [251.09799446]\n",
|
||
" [318.52438747]\n",
|
||
" [329.76211964]\n",
|
||
" [246.28182353]\n",
|
||
" [215.77940765]\n",
|
||
" [223.8063592 ]\n",
|
||
" [225.41174951]\n",
|
||
" [180.46082083]\n",
|
||
" [201.33089486]\n",
|
||
" [201.33089486]\n",
|
||
" [207.7524561 ]\n",
|
||
" [183.67160145]\n",
|
||
" [241.4656526 ]\n",
|
||
" [254.30877508]\n",
|
||
" [259.12494601]\n",
|
||
" [254.30877508]\n",
|
||
" [259.12494601]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"predictions = regr.predict(test_x)\n",
|
||
"print(predictions)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<details><summary>Click here for the solution</summary>\n",
|
||
"\n",
|
||
"```python \n",
|
||
"predictions = regr.predict(test_x)\n",
|
||
"\n",
|
||
"```\n",
|
||
"\n",
|
||
"</details>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Finally use the `predictions` and the `test_y` data and find the Mean Absolute Error value using the `np.absolute` and `np.mean` function like done previously\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Mean Absolute Error: 19.10\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"test_y = np.asanyarray(test[['CO2EMISSIONS']])\n",
|
||
"print(\"Mean Absolute Error: %.2f\" % np.mean(np.absolute(predictions - test_y)))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<details><summary>Click here for the solution</summary>\n",
|
||
"\n",
|
||
"```python \n",
|
||
"print(\"Mean Absolute Error: %.2f\" % np.mean(np.absolute(predictions - test_y)))\n",
|
||
"\n",
|
||
"```\n",
|
||
"\n",
|
||
"</details>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can see that the MAE is much worse when we train using `ENGINESIZE` than `FUELCONSUMPTION_COMB`\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",
|
||
"Azim Hirjani\n",
|
||
"\n",
|
||
"## <h3 align=\"center\"> © IBM Corporation. All rights reserved. <h3/>\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 Holla | Changed URL of the csv |\n",
|
||
"| 2020-08-27 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\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": "20d6dc1d9e74df451be22381c972d7921c93657bea402a00c749dca52bb85996"
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|