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에서 분류 보고서를 해석하는 방법