Praktikum_Machine_Learning/Regression/Syabrina Bening Putri_F5A2_202310715235_ML0101EN-Reg-Mulitple-Linear-Regression-Co2.ipynb
2025-11-19 13:34:04 +07:00

774 lines
100 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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": 11,
"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": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--2025-10-20 07:43:50-- 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-20 07:43:50 (45.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": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>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": 13,
"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": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>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": 14,
"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": 15,
"metadata": {},
"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/r162fx7MxVUVGB5557DhdffLHVUwmJfv36YcuWLc6v7Xa7hbMx35EjR3DFFVdg2LBheOutt9CtWzccOHAA55xzjtVTM01FRQUcDofz671792LkyJG48cYbLZyVuR577DE888wzWLVqFfr164ddu3bhzjvvRHJyMmbMmGH19AzFYMcko0ePxujRo62eRshs2rTJ7esVK1agW7duqKysxFVXXWXRrMw1duxYt68f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SA9Le64TUVSZNGmSYrfblcTERLfbn//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": 16,
"metadata": {},
"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": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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e5dL3/PVquq+NbiOHBHHS0rCiyciIookh6IEqp/dvMiWiI8F4Y6wuFxAly7Bi406HOJ8FRViikpvPBERkVlkv785shNHzBhh0VtV3eoq7EREROFiZydOuFxiRCfQOJ16rKAg9JSW3qrqVldhJyIiChc7O3HCrBEWvVXVra7CTkREFC52duKEWSMsequqR6IKOxERUTjY2YkTZo2wqFXVAf8OTKCq6nrjiYiIIo2dnThh5giLWlX9kku8j2dni+O+u7r0xhMREUUSt54jfraeq7uxAO+FymoHSG/HgxmUiYgomsXE1vMPP/wQo0ePRlZWFhwOB9atW+f1uKIomDt3LrKyspCcnIxBgwZh//79XjH19fWYNm0aOnbsiDZt2mDMmDH4Tmulbhwze4RFrao+fry4D9Vx0RtPREQUCbZ2ds6cOYNrrrkGS5cuDfj4ggULsGjRIixduhS7d+9GRkYGhg0bhlOnTrljCgoKsHbtWhQXF2Pnzp04ffo0Ro0aBZfetMFxIj8fOHwY2LYNKCoS9xUVnEoiIqLmK2qmsRwOB9auXYuxY8cCEKM6WVlZKCgowGOPPQZAjOKkp6fjhRdewEMPPYSamhpcfPHFWLlyJe666y4AwNGjR5GTk4O///3vGDFihNS142Uai4iIqDmJiWksLRUVFaiqqsLw4cPdx5KSkjBw4EDs2rULAFBWVobz5897xWRlZSE3N9cdE0h9fT1qa2u9bkRERBSforazU1VVBQBIT0/3Op6enu5+rKqqComJiWjfvn3QmEDmz5+P1NRU9y0nJ8fk1hMREVG0iNrOjsrhs5daURS/Y75CxTz++OOoqalx3yorK01pKxEREUWfqO3sZGRkAIDfCE11dbV7tCcjIwMNDQ04ceJE0JhAkpKS0K5dO68bERERxaeo7ex07doVGRkZ2Lx5s/tYQ0MDtm/fjv79+wMAevfujYSEBK+YY8eOYd++fe4YIiIiat5a2nnx06dP46uvvnL/XFFRgb1796JDhw649NJLUVBQgOeeew7du3dH9+7d8dxzz6F169a45557AACpqamYNGkSZs2ahbS0NHTo0AGzZ89Gz549MXToULteFhEREUURWzs7n376KQYPHuz+eebMmQCACRMmYMWKFSgsLERdXR0mT56MEydO4LrrrsOmTZuQkpLifs7ixYvRsmVL3Hnnnairq8OQIUOwYsUKOJnRjoiIiBBFeXbsxDw7REREsSfm8+wQERERmcHWaaxooQ5uMbkgERFR7FC/t0NNUrGzA7hrbTG5IBERUew5deoUUlNTgz7ONTsAGhsbcfToUaSkpIRMWKhHbW0tcnJyUFlZ2WzWAvE18zXHK75mvuZ4FcuvWVEUnDp1CllZWWjRIvjKHI7sAGjRogWys7MtO39zTFzI19w88DU3D3zNzUOsvmatER0VFygTERFRXGNnh4iIiOIaOzsWSkpKwtNPP42kpCS7mxIxfM3NA19z88DX3Dw0h9fMBcpEREQU1ziyQ0RERHGNnR0iIiKKa+zsEBERUVxjZ4eIiIjiGjs7Fvnwww8xevRoZGVlweFwYN26dXY3yVLz589H3759kZKSgk6dOmHs2LE4cOCA3c2y1Msvv4xevXq5E3H169cP7733nt3Nipj58+fD4XCgoKDA7qZYau7cuXA4HF63jIwMu5tluSNHjuC+++5DWloaWrdujZ///OcoKyuzu1mW6dKli9/n7HA4MGXKFLubZpkLFy7gqaeeQteuXZGcnIzLLrsMf/zjH9HY2Gh300zHDMoWOXPmDK655ho88MADuP322+1ujuW2b9+OKVOmoG/fvrhw4QKefPJJDB8+HF988QXatGljd/MskZ2djeeffx6XX345AODNN99EXl4ePvvsM1x99dU2t85au3fvxmuvvYZevXrZ3ZSIuPrqq7Flyxb3z06n08bWWO/EiRO44YYbMHjwYLz33nvo1KkTDh06hIsuusjupllm9+7dcLlc7p/37duHYcOG4Y477rCxVdZ64YUX8Morr+DNN9/E1VdfjU8//RQPPPAAUlNTMX36dLubZyp2diwycuRIjBw50u5mRMz777/v9fPy5cvRqVMnlJWV4aabbrKpVdYaPXq018/PPvssXn75ZXz88cdx3dk5ffo07r33XvzlL3/BvHnz7G5ORLRs2bJZjOaoXnjhBeTk5GD58uXuY126dLGvQRFw8cUXe/38/PPPo1u3bhg4cKBNLbLeRx99hLy8PNx6660AxGe8evVqfPrppza3zHycxiJL1NTUAAA6dOhgc0siw+Vyobi4GGfOnEG/fv3sbo6lpkyZgltvvRVDhw61uykRc/DgQWRlZaFr1664++678fXXX9vdJEtt2LABffr0wR133IFOnTrh2muvxV/+8he7mxUxDQ0NWLVqFX7zm9+YWhw62tx4443YunUrvvzySwDAv/71L+zcuRO/+tWvbG6Z+TiyQ6ZTFAUzZ87EjTfeiNzcXLubY6ny8nL069cP586dQ9u2bbF27VpcddVVdjfLMsXFxdizZw92795td1Mi5rrrrsNf//pX9OjRA99//z3mzZuH/v37Y//+/UhLS7O7eZb4+uuv8fLLL2PmzJl44okn8Mknn+DRRx9FUlISfv3rX9vdPMutW7cOJ0+exMSJE+1uiqUee+wx1NTU4Morr4TT6YTL5cKzzz6L8ePH290007GzQ6abOnUqPv/8c+zcudPupljuiiuuwN69e3Hy5EmsWbMGEyZMwPbt2+Oyw1NZWYnp06dj06ZNaNWqld3NiRjP6eiePXuiX79+6NatG958803MnDnTxpZZp7GxEX369MFzzz0HALj22muxf/9+vPzyy82is/PGG29g5MiRyMrKsrsplnrrrbewatUqFBUV4eqrr8bevXtRUFCArKwsTJgwwe7mmYqdHTLVtGnTsGHDBnz44YfIzs62uzmWS0xMdC9Q7tOnD3bv3o0XX3wRr776qs0tM19ZWRmqq6vRu3dv9zGXy4UPP/wQS5cuRX19fdwv3AWANm3aoGfPnjh48KDdTbFMZmamX4f9Zz/7GdasWWNTiyLnm2++wZYtW1BSUmJ3Uyw3Z84c/O53v8Pdd98NQHTmv/nmG8yfP5+dHaJAFEXBtGnTsHbtWpSWlqJr1652N8kWiqKgvr7e7mZYYsiQISgvL/c69sADD+DKK6/EY4891iw6OgBQX1+P//3f/8WAAQPsboplbrjhBr/UEV9++SU6d+5sU4siR91coS7ajWdnz55FixbeS3edTie3npO806dP46uvvnL/XFFRgb1796JDhw649NJLbWyZNaZMmYKioiKsX78eKSkpqKqqAgCkpqYiOTnZ5tZZ44knnsDIkSORk5ODU6dOobi4GKWlpX470+JFSkqK3xqsNm3aIC0tLa7XZs2ePRujR4/GpZdeiurqasybNw+1tbVx95evpxkzZqB///547rnncOedd+KTTz7Ba6+9htdee83uplmqsbERy5cvx4QJE9CyZfx/PY4ePRrPPvssLr30Ulx99dX47LPPsGjRIvzmN7+xu2nmU8gS27ZtUwD43SZMmGB30ywR6LUCUJYvX2530yzzm9/8RuncubOSmJioXHzxxcqQIUOUTZs22d2siBo4cKAyffp0u5thqbvuukvJzMxUEhISlKysLCU/P1/Zv3+/3c2y3MaNG5Xc3FwlKSlJufLKK5XXXnvN7iZZ7oMPPlAAKAcOHLC7KRFRW1urTJ8+Xbn00kuVVq1aKZdddpny5JNPKvX19XY3zXQORVEUe7pZRERERNZjnh0iIiKKa+zsEBERUVxjZ4eIiIjiGjs7REREFNfY2SEiIqK4xs4OERERxTV2doiIiCiusbNDREREcY2dHSKKOStWrMBFF11kaxsGDRqEgoICW9tARHKYQZmITDNx4kS8+eabfsdHjBhhas2wuro6nDp1Cp06dTLtnHr9+OOPSEhIQEpKim1tICI58V/pjIgi6pZbbsHy5cu9jiUlJZl6jeTkZNsLzHbo0MHW6xORPE5jEZGpkpKSkJGR4XVr3769+3GHw4HXX38dt912G1q3bo3u3btjw4YNXufYsGEDunfvjuTkZAwePBhvvvkmHA4HTp48CcB/Gmvu3Ln4+c9/jpUrV6JLly5ITU3F3XffjVOnTrljFEXBggULcNlllyE5ORnXXHMN3n77bc3XsmzZMnTv3h2tWrVCeno6xo0b537McxqrtLQUDofD7zZx4kR3/MaNG9G7d2+0atUKl112GZ555hlcuHBB57tLREaws0NEEffMM8/gzjvvxOeff45f/epXuPfee/Hjjz8CAA4fPoxx48Zh7Nix2Lt3Lx566CE8+eSTIc956NAhrFu3Du+88w7eeecdbN++Hc8//7z78aeeegrLly/Hyy+/jP3792PGjBm47777sH379oDn+/TTT/Hoo4/ij3/8Iw4cOID3338fN910U8DY/v3749ixY+7bP/7xD7Rq1cod/8EHH+C+++7Do48+ii+++AKvvvoqVqxYgWeffVbvW0dERthac52I4sqECRMUp9OptGnTxuv2xz/+0R0DQHnqqafcP58+fVpxOBzKe++9pyiKojz22GNKbm6u13mffPJJBYBy4sQJRVEUZfny5Upqaqr78aefflpp3bq1Ultb6z42Z84c5brrrnNfo1WrVsquXbu8zjtp0iRl/PjxAV/LmjVrlHbt2nmd09PAgQOV6dOn+x3/97//rXTr1k2ZPHmy+9iAAQOU5557zitu5cqVSmZmZsBzE5G5uGaHiEw1ePBgvPzyy17HfNe39OrVy/3fbdq0QUpKCqqrqwEABw4cQN++fb3if/nLX4a8bpcuXbwWC2dmZrrP+cUXX+DcuXMYNmyY13MaGhpw7bXXBjzfsGHD0LlzZ1x22WW45ZZbcMstt7in3oI5f/48br/9dlx66aV48cUX3cfLysqwe/dur5Ecl8uFc+fO4ezZs5rnJKLwsbNDRKZq06YNLr/8cs2YhIQEr58dDgcaGxsBiLU1DofD63FFYtOo1jnV+3fffReXXHKJV1ywxdMpKSnYs2cPSktLsWnTJvzhD3/A3LlzsXv37qDb3h955BF8++232L17N1q2bPrntbGxEc888wzy8/P9ntOqVauQr42IwsPODhFFlSuvvBJ///vfvY59+umnYZ3zqquuQlJSEr799lsMHDhQ+nktW7bE0KFDMXToUDz99NO46KKL8I9//CNgp2XRokV466238NFHHyEtLc3rsV/84hc4cOBAyE4gEVmDnR0iMlV9fT2qqqq8jrVs2RIdO3aUev5DDz2ERYsW4bHHHsOkSZOwd+9erFixAgD8RnxkpaSkYPbs2ZgxYwYaGxtx4403ora2Frt27ULbtm0xYcIEv+e88847+Prrr3HTTTehffv2+Pvf/47GxkZcccUVfrFbtmxBYWEh/vznP6Njx47u15+cnIzU1FT84Q9/wKhRo5CTk4M77rgDLVq0wOeff47y8nLMmzfP0GsiInncjUVEpnr//feRmZnpdbvxxhuln9+1a1e8/fbbKCkpQa9evfDyyy+7d2OFk6/nP//zP/GHP/wB8+fPx89+9jOMGDECGzduRNeuXQPGX3TRRSgpKcHNN9+Mn/3sZ3jllVewevVqXH311X6xO3fuhMvlwsMPP+z1uqdPnw5AJFV85513sHnzZvTt2xfXX389Fi1ahM6dOxt+PUQkjxmUiSjqPfvss3jllVdQWVlpd1OIKAZxGouIos6yZcvQt29fpKWl4X/+53+wcOFCTJ061e5mEVGMYmeHiKLOwYMHMW/ePPz444+49NJLMWvWLDz++ON2N4uIYhSnsYiIiCiucYEyERERxTV2doiIiCiusbNDREREcY2dHSIiIopr7OwQERFRXGNnh4iIiOIaOztEREQU19jZISIiorj2/wFUsoYf9HJDVgAAAABJRU5ErkJggg==\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": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficients: [[11.0479666 7.14624226 9.58182024]]\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, Newtons Method, etc.)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"prediction\">Prediction</h2>\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean Squared Error (MSE) : 599.96\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": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficients: [[11.23160902 6.45598471 6.94570618 2.0883399 ]]\n",
"Residual sum of squares (MSE): 610.81\n",
"Variance score (R^2): 0.86\n"
]
}
],
"source": [
"from sklearn import linear_model\n",
"import numpy as np\n",
"\n",
"# Membuat model regresi linear\n",
"regr = linear_model.LinearRegression()\n",
"\n",
"# Menentukan fitur dan target\n",
"x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n",
"y = np.asanyarray(train[['CO2EMISSIONS']])\n",
"\n",
"# Melatih model\n",
"regr.fit(x, y)\n",
"\n",
"# Menampilkan koefisien\n",
"print('Coefficients: ', regr.coef_)\n",
"\n",
"# Memprediksi nilai CO2EMISSIONS pada data test\n",
"y_ = regr.predict(np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']]))\n",
"\n",
"# Menghitung residual sum of squares dan variance score\n",
"x_test = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n",
"y_test = np.asanyarray(test[['CO2EMISSIONS']])\n",
"print(\"Residual sum of squares (MSE): %.2f\" % np.mean((y_ - y_test) ** 2))\n",
"print('Variance score (R^2): %.2f' % regr.score(x_test, y_test))"
]
},
{
"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"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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
}