[python] scikit-learn을 이용한 다항 회귀

이번 포스트에서는 scikit-learn 라이브러리를 사용하여 다항 회귀를 구현하는 방법에 대해 알아보겠습니다. 다항 회귀는 선형 회귀를 확장하여 비선형 관계를 모델링하는 데 사용됩니다. scikit-learn은 Python에서 머신 러닝을 쉽게 구현할 수 있는 강력한 도구입니다.

1. 필요한 라이브러리 설치

scikit-learn을 사용하기 위해 먼저 필요한 패키지를 설치해야 합니다. 아래 명령어를 사용하여 필요한 패키지를 설치합니다.

pip install scikit-learn

2. 데이터 준비

다항 회귀를 위해 적절한 데이터셋이 필요합니다. 여기서는 임의의 x와 y 값으로 구성된 데이터셋을 사용하겠습니다. 다음은 간단한 예시입니다.

import numpy as np

# 입력 변수 x
x = np.array([1, 2, 3, 4, 5])

# 출력 변수 y
y = np.array([2, 4, 6, 8, 10])

3. 모델 생성 및 학습

scikit-learn을 사용하여 다항 회귀 모델을 생성하고 학습하는 방법은 매우 간단합니다. 다음 코드를 사용하여 모델을 생성합니다.

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

# 다항 특성 생성 (여기서는 2차 다항식으로 설정)
poly_features = PolynomialFeatures(degree=2)
x_poly = poly_features.fit_transform(x.reshape(-1, 1))

# 선형 회귀 모델 생성
model = LinearRegression()

# 모델 학습
model.fit(x_poly, y)

4. 예측

학습된 모델을 사용하여 새로운 값을 예측할 수 있습니다. 예를 들어, x 값을 [6]으로 설정하고 예측을 수행하는 코드는 다음과 같습니다.

x_test = np.array([6])
x_test_poly = poly_features.transform(x_test.reshape(-1, 1))

# 예측
y_pred = model.predict(x_test_poly)

print(y_pred)

5. 결과 시각화

최종 결과를 시각화하여 모델의 예측을 확인할 수 있습니다. 다음은 예측 결과와 실제 값인 y를 비교하여 그래프로 나타내는 코드입니다.

import matplotlib.pyplot as plt

# 예측 결과 시각화
x_range = np.linspace(1, 6, 100)
x_range_poly = poly_features.transform(x_range.reshape(-1, 1))
y_range_pred = model.predict(x_range_poly)

plt.scatter(x, y)
plt.plot(x_range, y_range_pred, color="red")
plt.xlabel("x")
plt.ylabel("y")
plt.title("Polynomial Regression")
plt.show()

위의 코드를 실행하면 다항 회귀 모델의 성능을 시각적으로 확인할 수 있습니다.

마무리

이번 포스트에서는 scikit-learn을 사용하여 다항 회귀를 구현하는 방법을 알아보았습니다. scikit-learn은 다양한 머신 러닝 알고리즘을 포함하고 있어 높은 수준의 추상화된 인터페이스를 제공합니다. 다음 번 포스트에서는 더 복잡한 모델을 구현하는 방법에 대해 알아보도록 하겠습니다.

참고 자료