본문 바로가기
개발/Python

다항회귀모형 (PolynomialFeatures)

by 피로물든딸기 2025. 8. 21.
반응형

전체 링크

 

X, y의 관계가 비선형일 때, X의 거듭제곱 항을 추가해서 모델링을 할 수 있다.

아래 데이터에 대해 PolynomialFeatures를 이용하여 다항회귀모형을 만들어 보자.

import pandas as pd

df = pd.DataFrame({
    'X1': [1, 2, 3, 4, 5],
    'X2': [2, 3, 4, 5, 6],
    'X3': [3, 4, 5, 6, 7],
    'y':  [10, 20, 30, 40, 50]
})

df

 

PolynomialFeatures에서 degree 옵션과 include_bias 옵션을 이용하면 다항식을 만들 수 있다.

get_feature_names를 이용하여 새로 만들어진 데이터를 쉽게 확인할 수 있다.

from sklearn.preprocessing import PolynomialFeatures

# 독립변수(X)와 종속변수(y) 분리
X = df[['X1', 'X2', 'X3']]
y = df['y']

# degree=2 다항 특성 변환
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)

# 변환된 데이터를 새로운 DataFrame으로 표시
df_poly = pd.DataFrame(X_poly, columns=poly.get_feature_names(['X1', 'X2', 'X3']))
df_poly

 

* 참고 : 이름에 공백을 제거하고 싶다면 str.replace를 사용

df_poly.columns.str.replace(" ", "_")
# Index(['X1', 'X2', 'X3', 'X1^2', 'X1_X2', 'X1_X3', 'X2^2', 'X2_X3', 'X3^2'], dtype='object')

 

interaction_only=True로 할 경우 교차항만 생성된다.

from sklearn.preprocessing import PolynomialFeatures

# 독립변수(X)와 종속변수(y) 분리
X = df[['X1', 'X2', 'X3']]
y = df['y']

# degree=2 다항 특성 변환
poly = PolynomialFeatures(degree=2, include_bias=False, interaction_only=True)
X_poly = poly.fit_transform(X)

# 변환된 데이터를 새로운 DataFrame으로 표시
df_poly = pd.DataFrame(X_poly, columns=poly.get_feature_names(['X1', 'X2', 'X3']))
df_poly

 

이후 선형회귀와 마찬가지로 모형을 만들면 된다.

from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_poly, y)

y_pred = model.predict(X_poly)

df_poly['y_actual'] = y
df_poly['y_predicted'] = y_pred

df_poly

반응형

'개발 > Python' 카테고리의 다른 글

MAE / MAPE / MSE / RMSE / MSLE / R2  (0) 2025.09.08
Threshold 조정에 따른 Precision과 Recall 결과  (0) 2025.09.08
F-검정 통계량 문제 예시  (0) 2025.08.21
포아송 분포 문제 예시  (0) 2025.08.21
ROC 커브의 AUC 계산  (0) 2025.08.19

댓글