본문 바로가기
Data Science

[ Scikit-learn] Preprocessing.PolynomialFeatures 정리

by Queen2 2022. 10. 1.
728x90
반응형

공부하다가 Polynomial Feature이 등장해서 그 기능과 사용방법을 짚고 넘어가려 합니다.

 

😮 PolynomialFeatures의 기능

 

공식문서에 'Generate polynomial and interaction features' 라고 되어 있는 것처럼 다차항 피처를 만든다! 라고 

생각하시면 됩니다. Kaggle을 봤을 때 피처의 수가 부족하거나, 기존 피처가 유의미하지 않을 경우 여러 피처간에

일종의 상호작용을 통해 만들어지는 또 다른 피처를 사용해보는거죠.

 

다차항인만큼 몇차(degree)를 지정가능한데요 

예를 들어 a,b가 있다면 1, a, b, a^2, ab, b*2 이렇게 새로운 피처들을 만들 수 있는겁니다

 

 

728x90

 

👌 PolynomialFeatures의 파라미터

sklearn.preprocessing.PolynomialFeatures(degree=2, *, interaction_only=False, include_bias=True, order='C')

 

예시를 통해 어떻게 주로 사용되는지 보겠습니다

 

 

 

아래는 캐글에서 공부하면서 발견한 코드인데요

우선적으로 poly에 PolynomialFeatures를 저장하고

fit_transform을 통해 적용시키고 데이터 프레임의 열명은 get_feature_names를 통해서 응용했습니다

(@여기서 get_feature_names는 1.2버전부터 없어지고 대신 get_feature_names_out이 사용되니 참고바랍니다)

poly = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)
interactions = pd.DataFrame(data=poly.fit_transform(train[v]), columns=poly.get_feature_names(v))

 

공식 홈페이지에 있는 예제를 보겠습니다

 

>>> import numpy as np
>>> from sklearn.preprocessing import PolynomialFeatures
>>> X = np.arange(6).reshape(3, 2)
>>> X
array([[0, 1],
       [2, 3],
       [4, 5]])
       
>>> poly = PolynomialFeatures(2)
>>> poly.fit_transform(X)
array([[ 1.,  0.,  1.,  0.,  0.,  1.],
       [ 1.,  2.,  3.,  4.,  6.,  9.],
       [ 1.,  4.,  5., 16., 20., 25.]])
       
       
>>> poly = PolynomialFeatures(interaction_only=True)
>>> poly.fit_transform(X)
array([[ 1.,  0.,  1.,  0.],
       [ 1.,  2.,  3.,  6.],
       [ 1.,  4.,  5., 20.]])

 

interaction_only 옵션 설정을 통해, 열을 거듭제곱한 non distinct한 피처를 제외한 피처간 상호작용을 통해 도출된

값들만 남아서 반환됨을 알 수 있습니다

 

 

 

code source:

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html

728x90
반응형

댓글