Учебник по полиномиальной регрессии в Python

Ранее мы прошли линейную регрессию в блокноте здесь.

Очевидно, что многие отношения нелинейны, поэтому для нелинейных отношений нам нужно что-то еще.

Давайте рассмотрим, как провести полиномиальную регрессию в этом посте.

Во-первых, что такое полиномиальная регрессия?

Это просто регрессия более высокого порядка.

Зачем нам это нужно?

Иногда линия просто не проходит, и вам нужна кривая.

Мы используем те же данные, что и в последнем посте о линейной регрессии. Поэтому мы не будем вдаваться в это.

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

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

# Recall we set interaction_only to True in Basics - Exploring Interactions. Here we want all terms in so we turn it off
linear_regression = linear_model.LinearRegression(normalize=False, fit_intercept=True)
create_cubic = PolynomialFeatures(degree=3, interaction_only=False, include_bias=False)
create_quadratic = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)

# Putting these in a pipline as before
linear_predictor = make_pipeline(linear_regression)
quadratic_predictor = make_pipeline(create_quadratic, linear_regression)
cubic_predictor = make_pipeline(create_cubic, linear_regression)

С этими настройками регрессия очень проста.

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

regr_line = scatter.plot(xt, linear_predictor.fit(x,y).predict(xt), '-', color='red', linewidth=2)

То же самое для квадратичной (степень 2) и кубической (степень 3) регрессии.

regr_line = scatter.plot(xt, quadratic_predictor.fit(x,y).predict(xt), '-', color='red', linewidth=2)
regr_line = scatter.plot(xt, cubic_predictor.fit(x,y).predict(xt), '-', color='red', linewidth=2)

Мы могли бы сойти с ума и сделать регрессию в любой произвольной степени.

create_ten = PolynomialFeatures(degree=10, interaction_only=False, include_bias=False)
ten_predictor = make_pipeline(create_ten, linear_regression)
scatter = merged.plot(kind='scatter', x=predictor, y='Resale Index', xlim=x_range, ylim=y_range)
regr_line = scatter.plot(xt, ten_predictor.fit(x,y).predict(xt), '-', color='red', linewidth=2)

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

Полный набор кода находится в блокноте здесь.

playgrd.com || facebook.com/playgrdstar || instagram.com/playgrdstar/