Praktikum_Machine_Learning/Tugas.Regression/Ananda dwi prasetyo_202310715065-single linear regression.ipynb

938 lines
115 KiB
Plaintext
Raw Permalink 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",
"# 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": {
"tags": []
},
"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-20 04:38:57-- https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%202/data/FuelConsumptionCo2.csv\n",
"Resolving cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud (cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud)... 169.63.118.104, 169.63.118.104\n",
"Connecting to cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud (cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud)|169.63.118.104|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 72629 (71K) [text/csv]\n",
"Saving to: FuelConsumption.csv\n",
"\n",
"FuelConsumption.csv 100%[===================>] 70.93K --.-KB/s in 0.002s \n",
"\n",
"2025-10-20 04:38:57 (29.4 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": [
"In case you're working **locally** uncomment the below line. \n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": []
},
"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": {
"tags": []
},
"source": [
"### Data Exploration\n",
"Let's first have a descriptive exploration on our data.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"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": {
"tags": []
},
"source": [
"## Practice\n",
"Plot __CYLINDER__ vs the Emission, to see how linear is their relationship is:\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"\n",
"plt.scatter(cdf.CYLINDERS, cdf.CO2EMISSIONS, color='red')\n",
"plt.xlabel(\"Cylinders\")\n",
"plt.ylabel(\"Emission\")\n",
"plt.show()\n",
"\n"
]
},
{
"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": 18,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'train' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_68/94242891.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCYLINDERS\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCO2EMISSIONS\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'blue'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mregr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoef_\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mtrain_x\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mregr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mintercept_\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'-r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Cylinders\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Emission\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'train' is not defined"
]
}
],
"source": [
"plt.scatter(train.CYLINDERS, train.CO2EMISSIONS, color='blue')\n",
"plt.plot(train_x, regr.coef_[0][0]*train_x + regr.intercept_[0], '-r')\n",
"plt.xlabel(\"Cylinders\")\n",
"plt.ylabel(\"Emission\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"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 its just average error.\n",
"\n",
"* Mean Squared Error (MSE): Mean Squared Error (MSE) is the mean of the squared error. Its 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": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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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.14931961]]\n",
"Intercept: [68.73325706]\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",
"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": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficients: [[16.14931961]]\n",
"Intercept: [68.73325706]\n"
]
}
],
"source": [
"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_)"
]
},
{
"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": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[206.00247373]\n",
" [247.99070471]\n",
" [230.22645314]\n",
" [256.06536452]\n",
" [317.43277903]\n",
" [218.92192942]\n",
" [202.77260981]\n",
" [204.38754177]\n",
" [304.51332334]\n",
" [356.19114609]\n",
" [272.21468413]\n",
" [277.05948001]\n",
" [235.07124903]\n",
" [335.1970306 ]\n",
" [204.38754177]\n",
" [176.93369844]\n",
" [230.22645314]\n",
" [196.31288197]\n",
" [265.75495628]\n",
" [273.82961609]\n",
" [306.1282553 ]\n",
" [291.59386766]\n",
" [306.1282553 ]\n",
" [291.59386766]\n",
" [215.6920655 ]\n",
" [272.21468413]\n",
" [206.00247373]\n",
" [201.15767785]\n",
" [228.61152118]\n",
" [251.22056863]\n",
" [336.81196256]\n",
" [306.1282553 ]\n",
" [275.44454805]\n",
" [252.8355006 ]\n",
" [259.29522844]\n",
" [325.50743883]\n",
" [335.1970306 ]\n",
" [335.1970306 ]\n",
" [415.94362864]\n",
" [359.42101001]\n",
" [196.31288197]\n",
" [291.59386766]\n",
" [214.07713354]\n",
" [231.8413851 ]\n",
" [230.22645314]\n",
" [244.76084079]\n",
" [340.04182648]\n",
" [226.99658922]\n",
" [230.22645314]\n",
" [249.60563667]\n",
" [285.13413981]\n",
" [307.74318726]\n",
" [207.61740569]\n",
" [210.84726961]\n",
" [194.69795001]\n",
" [178.5486304 ]\n",
" [440.16760805]\n",
" [364.26580589]\n",
" [223.7667253 ]\n",
" [260.9101604 ]\n",
" [270.59975216]\n",
" [325.50743883]\n",
" [267.36988824]\n",
" [335.1970306 ]\n",
" [304.51332334]\n",
" [359.42101001]\n",
" [191.46808608]\n",
" [181.77849432]\n",
" [193.08301804]\n",
" [231.8413851 ]\n",
" [199.54274589]\n",
" [239.91604491]\n",
" [273.82961609]\n",
" [259.29522844]\n",
" [249.60563667]\n",
" [335.1970306 ]\n",
" [433.70788021]\n",
" [372.3404657 ]\n",
" [373.95539766]\n",
" [259.29522844]\n",
" [341.65675844]\n",
" [278.67441197]\n",
" [215.6920655 ]\n",
" [425.6332204 ]\n",
" [365.88073785]\n",
" [185.00835824]\n",
" [180.16356236]\n",
" [254.45043256]\n",
" [223.7667253 ]\n",
" [193.08301804]\n",
" [254.45043256]\n",
" [247.99070471]\n",
" [256.06536452]\n",
" [191.46808608]\n",
" [283.51920785]\n",
" [361.03594197]\n",
" [268.9848202 ]\n",
" [351.34635021]\n",
" [283.51920785]\n",
" [280.28934393]\n",
" [246.37577275]\n",
" [220.53686138]\n",
" [228.61152118]\n",
" [323.89250687]\n",
" [220.53686138]\n",
" [247.99070471]\n",
" [275.44454805]\n",
" [285.13413981]\n",
" [204.38754177]\n",
" [223.7667253 ]\n",
" [191.46808608]\n",
" [252.8355006 ]\n",
" [259.29522844]\n",
" [214.07713354]\n",
" [215.6920655 ]\n",
" [317.43277903]\n",
" [414.32869668]\n",
" [236.68618099]\n",
" [246.37577275]\n",
" [225.38165726]\n",
" [225.38165726]\n",
" [246.37577275]\n",
" [275.44454805]\n",
" [233.45631707]\n",
" [265.75495628]\n",
" [252.8355006 ]\n",
" [170.47397059]\n",
" [327.12237079]\n",
" [280.28934393]\n",
" [197.92781393]\n",
" [207.61740569]\n",
" [188.23822216]\n",
" [180.16356236]\n",
" [225.38165726]\n",
" [223.7667253 ]\n",
" [197.92781393]\n",
" [238.30111295]\n",
" [315.81784707]\n",
" [217.30699746]\n",
" [254.45043256]\n",
" [280.28934393]\n",
" [256.06536452]\n",
" [257.68029648]\n",
" [277.05948001]\n",
" [277.05948001]\n",
" [323.89250687]\n",
" [264.14002432]\n",
" [257.68029648]\n",
" [214.07713354]\n",
" [322.27757491]\n",
" [194.69795001]\n",
" [194.69795001]\n",
" [202.77260981]\n",
" [202.77260981]\n",
" [202.77260981]\n",
" [202.77260981]\n",
" [256.06536452]\n",
" [207.61740569]\n",
" [215.6920655 ]\n",
" [233.45631707]\n",
" [246.37577275]\n",
" [210.84726961]\n",
" [238.30111295]\n",
" [246.37577275]\n",
" [246.37577275]\n",
" [231.8413851 ]\n",
" [294.82373158]\n",
" [260.9101604 ]\n",
" [228.61152118]\n",
" [236.68618099]\n",
" [236.68618099]\n",
" [289.97893569]\n",
" [254.45043256]\n",
" [275.44454805]\n",
" [277.05948001]\n",
" [317.43277903]\n",
" [356.19114609]\n",
" [252.8355006 ]\n",
" [327.12237079]\n",
" [204.38754177]\n",
" [197.92781393]\n",
" [206.00247373]\n",
" [222.15179334]\n",
" [225.38165726]\n",
" [194.69795001]\n",
" [206.00247373]\n",
" [186.6232902 ]\n",
" [235.07124903]\n",
" [249.60563667]\n",
" [260.9101604 ]\n",
" [259.29522844]\n",
" [183.39342628]\n",
" [223.7667253 ]\n",
" [186.6232902 ]\n",
" [214.07713354]\n",
" [180.16356236]\n",
" [254.45043256]\n",
" [254.45043256]]\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": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean Absolute Error: 20.31\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": {
"tags": []
},
"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": {
"jp-MarkdownHeadingCollapsed": true,
"tags": []
},
"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
}