Polynomial Regression
3 min readJul 1, 2021
In this module, we will learn about Polynomial Regression and how it works. In the end, we will perform polynomial regression for the following dataset.
Table of Content:
- The intuition behind Polynomial Regression
- Hands-on
The intuition behind Polynomial Regression
Sometimes, the dataset may not best fit Linear Regression. That’s when Polynomial Regression comes into play. And hence the error is reduced.
The Dataset
Importing the libraries
import numpy as npimport matplotlib.pyplot as pltimport pandas as pd
Importing the dataset
dataset = pd.read_csv(‘Position_Salaries_.csv’)X = dataset.iloc[:, 1:-1].valuesy = dataset.iloc[:, -1].values
Training the Linear Regression model on the whole dataset
from sklearn.linear_model import LinearRegressionlin_reg1 = LinearRegression()lin_reg1.fit(X,y)
Training the Polynomial Regression model on the whole dataset with DEGREE=3
from sklearn.preprocessing import PolynomialFeaturespoly1 = PolynomialFeatures(degree = 3)X_poly1 = poly.fit_transform(X)lin_reg2 = LinearRegression()lin_reg2.fit(X_poly1,y)
Training the Polynomial Regression model on the whole dataset with DEGREE=4
from sklearn.preprocessing import PolynomialFeaturespoly = PolynomialFeatures(degree = 4)X_poly = poly.fit_transform(X)lin_reg3 = LinearRegression()lin_reg3.fit(X_poly,y)
Visualizing the Linear Regression results
plt.scatter(X,y,color = 'red')plt.plot(X,lin_reg1.predict(X),color='blue')plt.title('Truth or Bluf (Linear Regression)')plt.xlabel('Positon Level')plt.ylabel('Salary')plt.show()
Visualizing the Polynomial Regression results
plt.scatter(X,y,color='red')plt.plot(X,lin_reg3.predict(X_poly),color='blue')plt.title('Truth or Bluf (Polynomial Regression)')plt.xlabel('Positon Level')plt.ylabel('Salary')plt.show()
Visualizing the Polynomial Regression results (for higher resolution and smoother curve)
To make the curve smooth:
X_grid = np.arange(min(X), max(X), 0.1)X_grid = X_grid.reshape((len(X_grid), 1))plt.scatter(X, y, color = 'red')plt.plot(X_grid, lin_reg3.predict(poly.fit_transform(X_grid)), color = 'blue')plt.title('Truth or Bluff (Polynomial Regression)')plt.xlabel('Position level')plt.ylabel('Salary')plt.show()
Predicting a new result with Linear Regression
lin_reg1.predict([[6.5]]) #[]->list & [[]]->array
Predicting a new result with Polynomial Regression DEGREE=3
The accuracy improves:
lin_reg2.predict(poly1.fit_transform([[6.5]]))
Predicting a new result with Polynomial Regression Degree=4
This gives even better accuracy:
lin_reg3.predict(poly.fit_transform([[6.5]]))