Привет!

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

Ссылка на эту статью -›https://medium.com/analytics-vidhya/multiple-linear-regression-7727a012ff93

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

После избавления от нежелательных независимых переменных с помощью матрицы корреляции, коэффициента завышенной дисперсии (IVF) и вычисления значения P у нас осталось только одно смещение независимой переменной. Мы использовали модель множественной линейной регрессии для прогнозирования топливной экономичности автомобилей на основе их рабочего объема.

Результат был ниже графика рассеяния

plt.scatter(X, y, color = 'синий')
plt.scatter(X,linear_reg.predict(X),color=”g”)
plt.title('Множественная линейная регрессия' )
plt.xlabel('смещение')
plt.ylabel('топливная эффективность')

Основываясь на том, что я вижу на диаграмме рассеяния выше, я думаю, что полиномиальная регрессия лучше подходит для этого набора данных. Давайте попробуем и посмотрим, есть ли улучшения

Полиномиальная предварительная обработка данных

Сначала импортируйте PolynomialFeatures из библиотеки предварительной обработки sklearn.

from sklearn.preprocessing import PolynomialFeatures
poly=PolynomialFeatures(степень=2)
X_poly=poly.fit_transform(X)

Пусть напечатать первые несколько записей этих данных

pd.DataFrame(X_poly).head()

Основываясь на приведенных выше данных, мы можем понять, что предварительная обработка данных полиномиальных признаков преобразовала уравнение для этих данных из y=b0+b1X (используется во время множественной линейной регрессии) в

y=b0*1+b1X+b2X²

Теперь мы добавили X² к уравнению. Отсюда и название полином.

Теперь, когда вы поняли уравнение, давайте перейдем к подгонке данных под это уравнение. Добавьте ниже строки кода

poly.fit(X_poly,y)
lin2 = LinearRegression()
lin2.fit(X_poly,y)

И теперь вы готовы прогнозировать целевые значения. Добавьте ниже строку кода

y_poly_pred = lin2.predict (poly.fit_transform (X))

Давайте сравним фактические значения y с прогнозируемыми значениями.

df3 = pd.DataFrame({'Фактическое': y, 'Прогнозированное': y_poly_pred})
df3.head(15)

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

Давайте сделаем точечный график значения X, значения Y, прогнозируемого значения Y с помощью множественной линейной регрессии и прогнозируемого значения Y с помощью полиномиальной линейной регрессии.

plt.scatter(X, y, color = 'синий')
plt.scatter(X, lin2.predict(poly.fit_transform(X)), color = 'красный')
plt.scatter( X,linear_reg.predict(X),color=”g”)
plt.title('Полиномиальная регрессия')
plt.xlabel('смещение')
plt.ylabel('mpg ')
plt.show()

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

Это жизнь науки о данных. Продолжайте понимать свои данные и пробовать разные алгоритмы. Если новый выбранный алгоритм улучшает общий прогноз, это движение в правильном направлении.

Кстати, вы спросили, для чего нужна степень при создании экземпляра PolynomialFeatures?

poly=PolynomialFeatures(степень=2)

Это для следующей статьи!

Быть в курсе. :)

Ссылка:

Машинное обучение на практике