[python] scikit-learn을 활용한 데이터 전처리

데이터 전처리는 머신러닝 모델을 만들기 전에 수행해야 하는 중요한 과정입니다. 이 과정에서 데이터를 정리하고 변형하여 모델의 성능을 향상시킬 수 있습니다.

scikit-learn은 파이썬에서 머신러닝 모델을 구현하기 위해 자주 사용되는 라이브러리입니다. 이 라이브러리에는 다양한 데이터 전처리 기능이 제공됩니다. 이번 블로그 포스트에서는 scikit-learn을 사용하여 데이터를 전처리하는 방법을 알아보겠습니다.

1. 데이터 로드

먼저 데이터를 로드하는 단계입니다. scikit-learn은 다양한 데이터셋을 제공하여 실습에 활용할 수 있도록 도와줍니다. 예를 들어, 아래와 같이 load_iris() 함수를 이용하여 아이리스 데이터셋을 로드할 수 있습니다.

from sklearn.datasets import load_iris

iris = load_iris()
X, y = iris.data, iris.target

2. 데이터 정규화

데이터 정규화는 데이터의 범위를 조정하여 동일한 스케일로 만드는 과정입니다. 일반적으로 입력 데이터를 정규화하여 모델의 성능을 향상시킬 수 있습니다. scikit-learn은 StandardScaler를 제공하여 데이터를 정규화할 수 있습니다.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

3. 범주형 데이터 인코딩

범주형 데이터는 텍스트 형태로 되어 있어 머신러닝 모델에 바로 적용할 수 없습니다. 이를 숫자형으로 변환해주어야 합니다. scikit-learn은 LabelEncoderOneHotEncoder를 제공하여 범주형 데이터를 인코딩할 수 있습니다.

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

label_encoder = LabelEncoder()
y_encoded = label_encoder.fit_transform(y)

onehot_encoder = OneHotEncoder()
y_onehot = onehot_encoder.fit_transform(y_encoded.reshape(-1, 1))

4. 결측치 처리

결측치는 데이터에서 비어있는 값으로, 이를 처리해주어야 합니다. scikit-learn은 SimpleImputer를 제공하여 결측치를 채울 수 있는 여러 전략을 제공합니다.

from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)

5. 이상치 탐지

이상치는 다른 데이터와는 다른 패턴을 가지고 있는 값으로, 모델에 부정적인 영향을 미칠 수 있습니다. scikit-learn은 EllipticEnvelopeIsolationForest를 제공하여 이상치를 탐지할 수 있습니다.

from sklearn.covariance import EllipticEnvelope
from sklearn.ensemble import IsolationForest

outlier_detector = EllipticEnvelope(contamination=0.01)
outliers = outlier_detector.fit_predict(X)

outlier_detector = IsolationForest(contamination=0.01)
outliers = outlier_detector.fit_predict(X)

위의 예제 코드에서 contamination은 이상치의 비율을 나타냅니다.

결론

scikit-learn을 사용하면 데이터 전처리를 간편하게 수행할 수 있습니다. 이번 포스트에서는 데이터 로드, 데이터 정규화, 범주형 데이터 인코딩, 결측치 처리, 이상치 탐지에 대해 알아보았습니다. 앞으로 다양한 데이터 전처리 기능을 적용하여 머신러닝 모델을 구현해보세요!

참고 자료