From bb9b4cd6538249660bd4c5824b7f1fa60f4ff462 Mon Sep 17 00:00:00 2001 From: 202310715145 SUMIH <202310715145@mhs.ubharajaya.ac.id> Date: Thu, 20 Nov 2025 10:50:45 +0700 Subject: [PATCH] Delete SUMIH_202310715145_ML0101EN-Reg-Mulitple-Linear-Regression-Co2.ipynb --- ...N-Reg-Mulitple-Linear-Regression-Co2.ipynb | 822 ------------------ 1 file changed, 822 deletions(-) delete mode 100644 SUMIH_202310715145_ML0101EN-Reg-Mulitple-Linear-Regression-Co2.ipynb diff --git a/SUMIH_202310715145_ML0101EN-Reg-Mulitple-Linear-Regression-Co2.ipynb b/SUMIH_202310715145_ML0101EN-Reg-Mulitple-Linear-Regression-Co2.ipynb deleted file mode 100644 index a1ea77c..0000000 --- a/SUMIH_202310715145_ML0101EN-Reg-Mulitple-Linear-Regression-Co2.ipynb +++ /dev/null @@ -1,822 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

\n", - " \n", - " \"Skills\n", - " \n", - "

\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": [ - "

Table of contents

\n", - "\n", - "
\n", - "
    \n", - "
  1. Understanding the Data
  2. \n", - "
  3. Reading the Data in
  4. \n", - "
  5. Multiple Regression Model
  6. \n", - "
  7. Prediction
  8. \n", - "
  9. Practice
  10. \n", - "
\n", - "
\n", - "
\n", - "
\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Importing Needed packages\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import pandas as pd\n", - "import pylab as pl\n", - "import numpy as np\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Downloading Data\n", - "To download the data, we will use !wget to download it from IBM Object Storage.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--2025-10-17 02:26:23-- 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.003s \n", - "\n", - "2025-10-17 02:26:23 (22.0 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", - "

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", - "- **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": [ - "

Reading the data in

\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
MODELYEARMAKEMODELVEHICLECLASSENGINESIZECYLINDERSTRANSMISSIONFUELTYPEFUELCONSUMPTION_CITYFUELCONSUMPTION_HWYFUELCONSUMPTION_COMBFUELCONSUMPTION_COMB_MPGCO2EMISSIONS
02014ACURAILXCOMPACT2.04AS5Z9.96.78.533196
12014ACURAILXCOMPACT2.44M6Z11.27.79.629221
22014ACURAILX HYBRIDCOMPACT1.54AV7Z6.05.85.948136
32014ACURAMDX 4WDSUV - SMALL3.56AS6Z12.79.111.125255
42014ACURARDX AWDSUV - SMALL3.56AS6Z12.18.710.627244
\n", - "
" - ], - "text/plain": [ - " MODELYEAR MAKE MODEL VEHICLECLASS ENGINESIZE CYLINDERS \\\n", - "0 2014 ACURA ILX COMPACT 2.0 4 \n", - "1 2014 ACURA ILX COMPACT 2.4 4 \n", - "2 2014 ACURA ILX HYBRID COMPACT 1.5 4 \n", - "3 2014 ACURA MDX 4WD SUV - SMALL 3.5 6 \n", - "4 2014 ACURA RDX AWD SUV - SMALL 3.5 6 \n", - "\n", - " TRANSMISSION FUELTYPE FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n", - "0 AS5 Z 9.9 6.7 \n", - "1 M6 Z 11.2 7.7 \n", - "2 AV7 Z 6.0 5.8 \n", - "3 AS6 Z 12.7 9.1 \n", - "4 AS6 Z 12.1 8.7 \n", - "\n", - " FUELCONSUMPTION_COMB FUELCONSUMPTION_COMB_MPG CO2EMISSIONS \n", - "0 8.5 33 196 \n", - "1 9.6 29 221 \n", - "2 5.9 48 136 \n", - "3 11.1 25 255 \n", - "4 10.6 27 244 " - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.read_csv(\"FuelConsumption.csv\")\n", - "\n", - "# take a look at the dataset\n", - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's select some features that we want to use for regression.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ENGINESIZECYLINDERSFUELCONSUMPTION_CITYFUELCONSUMPTION_HWYFUELCONSUMPTION_COMBCO2EMISSIONS
02.049.96.78.5196
12.4411.27.79.6221
21.546.05.85.9136
33.5612.79.111.1255
43.5612.18.710.6244
53.5611.97.710.0230
63.5611.88.110.1232
73.7612.89.011.1255
83.7613.49.511.6267
\n", - "
" - ], - "text/plain": [ - " ENGINESIZE CYLINDERS FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n", - "0 2.0 4 9.9 6.7 \n", - "1 2.4 4 11.2 7.7 \n", - "2 1.5 4 6.0 5.8 \n", - "3 3.5 6 12.7 9.1 \n", - "4 3.5 6 12.1 8.7 \n", - "5 3.5 6 11.9 7.7 \n", - "6 3.5 6 11.8 8.1 \n", - "7 3.7 6 12.8 9.0 \n", - "8 3.7 6 13.4 9.5 \n", - "\n", - " FUELCONSUMPTION_COMB CO2EMISSIONS \n", - "0 8.5 196 \n", - "1 9.6 221 \n", - "2 5.9 136 \n", - "3 11.1 255 \n", - "4 10.6 244 \n", - "5 10.0 230 \n", - "6 10.1 232 \n", - "7 11.1 255 \n", - "8 11.6 267 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cdf = df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY','FUELCONSUMPTION_COMB','CO2EMISSIONS']]\n", - "cdf.head(9)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's plot Emission values with respect to Engine size:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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2Lx5s/OxlpYWbNu2DYMGDQIA9O/fHzExMW5jampqsHfvXucYIiIiatvaW3nypqYmfPHFF86vq6qqsHv3bqSkpKBHjx4oLCzEokWLkJ2djezsbCxatAgJCQm49dZbAQDJycmYMmUKZs+ejdTUVKSkpGDOnDnIzc3FiBEjrHpbREREFEYsDXZ27dqFYcOGOb+eNWsWAGDSpElYuXIl5s2bhxMnTmDq1Kk4cuQILrvsMrzzzjtISkpyvqa4uBjt27fHxIkTceLECQwfPhwrV66EnVuQiIiICGFUZ8dK0VZnh4iIqC2I+Do7REREREZgsENERERRzdKcnXChXsmLtkrKRERE0Uz93A6UkcNgB3A2FmUlZSIiosjT2NiI5ORkn88zQRnAmTNn8O233yIpKSlgdWYtGhoakJWVhYMHD7aZxGe+Z77naMX3zPccrSL5PSuKgsbGRmRkZKBdO9+ZOVzZAdCuXTtkZmaadvy2WKWZ77lt4HtuG/ie24ZIfc/+VnRUTFAmIiKiqMZgh4iIiKIagx0TxcXF4aGHHkJcXJzVUwkZvue2ge+5beB7bhvawntmgjIRERFFNa7sEBERUVRjsENERERRjcEOERERRTUGO0RERBTVGOyY5P3338fYsWORkZEBm82G9evXWz0lUy1evBgDBgxAUlISunXrhvHjx+Ozzz6zelqmWr58OS6++GJnIa6BAwfirbfesnpaIbN48WLYbDYUFhZaPRVTLViwADabze2Wnp5u9bRMV11djdtvvx2pqalISEjAL37xC1RWVlo9LdP06tWr1c/ZZrNh2rRpVk/NNKdPn8Yf//hH9O7dG/Hx8TjvvPPw5z//GWfOnLF6aoZjBWWTHDt2DD//+c9x55134vrrr7d6Oqbbtm0bpk2bhgEDBuD06dN44IEHMGrUKHz66adITEy0enqmyMzMxKOPPorzzz8fALBq1Srk5eXhX//6F/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": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(cdf.ENGINESIZE, cdf.CO2EMISSIONS, color='blue')\n", - "plt.xlabel(\"Engine size\")\n", - "plt.ylabel(\"Emission\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Creating train and test dataset\n", - "Train/Test Split involves splitting the dataset into training and testing sets respectively, which are mutually exclusive. After which, you train with the training set and test with the testing set. \n", - "This will provide a more accurate evaluation on out-of-sample accuracy because the testing dataset is not part of the dataset that have been used to train the model. Therefore, it gives us a better understanding of how well our model generalizes on new data.\n", - "\n", - "We know the outcome of each data point in the testing dataset, making it great to test with! Since this data has not been used to train the model, the model has no knowledge of the outcome of these data points. So, in essence, it is truly an out-of-sample testing.\n", - "\n", - "Let's split our dataset into train and test sets. Around 80% of the entire dataset will be used for training and 20% for testing. We create a mask to select random rows using the __np.random.rand()__ function: \n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "msk = np.random.rand(len(df)) < 0.8\n", - "train = cdf[msk]\n", - "test = cdf[~msk]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Train data distribution\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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7NiBadOmYcCAAThz5gweeeQRjBo1Cp9//jmSkpKsnp4psrOz8dRTT+G8884DAKxevRp5eXn45z//iT59+lg8O3OVlZVhxYoVuOiii6yeSkj06dMH27Ztc34fExNj4WzMd/ToUVx11VUYNmwY3nvvPaSlpeHQoUPo3Lmz1VMzTVlZGRwOh/P7AwcOYOTIkbj55pstnJW5nn76abz88stYvXo1+vTpgz179uCee+6B3W7HjBkzrJ6eoRjsmGTMmDEYM2aM1dMImffff9/t+5UrVyItLQ3l5eW45pprLJqVucaNG+f2/ZNPPomXXnoJH3/8cVQHOw0NDbjjjjvwpz/9CU888YTV0wmJ9u3bt4nVHNXTTz+NnJwcrFy50nlfz549rZtQCHTr1s3t+6eeegq9e/fGkCFDLJqR+f7+978jLy8PN9xwAwDlZ7xu3Trs2bPH4pkZj5exyBR1dXUAgJSUFItnEhoOhwPFxcU4ceIEBg4caPV0TDVt2jTccMMNGDFihNVTCZmDBw8iKysLvXr1wm233YavvvrK6imZavPmzbjssstw8803Iy0tDZdccgn+9Kc/WT2tkGlubsbatWvxm9/8xtDm0OHm6quvxocffoh///vfAID//d//xa5du3D99ddbPDPjcWWHDCeEwKxZs3D11Vejb9++Vk/HVPv378fAgQNx6tQpdOzYERs2bMAvf/lLq6dlmuLiYnz66acoKyuzeiohc8UVV+D111/H+eefj++//x5PPPEEBg0ahM8++wypqalWT88UX331FV566SXMmjULDz/8MD755BM88MADiI+Px1133WX19Ey3ceNGHDt2DHfffbfVUzHVgw8+iLq6OlxwwQWIiYmBw+HAk08+iUmTJlk9NcMx2CHDFRQUYN++fdi1a5fVUzHdL37xC+zduxfHjh3D+vXrMXnyZOzYsSMqA57KykrMmDEDW7ZsQYcOHayeTsi4Xo7u168fBg4ciN69e2P16tWYNWuWhTMzT0tLCy677DIsXLgQAHDJJZfgs88+w0svvdQmgp3XXnsNY8aMQVZWltVTMdUbb7yBtWvXoqioCH369MHevXtRWFiIrKwsTJ482erpGYrBDhlq+vTp2Lx5Mz766CNkZ2dbPR3TxcXFOROUL7vsMpSVleGFF17AK6+8YvHMjFdeXo7a2lr079/feZ/D4cBHH32EZcuWoampKeoTdwEgKSkJ/fr1w8GDB62eimkyMzNbBewXXngh1q9fb9GMQuebb77Btm3bUFJSYvVUTDd37lz853/+J2677TYASjD/zTffYNGiRQx2iLwRQmD69OnYsGEDSktL0atXL6unZAkhBJqamqyehimGDx+O/fv3u913zz334IILLsCDDz7YJgIdAGhqasK//vUvDB482OqpmOaqq65qVTri3//+N3r06GHRjEJH3VyhJu1Gs5MnT6JdO/fU3ZiYGG49J3kNDQ348ssvnd9XVFRg7969SElJQffu3S2cmTmmTZuGoqIibNq0CcnJyaipqQEA2O12JCQkWDw7czz88MMYM2YMcnJycPz4cRQXF6O0tLTVzrRokZyc3CoHKykpCampqVGdmzVnzhyMGzcO3bt3R21tLZ544gnU19dH3V++rmbOnIlBgwZh4cKFuOWWW/DJJ59gxYoVWLFihdVTM1VLSwtWrlyJyZMno3376P94HDduHJ588kl0794dffr0wT//+U8sWbIEv/nNb6yemvEEmWL79u0CQKvb5MmTrZ6aKby9VgBi5cqVVk/NNL/5zW9Ejx49RFxcnOjWrZsYPny42LJli9XTCqkhQ4aIGTNmWD0NU916660iMzNTxMbGiqysLJGfny8+++wzq6dlurfeekv07dtXxMfHiwsuuECsWLHC6imZ7oMPPhAAxBdffGH1VEKivr5ezJgxQ3Tv3l106NBBnHvuueKRRx4RTU1NVk/NcDYhhLAmzCIiIiIyH+vsEBERUVRjsENERERRjcEOERERRTUGO0RERBTVGOwQERFRVGOwQ0RERFGNwQ4RERFFNQY7REREFNUY7BBRxFm1ahU6d+5s6RyGDh2KwsJCS+dARHJYQZmIDHP33Xdj9erVre4fPXq0oT3DGhsbcfz4caSlpRl2TK1++uknxMbGIjk52bI5EJGc6O90RkQhdd1112HlypVu98XHxxt6joSEBMsbzKakpFh6fiKSx8tYRGSo+Ph4ZGRkuN26dOnifNxms+HVV1/FjTfeiMTEROTm5mLz5s1ux9i8eTNyc3ORkJCAYcOGYfXq1bDZbDh27BiA1pex5s+fj1/96ldYs2YNevbsCbvdjttuuw3Hjx93jhFCYPHixTj33HORkJCAiy++GG+++abf17J8+XLk5uaiQ4cOSE9Px8SJE52PuV7GKi0thc1ma3W7++67nePfeust9O/fHx06dMC5556LBQsW4MyZMxrfXSLSg8EOEYXcggULcMstt2Dfvn24/vrrcccdd+Cnn34CAHz99deYOHEiJkyYgL179+K+++7DI488EvCYhw4dwsaNG/H222/j7bffxo4dO/DUU085H//973+PlStX4qWXXsJnn32GmTNn4s4778SOHTu8Hm/Pnj144IEH8Pjjj+OLL77A+++/j2uuucbr2EGDBqG6utp5++tf/4oOHTo4x3/wwQe488478cADD+Dzzz/HK6+8glWrVuHJJ5/U+tYRkR6W9lwnoqgyefJkERMTI5KSktxujz/+uHMMAPH73//e+X1DQ4Ow2WzivffeE0II8eCDD4q+ffu6HfeRRx4RAMTRo0eFEEKsXLlS2O125+OPPfaYSExMFPX19c775s6dK6644grnOTp06CB2797tdtwpU6aISZMmeX0t69evF506dXI7pqshQ4aIGTNmtLr/xx9/FL179xZTp0513jd48GCxcOFCt3Fr1qwRmZmZXo9NRMZizg4RGWrYsGF46aWX3O7zzG+56KKLnP+dlJSE5ORk1NbWAgC++OILDBgwwG385ZdfHvC8PXv2dEsWzszMdB7z888/x6lTpzBy5Ei35zQ3N+OSSy7xeryRI0eiR48eOPfcc3Hdddfhuuuuc1568+X06dO46aab0L17d7zwwgvO+8vLy1FWVua2kuNwOHDq1CmcPHnS7zGJKHgMdojIUElJSTjvvPP8jomNjXX73mazoaWlBYCSW2Oz2dweFxKbRv0dU/36zjvv4JxzznEb5yt5Ojk5GZ9++ilKS0uxZcsWPProo5g/fz7Kysp8bnv/j//4D3z77bcoKytD+/Zn//fa0tKCBQsWID8/v9VzOnToEPC1EVFwGOwQUVi54IIL8O6777rdt2fPnqCO+ctf/hLx8fH49ttvMWTIEOnntW/fHiNGjMCIESPw2GOPoXPnzvjrX//qNWhZsmQJ3njjDfz9739Hamqq22OXXnopvvjii4BBIBGZg8EOERmqqakJNTU1bve1b98eXbt2lXr+fffdhyVLluDBBx/ElClTsHfvXqxatQoAWq34yEpOTsacOXMwc+ZMtLS04Oqrr0Z9fT12796Njh07YvLkya2e8/bbb+Orr77CNddcgy5duuDdd99FS0sLfvGLX7Qau23bNsybNw9//OMf0bVrV+frT0hIgN1ux6OPPoqxY8ciJycHN998M9q1a4d9+/Zh//79eOKJJ3S9JiKSx91YRGSo999/H5mZmW63q6++Wvr5vXr1wptvvomSkhJcdNFFeOmll5y7sYKp1/P//t//w6OPPopFixbhwgsvxOjRo/HWW2+hV69eXsd37twZJSUluPbaa3HhhRfi5Zdfxrp169CnT59WY3ft2gWHw4H777/f7XXPmDEDgFJU8e2338bWrVsxYMAAXHnllViyZAl69Oih+/UQkTxWUCaisPfkk0/i5ZdfRmVlpdVTIaIIxMtYRBR2li9fjgEDBiA1NRV/+9vf8Mwzz6CgoMDqaRFRhGKwQ0Rh5+DBg3jiiSfw008/oXv37pg9ezYeeughq6dFRBGKl7GIiIgoqjFBmYiIiKIagx0iIiKKagx2iIiIKKox2CEiIqKoxmCHiIiIohqDHSIiIopqDHaIiIgoqjHYISIioqj2/wGI/g+LPhpX1AAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "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": [ - "

Multiple Regression Model

\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In reality, there are multiple variables that impact the co2emission. When more than one independent variable is present, the process is called multiple linear regression. An example of multiple linear regression is predicting co2emission using the features FUELCONSUMPTION_COMB, EngineSize and Cylinders of cars. The good thing here is that multiple linear regression model is the extension of the simple linear regression model.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/utils/validation.py:37: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", - " LARGE_SPARSE_SUPPORTED = LooseVersion(scipy_version) >= '0.14.0'\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Coefficients: [[10.74801928 7.48168159 9.63200326]]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:35: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " eps=np.finfo(np.float).eps,\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:597: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " eps=np.finfo(np.float).eps, copy_X=True, fit_path=True,\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:836: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " eps=np.finfo(np.float).eps, copy_X=True, fit_path=True,\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:862: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " eps=np.finfo(np.float).eps, positive=False):\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1097: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " max_n_alphas=1000, n_jobs=None, eps=np.finfo(np.float).eps,\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1344: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " max_n_alphas=1000, n_jobs=None, eps=np.finfo(np.float).eps,\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1480: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " eps=np.finfo(np.float).eps, copy_X=True, positive=False):\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:152: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " precompute=False, eps=np.finfo(np.float).eps,\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:320: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " eps=np.finfo(np.float).eps, random_state=None,\n", - "/home/jupyterlab/conda/envs/python/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:580: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " eps=4 * np.finfo(np.float).eps, n_jobs=None,\n" - ] - } - ], - "source": [ - "from sklearn import linear_model\n", - "regr = linear_model.LinearRegression()\n", - "x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n", - "y = np.asanyarray(train[['CO2EMISSIONS']])\n", - "regr.fit (x, y)\n", - "# The coefficients\n", - "print ('Coefficients: ', regr.coef_)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As mentioned before, __Coefficient__ and __Intercept__ are the parameters of the fitted line. \n", - "Given that it is a multiple linear regression model with 3 parameters and that the parameters are the intercept and coefficients of the hyperplane, sklearn can estimate them from our data. Scikit-learn uses plain Ordinary Least Squares method to solve this problem.\n", - "\n", - "#### Ordinary Least Squares (OLS)\n", - "OLS is a method for estimating the unknown parameters in a linear regression model. OLS chooses the parameters of a linear function of a set of explanatory variables by minimizing the sum of the squares of the differences between the target dependent variable and those predicted by the linear function. In other words, it tries to minimizes the sum of squared errors (SSE) or mean squared error (MSE) between the target variable (y) and our predicted output ($\\hat{y}$) over all samples in the dataset.\n", - "\n", - "OLS can find the best parameters using of the following methods:\n", - "* Solving the model parameters analytically using closed-form equations\n", - "* Using an optimization algorithm (Gradient Descent, Stochastic Gradient Descent, Newton’s Method, etc.)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

Prediction

\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mean Squared Error (MSE) : 534.77\n", - "Variance score: 0.87\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": [ - "

Practice

\n", - "Try to use a multiple linear regression with the same dataset, but this time use FUELCONSUMPTION_CITY and FUELCONSUMPTION_HWY instead of FUELCONSUMPTION_COMB. Does it result in better accuracy?\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Coefficients: [[10.77414197 7.12392251 6.25127329 3.09723422]]\n", - "Residual sum of squares : 535.12\n", - "Variance score: 0.87\n" - ] - } - ], - "source": [ - "# write your code here\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", - "\n", - "# The coefficients\n", - "print ('Coefficients: ', regr.coef_)\n", - "\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", - "\n", - "# Explained variance score: 1 is perfect prediction\n", - "print('Variance score: %.2f' % regr.score(x, y))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
Click here for the solution\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", - "
\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", - "Joseph Santarcangelo\n", - "\n", - "##

© IBM Corporation 2020. All rights reserved.

\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 -}