Polynomial Regression With Python

0
301

Introduction Polynomial Regression

The polynomial regression technique could find the relationship between input features and the output variable in a better way even if the relationship is not linear. It uses the same formula as the linear regression:

Formula for linear regression is:-

Here is X is the independent variable and h is the dependant variable and the remaining is the model coefficient.

Formula:

The formula of polynomial regression is also considered to be a linear model as the coefficients of the model are associated with the features that are still linear. x² in into the polynomial regression is used to curve fitted into the quadratic in nature.

Advantages:

  • It provides the best approximation of the relationship between the dependent variable and independent variables.
  • A broad range of functions can be fit under it.
  • It fits a wide range of curvature.

Disadvantages:

  • The presence of one or two outliers in the data can seriously affect the results of the nonlinear analysis.
  • These are too sensitive to the outliers.
  • in the model validation tools for the detection of outliers in nonlinear regression than there are for linear regression.

The below graph gives you a better understanding of how to fit the polynomial line when your passing different degree.

Implementation using Sklearn library of polynomial regression

 
# Import required library
 
import operator
 
import numpy as np
import matplotlib.pyplot as plt
 
# Import library to apply liner and polynomial regression
 
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score    #To ckeck the accuracy
from sklearn.preprocessing import PolynomialFeatures
 
 
# Generate Random Data from numpy library
# Create independant and Dependant variable data 
 
np.random.seed(0)
x = 2 - 3 * np.random.normal(0, 1, 20)
y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)
 
# transforming the data to include axis
x = x[:, np.newaxis]
y = y[:, np.newaxis]
 
# Apply polynomial regression with degree Three 
 
polynomial_features= PolynomialFeatures(degree=3)
x_poly = polynomial_features.fit_transform(x)
 
 
# Apply liner Model
 
model = LinearRegression()
model.fit(x_poly, y)
y_poly_pred = model.predict(x_poly)
 
# Check the accuracy
 
rmse = np.sqrt(mean_squared_error(y,y_poly_pred))
 
r2 = r2_score(y,y_poly_pred)
 
print('Root mean square error :-',rmse)
 
print('R Square:-',r2)
 
 
 
print('\n ----------------------plot Scatter plot with poly line-----------------------')
plt.scatter(x, y, s=10)
# sort the values of x before line plot
sort_axis = operator.itemgetter(0)
sorted_zip = sorted(zip(x,y_poly_pred), key=sort_axis)
 
# Drow Poly line
x, y_poly_pred = zip(*sorted_zip)
plt.plot(x, y_poly_pred, color='m')
plt.show()
Output:-
Root mean square error :- 3.449895507408724
R Square:- 0.9830071790386679

 ———————-plot Scatter plot with polyline———————–

LEAVE A REPLY

Please enter your comment!
Please enter your name here