[파이썬][scikit-learn] scikit-learn에서 원-핫 인코딩

원-핫 인코딩은 범주형 데이터를 숫자형 데이터로 변환하는 기법입니다. scikit-learn 라이브러리는 이를 쉽게 수행할 수 있는 여러 도구를 제공합니다. 원-핫 인코딩은 데이터 전처리 단계에서 주로 사용되며, 머신 러닝 모델의 성능을 향상시키는 데 큰 도움을 줍니다.

원-핫 인코딩이란?

원-핫 인코딩은 범주형 변수의 값을 숫자 형태로 변환하는 방법입니다. 예를 들어, “색깔”이라는 범주형 변수에는 “빨강”, “파랑”, “노랑”과 같은 값이 있습니다. 이를 원-핫 인코딩을 통해 숫자 형태로 변환하면 “빨강”은 [1, 0, 0], “파랑”은 [0, 1, 0], “노랑”은 [0, 0, 1]과 같은 형태로 표현됩니다. 이렇게 변환된 데이터는 머신 러닝 모델에서 숫자로 처리 가능하며, 범주 간의 관계를 제대로 반영하여 모델의 성능을 향상시킬 수 있습니다.

scikit-learn을 이용한 원-핫 인코딩

scikit-learn에는 OneHotEncoder라는 클래스가 제공되어 원-핫 인코딩을 간편하게 수행할 수 있습니다. 아래의 예제 코드를 통해 사용 방법을 알아보겠습니다.

from sklearn.preprocessing import OneHotEncoder
import pandas as pd

# 범주형 변수를 담은 데이터프레임 생성
data = pd.DataFrame({'색깔': ['빨강', '파랑', '파랑', '노랑', '빨강']})

# OneHotEncoder 객체 생성
encoder = OneHotEncoder()

# 범주형 변수 열의 인덱스 추출
categorical_cols = [col for col in data.columns if data[col].dtype == 'object']

# One-hot encoding 수행
one_hot_encoded = pd.DataFrame(encoder.fit_transform(data[categorical_cols]).toarray(), 
                               columns=encoder.get_feature_names_out(categorical_cols))

# 원-핫 인코딩된 데이터 출력
print(one_hot_encoded)

위의 코드는 data라는 데이터프레임에서 “색깔”이라는 범주형 변수를 원-핫 인코딩하는 예제입니다. OneHotEncoder 클래스 객체를 생성하고, 인코딩할 변수를 선택한 후 fit_transform 메서드를 호출하여 원-핫 인코딩을 수행합니다. 결과는 one_hot_encoded라는 데이터프레임으로 출력됩니다.

결론

scikit-learn을 이용하면 원-핫 인코딩을 쉽게 수행할 수 있습니다. 이를 통해 범주형 변수를 숫자로 변환하고, 머신 러닝 모델의 성능을 향상시킬 수 있습니다. 원-핫 인코딩은 데이터 전처리 단계에서 중요한 요소이므로, 데이터 분석 및 머신 러닝 프로젝트를 수행할 때 유용하게 활용할 수 있습니다.