공부하다가 Polynomial Feature이 등장해서 그 기능과 사용방법을 짚고 넘어가려 합니다.
😮 PolynomialFeatures의 기능
공식문서에 'Generate polynomial and interaction features' 라고 되어 있는 것처럼 다차항 피처를 만든다! 라고
생각하시면 됩니다. Kaggle을 봤을 때 피처의 수가 부족하거나, 기존 피처가 유의미하지 않을 경우 여러 피처간에
일종의 상호작용을 통해 만들어지는 또 다른 피처를 사용해보는거죠.
다차항인만큼 몇차(degree)를 지정가능한데요
예를 들어 a,b가 있다면 1, a, b, a^2, ab, b*2 이렇게 새로운 피처들을 만들 수 있는겁니다
👌 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
'Data Science' 카테고리의 다른 글
ChatGPT 이용 상세 리뷰 😮 (0) | 2022.12.26 |
---|---|
데이터 타입별 컬럼 구분하기 ✔ (0) | 2022.10.12 |
[ 데이터 시각화 ] matplotlib 기본 개념 | 그래프 정리 (0) | 2022.10.11 |
[Scikit-learn] Impute.SimpleImputer (0) | 2022.09.22 |
Select_dtypes, mutual_info_classif (0) | 2022.06.21 |
댓글