ML0101EN Reg Simple Linear Regression Co2 Py v1
ML0101EN Reg Simple Linear Regression Co2 Py v1
December 5, 2018
#
Simple Linear Regression
About this Notebook In this notebook, we learn how to use scikit-learn to implement simple
linear regression. We download a dataset that is related to fuel consumption and Carbon dioxide
emission of cars. Then, we split our data into training and test sets, create a model using training
set, evaluate your model using test set, and finally use model to predict unknown value.
Did you know? When it comes to Machine Learning, you will likely be working with large
datasets. As a business, where can you host your data? IBM is offering a unique opportunity for
businesses, with 10 Tb of IBM Cloud Object Storage: Sign up now for free
1
• ENGINE SIZE e.g. 4.7
• CYLINDERS e.g 6
• TRANSMISSION e.g. A6
• FUEL CONSUMPTION in CITY(L/100 km) e.g. 9.9
• FUEL CONSUMPTION in HWY (L/100 km) e.g. 8.9
• FUEL CONSUMPTION COMB (L/100 km) e.g. 9.2
• CO2 EMISSIONS (g/km) e.g. 182 --> low --> 0
In [ ]: cdf = df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB','CO2EMISSIONS']]
cdf.head(9)
In [ ]: viz = cdf[['CYLINDERS','ENGINESIZE','CO2EMISSIONS','FUELCONSUMPTION_COMB']]
viz.hist()
plt.show()
Now, lets plot each of these features vs the Emission, to see how linear is their relation:
0.3 Practice
plot CYLINDER vs the Emission, to see how linear is their relation:
2
Creating train and test dataset 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. 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 data.
It is more realistic for real world problems.
This means that we know the outcome of each data point in this dataset, making it great to test
with! And 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.
Lets split our dataset into train and test sets, 80% of the entire data for training, and the 20%
for testing. We create a mask to select random rows using np.random.rand() function:
In [ ]: msk = np.random.rand(len(df)) < 0.8
train = cdf[msk]
test = cdf[~msk]
Plot outputs we can plot the fit line over the data:
In [ ]: plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')
plt.plot(train_x, regr.coef_[0][0]*train_x + regr.intercept_[0], '-r')
plt.xlabel("Engine size")
plt.ylabel("Emission")
3
Evaluation 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.
There are different model evaluation metrics, lets use MSE here to calculate the accuracy of
our model based on the test set:
<li> Mean absolute error: It is the mean of the absolute value of the errors. This is the easies
<li> Mean Squared Error (MSE): Mean Squared Error (MSE) is the mean of the squared error. Its mo
<li> Root Mean Squared Error (RMSE): This is the square root of the Mean Square Error. </li>
<li> R-squared is not error, but is a popular metric for accuracy of your model. It represents h
test_x = np.asanyarray(test[['ENGINESIZE']])
test_y = np.asanyarray(test[['CO2EMISSIONS']])
test_y_hat = regr.predict(test_x)