머신 러닝 모델을 훈련시킬 때 범주형 데이터를 처리하는 것은 중요한 작업입니다. 이러한 데이터는 일반적으로 텍스트 레이블로 표현되고, 이를 수치적인 형태로 변환해야 합니다. 이를 위해 scikit-learn 라이브러리는 다양한 인코딩 방법을 제공합니다. 이 중 하나인 레이블 인코딩에 대해 알아보겠습니다.
레이블 인코딩이란?
레이블 인코딩은 범주형 데이터를 숫자형으로 변환하는 방법 중 하나입니다. 각 범주형 값은 고유한 정수로 매핑됩니다. 이 방법은 순서가 있는 범주형 데이터에 적합합니다. 예를 들어, 날씨를 “맑음”, “흐림”, “비”와 같은 문자열로 표현한 후 이를 숫자로 변환할 수 있습니다.
scikit-learn에서의 레이블 인코딩 방법
scikit-learn에서는 LabelEncoder
클래스를 사용하여 레이블 인코딩을 수행할 수 있습니다. 이 클래스는 다음과 같이 fit
메서드를 통해 학습하고, transform
메서드를 통해 실제 데이터를 변환합니다.
from sklearn.preprocessing import LabelEncoder
# 레이블 인코더 객체 생성
encoder = LabelEncoder()
# 레이블 인코딩 학습
encoder.fit(labels)
# 데이터 변환
encoded_labels = encoder.transform(labels)
위의 코드에서 labels
는 범주형 레이블이 포함된 리스트나 배열입니다. fit
메서드를 호출하여 레이블 인코더를 학습하고, transform
메서드를 호출하여 실제 데이터를 변환합니다. 변환된 값은 encoded_labels
변수에 저장됩니다.
또한, inverse_transform
메서드를 사용하여 숫자형 데이터를 원래의 문자열 레이블로 되돌릴 수도 있습니다.
# 역변환
original_labels = encoder.inverse_transform(encoded_labels)
위의 코드에서 encoded_labels
은 숫자로 변환된 레이블이 포함된 배열이며, inverse_transform
메서드를 호출하여 원래의 문자열 레이블로 변환합니다. 변환된 레이블은 original_labels
변수에 저장됩니다.
예제
다음 예제는 날씨 데이터를 레이블 인코딩하는 방법을 보여줍니다.
from sklearn.preprocessing import LabelEncoder
# 날씨 데이터
weather = ['맑음', '맑음', '비', '흐림', '맑음', '비']
# 레이블 인코더 객체 생성
encoder = LabelEncoder()
# 레이블 인코딩 학습
encoder.fit(weather)
# 데이터 변환
encoded_weather = encoder.transform(weather)
print(encoded_weather)
출력 결과는 다음과 같습니다:
[0 0 1 2 0 1]
레이블 “맑음”은 0으로, “비”는 1로, “흐림”은 2로 인코딩되었습니다.
마무리
scikit-learn의 LabelEncoder
클래스를 사용하여 레이블 인코딩을 손쉽게 수행할 수 있습니다. 이를 통해 범주형 데이터를 숫자형으로 변환하여 머신 러닝 모델에 넣을 수 있습니다.