To perform a polynomial linear regression with python 3, a solution is to use the module called scikit-learn, example of implementation:
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
import numpy as np
import random
#----------------------------------------------------------------------------------------#
# Step 1: training data
X = [i for i in range(10)]
Y = [random.gauss(x,0.75) for x in X]
X = np.asarray(X)
Y = np.asarray(Y)
X = X[:,np.newaxis]
Y = Y[:,np.newaxis]
plt.scatter(X,Y)
#----------------------------------------------------------------------------------------#
# Step 2: data preparation
nb_degree = 4
polynomial_features = PolynomialFeatures(degree = nb_degree)
X_TRANSF = polynomial_features.fit_transform(X)
#----------------------------------------------------------------------------------------#
# Step 3: define and train a model
model = LinearRegression()
model.fit(X_TRANSF, Y)
#----------------------------------------------------------------------------------------#
# Step 4: calculate bias and variance
Y_NEW = model.predict(X_TRANSF)
rmse = np.sqrt(mean_squared_error(Y,Y_NEW))
r2 = r2_score(Y,Y_NEW)
print('RMSE: ', rmse)
print('R2: ', r2)
#----------------------------------------------------------------------------------------#
# Step 5: prediction
x_new_min = 0.0
x_new_max = 10.0
X_NEW = np.linspace(x_new_min, x_new_max, 100)
X_NEW = X_NEW[:,np.newaxis]
X_NEW_TRANSF = polynomial_features.fit_transform(X_NEW)
Y_NEW = model.predict(X_NEW_TRANSF)
plt.plot(X_NEW, Y_NEW, color='coral', linewidth=3)
plt.grid()
plt.xlim(x_new_min,x_new_max)
plt.ylim(0,10)
title = 'Degree = {}; RMSE = {}; R2 = {}'.format(nb_degree, round(rmse,2), round(r2,2))
plt.title("Polynomial Linear Regression using scikit-learn and python 3 \n " + title,
fontsize=10)
plt.xlabel('x')
plt.ylabel('y')
plt.savefig("polynomial_linear_regression.png", bbox_inches='tight')
plt.show()
References
Links | Site |
---|---|
Régression linéaire | wikipedia |
sklearn.linear_model.LinearRegression | scikit |
Linear Regression Example | scikit |
Sklearn Linear Regression - Python | stackoverflow |
polynomial regression using python | stackoverflow |
Polynomial Regression | towardsdatascience.com |
Python Implementation of Polynomial Regression | geeksforgeeks.org |