Praktikum_Machine_Learning/Regression/Regiska Sari Putri Prasetyo_202310715132_Regresi Multiple Linear.ipynb

767 lines
99 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 06:21:09-- 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 06:21:09 (41.8 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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+7DCavDgwcr06dPtPgxL3XPPPUqnTp2UuLg4JSMjQ8nNzVX27dtn92FZ7p133lF69eqlJCQkKFdeeaXy2muv2X1Ilvv73/+uAFD2799v96GERXV1tTJ9+nSlc+fOSosWLZRLL71Ueeqpp5S6ujq7D810DkVRFHuGWURERETWY50dIiIiimkc7BAREVFM42CHiIiIYhoHO0RERBTTONghIiKimMbBDhEREcU0DnaIiIgopnGwQ0RERDGNgx0iijorVqxAmzZtbD2GIUOGIC8vz9ZjICI5rKBMRKaZOHEiXn/99UaP33LLLab2DKutrcXZs2fRsWNH07ap16lTpxAXF4fk5GTbjoGI5MR+pzMiCqtbb70Vy5cv93osISHB1H20bNnS9gaz7dq1s3X/RCSPl7GIyFQJCQlIT0/3urVt29b9vMPhwJ/+9CfccccdSExMRI8ePbBx40avbWzcuBE9evRAy5YtMXToULz++utwOBw4c+YMgMaXsebOnYuf/exnWLlyJbp27YqUlBTce++9OHv2rDtGURQUFBTg0ksvRcuWLdG3b1+89dZbQc9l6dKl6NGjB1q0aIG0tDTcdddd7uc8L2OVlJTA4XA0uk2cONEd/84776Bfv35o0aIFLr30Ujz77LO4cOGCzneXiIzgYIeIwu7ZZ5/F3Xffja+++gq33XYbfvnLX+LUqVMAgMOHD+Ouu+7CuHHjsGfPHjz88MN46qmnNLd56NAhbNiwAe+++y7effddbNu2DS+88IL7+d/97ndYvnw5li1bhn379mHGjBm4//77sW3bNr/b27VrFx599FE899xz2L9/PzZt2oSbbrrJb+zAgQNx/Phx9+2jjz5CixYt3PF///vfcf/99+PRRx/F119/jT/+8Y9YsWIFnn/+eb1vHREZYWvPdSKKKRMmTFCcTqeSlJTkdXvuuefcMQCU3/3ud+6fa2pqFIfDoXzwwQeKoijKY489pvTq1ctru0899ZQCQDl9+rSiKIqyfPlyJSUlxf38M888oyQmJirV1dXux+bMmaMMGDDAvY8WLVooO3bs8NrupEmTlPHjx/s9l3Xr1imtW7f22qanwYMHK9OnT2/0+H//+1+le/fuyuTJk92PDRo0SJk/f75X3MqVK5VOnTr53TYRmYs5O0RkqqFDh2LZsmVej/nmt/Tp08f930lJSUhOTkZlZSUAYP/+/cjOzvaKv/baazX327VrV69k4U6dOrm3+fXXX+P8+fMYMWKE12vq6+txzTXX+N3eiBEj0KVLF1x66aW49dZbceutt7ovvQXy448/4s4770Tnzp3xyiuvuB/fvXs3SktLvWZyXC4Xzp8/j3PnzgXdJhGFjoMdIjJVUlISLrvssqAxcXFxXj87HA40NDQAELk1DofD63lFYtFosG2q9++99x4uueQSr7hAydPJycn44osvUFJSgs2bN+Ppp5/G3LlzUVpaGnDZ+29/+1t8++23KC0tRfPmF/95bWhowLPPPovc3NxGr2nRooXmuRFRaDjYIaKIcuWVV+L999/3emzXrl0hbfPqq69GQkICvv32WwwePFj6dc2bN8fw4cMxfPhwPPPMM2jTpg0++ugjv4OWRYsW4c0338Rnn32G1NRUr+d+/vOfY//+/ZqDQCKyBgc7RGSquro6VFRUeD3WvHlztG/fXur1Dz/8MBYtWoTHHnsMkyZNwp49e7BixQoAaDTjIys5ORmzZ8/GjBkz0NDQgBtvvBHV1dXYsWMHWrVqhQkTJjR6zbvvvotvvvkGN910E9q2bYv3338fDQ0NuOKKKxrFfvjhh8jPz8cf/vAHtG/f3n3+LVu2REpKCp5++mmMHj0aWVlZ+MUvfoFmzZrhq6++QllZGebNm2fonIhIHldjEZGpNm3ahE6dOnndbrzxRunXd+vWDW+99RaKiorQp08fLFu2zL0aK5R6Pf/zP/+Dp59+GgsWLMBVV12FW265Be+88w66devmN75NmzYoKirCzTffjKuuugqvvvoq1qxZg549ezaK3b59O1wuFx555BGv854+fToAUVTx3XffxZYtW5CdnY3rrrsOixYtQpcuXQyfDxHJYwVlIop4zz//PF599VUcOXLE7kMhoijEy1hEFHGWLl2K7OxspKam4tNPP8XChQsxdepUuw+LiKIUBztEFHEOHjyIefPm4dSpU+jcuTNmzZqFJ554wu7DIqIoxctYREREFNOYoExEREQxjYMdIiIiimkc7BAREVFM42CHiIiIYhoHO0RERBTTONghIiKimMbBDhEREcU0DnaIiIgopv1/3/1D1h7yq0cAAAAASUVORK5CYII=\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: [[8.93139025 8.8082197 9.49265722]]\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) : 595.99\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": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficients: [[9.04049848 8.31238169 6.40689532 2.72679392]]\n",
"Residual sum of squares (MSE): 598.51\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))\n"
]
},
{
"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
}