[파이썬][scikit-learn] scikit-learn에서 다항 회귀

다항 회귀는 회귀 분석의 일종으로, 독립 변수(x)와 종속 변수(y) 사이의 관계를 다항식으로 모델링하는 방법입니다. 이는 데이터의 비선형성을 반영하기 위해 사용됩니다. scikit-learn은 파이썬에서 머신 러닝을 수행하는 데 사용되는 라이브러리이며, 다항 회귀 분석을 쉽게 구현할 수 있도록 도와줍니다.

데이터 준비

scikit-learn에서 다항 회귀를 구현하기 전에 먼저 데이터를 준비해야 합니다. 이 예제에서는 간단한 1차 함수를 사용하여 데이터를 생성하겠습니다. 아래는 x 변수와 그에 해당하는 y 변수의 값을 생성하는 코드입니다.

import numpy as np

# 1차 함수 y = 2x + 1을 따르는 데이터 생성
np.random.seed(0)
x = np.linspace(0, 10, 100)
y = 2 * x + 1 + np.random.randn(100)

위 코드에서 np.random.seed(0)는 난수 생성 시드를 설정하여 결과를 일관되게 유지합니다.

다항 회귀 모델 학습

이제 scikit-learn을 사용하여 다항 회귀 모델을 학습할 수 있습니다. scikit-learn에서는 PolynomialFeaturesLinearRegression 클래스를 사용하여 다항 회귀를 구현할 수 있습니다.

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

# 다항 회귀를 위해 x 변수를 다항식 형태로 변환
poly_features = PolynomialFeatures(degree=2)
x_poly = poly_features.fit_transform(x.reshape(-1, 1))

# 다항 회귀 모델 학습
model = LinearRegression()
model.fit(x_poly, y)

위 코드에서 degree 매개 변수는 생성할 다항식의 최고 차수를 나타냅니다. 위 예제에서는 2차 다항식을 사용했습니다.

예측 및 시각화

학습된 다항 회귀 모델을 사용하여 새로운 입력 값에 대한 예측을 수행할 수 있습니다. 또한 회귀 모델의 성능을 시각화하여 평가할 수 있습니다.

import matplotlib.pyplot as plt

# 예측을 위해 x 변수를 다항식 형태로 변환
x_new = np.linspace(0, 10, 100)
x_new_poly = poly_features.transform(x_new.reshape(-1, 1))

# 다항 회귀 모델로 예측 수행
y_pred = model.predict(x_new_poly)

# 데이터와 예측 결과 시각화
plt.scatter(x, y, label='Actual')
plt.plot(x_new, y_pred, color='r', label='Predicted')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

위 코드에서 x_new는 예측할 새로운 x 변수 값들을 나타냅니다. 모델로부터 예측된 y값인 y_pred를 사용하여 실제 데이터와 예측 결과를 시각화합니다.

다항 회귀는 데이터에 잘 맞는 비선형 모델을 만들 수 있는 강력한 방법입니다. scikit-learn은 다양한 머신 러닝 모델 및 도구를 제공하므로, 데이터 분석 및 예측 과정에서 다항 회귀를 활용할 수 있습니다.