[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의 OneHotEncoderLabelEncoder 클래스를 사용하여 범주형 피처를 숫자로 변환할 수 있습니다. 예시 코드는 다음과 같습니다.

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을 사용하면 다양한 피처 생성 기법을 활용하여 모델의 성능을 향상시킬 수 있습니다. 다항식 피처 생성, 범주형 피처 인코딩, 시계열 피처 생성 등 다양한 기능을 활용하여 데이터를 유연하게 변환하세요.

참고 자료