Полиномиальная регрессия в основном похожа на алгоритм линейной регрессии, который использует взаимосвязь между независимой переменной (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))