Scikit-learn을 사용하여 다항식 회귀를 수행하는 방법


다항식 회귀는 예측 변수와 응답 변수 간의 관계가 비선형일 때 사용할 수 있는 기술입니다.

이러한 유형의 회귀는 다음과 같은 형식을 취합니다.

Y = β 0 + β 1 X + β 2 X 2 + … + βh

여기서 h 는 다항식의 “차수”입니다.

다음 단계별 예제에서는 sklearn을 사용하여 Python에서 다항식 회귀를 수행하는 방법을 보여줍니다.

1단계: 데이터 생성

먼저, 예측 변수와 응답 변수의 값을 보관하기 위해 두 개의 NumPy 배열을 만들어 보겠습니다.

 import matplotlib. pyplot as plt
import numpy as np

#define predictor and response variables
x = np. array ([2, 3, 4, 5, 6, 7, 7, 8, 9, 11, 12])
y = np. array ([18, 16, 15, 17, 20, 23, 25, 28, 31, 30, 29])

#create scatterplot to visualize relationship between x and y
plt. scatter (x,y)

산점도를 보면 x와 y의 관계가 선형이 아니라는 것을 알 수 있습니다.

따라서 두 변수 사이의 비선형 관계를 포착하기 위해 다항식 회귀 모델을 데이터에 맞추는 것이 좋습니다.

2단계: 다항식 회귀 모델 피팅

다음 코드는 sklearn 함수를 사용하여 3차 다항식 회귀 모델을 이 데이터 세트에 맞추는 방법을 보여줍니다.

 from sklearn. preprocessing import PolynomialFeatures
from sklearn. linear_model import LinearRegression

#specify degree of 3 for polynomial regression model
#include bias=False means don't force y-intercept to equal zero
poly = PolynomialFeatures(degree= 3 , include_bias= False )

#reshape data to work properly with sklearn
poly_features = poly. fit_transform ( x.reshape (-1, 1))

#fit polynomial regression model
poly_reg_model = LinearRegression()
poly_reg_model. fit (poly_features,y)

#display model coefficients
print (poly_reg_model. intercept_ , poly_reg_model. coef_ )

33.62640037532282 [-11.83877127 2.25592957 -0.10889554]

마지막 행에 표시된 모델 계수를 사용하여 다음과 같이 적합 다항식 회귀 방정식을 작성할 수 있습니다.

y = -0.109x 3 + 2.256x 2 – 11.839x + 33.626

이 방정식은 주어진 예측 변수 값에 대해 응답 변수의 기대 값을 찾는 데 사용할 수 있습니다.

예를 들어 x가 4인 경우 응답 변수 y의 예상 값은 15.39입니다.

y = -0.109(4) 3 + 2.256(4) 2 – 11.839(4) + 33.626= 15.39

참고 : 다항식 회귀 모델을 다른 차수로 맞추려면 PolynomialFeatures() 함수에서 차수 인수 값을 변경하면 됩니다.

3단계: 다항식 회귀 모델 시각화

마지막으로 원래 데이터 포인트에 맞는 다항식 회귀 모델을 시각화하기 위한 간단한 플롯을 만들 수 있습니다.

 #use model to make predictions on response variable
y_predicted = poly_reg_model. predict (poly_features)

#create scatterplot of x vs. y
plt. scatter (x,y)

#add line to show fitted polynomial regression model
plt. plot (x,y_predicted,color=' purple ')

그래프를 보면 다항식 회귀 모델이 과적합 없이 데이터를 잘 피팅한 것으로 보입니다.

참고 : 여기에서 sklearn PolynomialFeatures() 함수에 대한 전체 문서를 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 sklearn을 사용하여 다른 일반적인 작업을 수행하는 방법을 설명합니다.

sklearn에서 회귀 계수를 추출하는 방법
sklearn을 사용하여 균형 잡힌 정밀도를 계산하는 방법
Sklearn에서 분류 보고서를 해석하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다