Полиномиальная регрессия в основном похожа на алгоритм линейной регрессии, который использует взаимосвязь между независимой переменной (x) и зависимой (y), чтобы найти наилучшую взаимосвязь и провести линию через точки данных.

Полиномиальное уравнение выглядит следующим образом:

у= b0+b1x1+ b2x12+ b2x13+…… bnx1n

Из уравнения становится ясно, что если мы добавим степень к нашим линейным уравнениям, то они будут преобразованы в полиномиальные линейные уравнения.

Набор данных, который используется в алгоритме полиномиальной регрессии для обучения, является нелинейным.В этом алгоритме регрессии исходные признаки набора данных преобразуются в полиномиальные признаки требуемой степени, а затем моделируется с помощью линейной модели. Всякий раз, когда точки данных расположены нелинейным образом, возникает основная потребность в модели полиномиальной регрессии.

Из приведенных выше изображений обоих графиков мы построили набор данных, который расположен нелинейно. Поэтому, если мы попытаемся применить его к модели линейной регрессии, то он вряд ли охватит какую-либо точку данных. С другой стороны, кривая подходит для покрытия большинства точек данных, что соответствует полиномиальной модели. Следовательно, мы можем сказать, если наборы данных упорядочиваются или строятся в нелинейном формате, нам следует применять полиномиальную модель вместо линейной.

Шаги для выполнения полиномиальной регрессии:

1. Выполнение предварительной обработки данных

2. Построение модели линейной регрессии и ее подгонка к набору данных

3. Построение модели полиномиальной регрессии и ее подгонка к набору данных

4. Визуализация результатов для модели линейной регрессии и полиномиальной регрессии.

5. Прогнозирование результата.

Код Python для выполнения полиномиальной регрессии в наборе данных:

# importing all the required libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# importing the dataset
df = pd.read_csv('data.csv')
df.head()

df.tail()

X = df.iloc[:, 1:2].values
y = df.iloc[:, 2].values
# Fitting linear regression to the dataset
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(X, y)
# Fitting polynomial regression to the dataset
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree = 4)
X_poly = poly.fit_transform(X)
poly.fit(X_poly, y)
lin2 = LinearRegression()
lin2.fit(X_poly, y)
# Visualising the Linear Regression
plt.scatter(X, y, color = 'blue')
plt.plot(X, lr.predict(X), color = 'red')
plt.title('Linear Regression')
plt.xlabel('Emp_ID')
plt.ylabel('Salary_Per_Day')
plt.show()

# Visualising the Polynomial Regression
plt.scatter(X, y, color = 'blue')
plt.plot(X, lin2.predict(poly.fit_transform(X)), color = 'red')
plt.title('Polynomial Regression')
plt.xlabel('Emp_ID')
plt.ylabel('Salary_Per_Day')
plt.show()

# Predicting a new result through Polynomial Regression
pred2 = 105
pred2array = np.array([[pred2]])
lin2.predict(poly.fit_transform(pred2array))