[python] scikit-learn을 활용한 피처 생성
머신 러닝을 위한 피처 생성은 데이터를 독립 변수로 변환하여 모델의 성능을 향상시키는 중요한 단계입니다. scikit-learn은 다양한 피처 생성 기능을 제공하여 모델링을 더욱 유연하게 할 수 있습니다.
피처 생성 기법
다항식 피처 생성
데이터의 비선형 관계를 모델링하기 위해 다항식 피처 생성은 유용한 방법입니다. scikit-learn의 PolynomialFeatures
클래스는 이를 쉽게 수행할 수 있도록 도와줍니다. 다음은 예시 코드입니다.
from sklearn.preprocessing import PolynomialFeatures
# 원본 데이터
X = [[1, 2],
[3, 4],
[5, 6]]
# 2차 다항식 피처 생성
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
범주형 피처 인코딩
범주형 피처는 머신 러닝 모델에 직접 사용할 수 없기 때문에 인코딩이 필요합니다. scikit-learn의 OneHotEncoder
나 LabelEncoder
클래스를 사용하여 범주형 피처를 숫자로 변환할 수 있습니다. 예시 코드는 다음과 같습니다.
from sklearn.preprocessing import OneHotEncoder
# 원본 데이터
X = [['red', 'S'],
['blue', 'M'],
['green', 'L']]
# One-hot encoding
onehot = OneHotEncoder()
X_encoded = onehot.fit_transform(X)
시계열 피처 생성
시계열 데이터에서는 시간 관련 정보를 피처로 생성하는 것이 중요합니다. scikit-learn의 FunctionTransformer
클래스를 사용하여 사용자 정의 함수를 통해 시계열 피처를 생성할 수 있습니다. 예시 코드는 다음과 같습니다.
from sklearn.preprocessing import FunctionTransformer
# 원본 데이터
X = [1, 2, 3, 4, 5]
# 시계열 피처 생성 함수
def create_time_features(X):
time_features = []
for i in range(len(X)):
time_features.append([X[i] % 2, X[i] % 3])
return time_features
# 시계열 피처 생성
time_transformer = FunctionTransformer(create_time_features)
X_time_features = time_transformer.transform(X)
결론
scikit-learn을 사용하면 다양한 피처 생성 기법을 활용하여 모델의 성능을 향상시킬 수 있습니다. 다항식 피처 생성, 범주형 피처 인코딩, 시계열 피처 생성 등 다양한 기능을 활용하여 데이터를 유연하게 변환하세요.