[파이썬][scikit-learn] scikit-learn에서 레이블 인코딩

머신 러닝 모델을 훈련시킬 때 범주형 데이터를 처리하는 것은 중요한 작업입니다. 이러한 데이터는 일반적으로 텍스트 레이블로 표현되고, 이를 수치적인 형태로 변환해야 합니다. 이를 위해 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 클래스를 사용하여 레이블 인코딩을 손쉽게 수행할 수 있습니다. 이를 통해 범주형 데이터를 숫자형으로 변환하여 머신 러닝 모델에 넣을 수 있습니다.