Myo-Kyeong Tech Blog

[AI / 데이터분석 ] 데이터 전처리 - Label Encoder와 One-Hot Encoder 본문

AI

[AI / 데이터분석 ] 데이터 전처리 - Label Encoder와 One-Hot Encoder

myo-kyeong 2023. 5. 14. 22:02
728x90
반응형

 

Label Encoder

Label Encoding은 문자 데이터를 숫자로 바꾸는 가장 기본적인 방법으로 각 유니크한 문자 데이터를 숫자 값으로 매핑하는 방법입니다. 

예를 들어, Red, Blue, Green 3개의 색상이 있다고 있다고 가정해봅시다. Label Encoding을 적용하면 'Red'는 0, 'Blue'는 1, 'Green'는 2와 같은 숫자로 변환됩니다.

 

ID 색상
1 Red
2 Blue
3 Green

 

[Label Encoder]

ID 색상
1 0
2 1
3 2

 

from sklearn.preprocessing import LabelEncoder

#데이터
colors = ['Red', 'Blue', 'Green', 'Blue', 'Red']

# LabelEncoder 객체 생성
encoder = LabelEncoder()

# fit 메소드를 사용해 데이터에 맞게 인코더를 학습
encoder.fit(colors)

# transform 메소드를 사용해 데이터를 변환
encoded_colors = encoder.transform(colors)

print(encoded_colors)
#[0, 1, 2, 1, 0]

#역변환
original_colors = encoder.inverse_transform(encoded_colors)
print(original_colors)

 

Label Encoding은 범주형 데이터를 숫자로 변환하는 간단하고 메모리 효율적인 방법입니다. 하지만,  머신러닝 알고리즘은 입력된 숫자를 순서나 우선순위로 인식할 수 있는 문제점이 있습니다. 위의 예제에서 'Green'이 'Red'보다 'Blue'보다 가깝다고 인식할 수 있습니다.  이러한 문제를 해결하기 위해 One-Hot Encoding이라는 기법을 사용합니다. 

 

 

One-Hot Encoder

 

One-Hot Encoding은 범주형 데이터를 이진 벡터로 변환하는 방법입니다. 각각의 범주에 대해 새로운 열을 만들고, 해당 범주에 속하면 1, 아니면 0을 할당합니다.

앞의 예제와 동일하게 'Red' 'Blue', 'Green' 3가지 색상이 존재한다면, 각각에 대해 새로운 열을 만들고 Red는 [1,0,0], Blue s는 [0,1,0], Green은 [0,0,1]로 변환됩니다. 

 

[One-Hot Encoder]

ID Red Blue Green
1 1 0 0
2 0 1 0
3 0 0 1

 

from sklearn.preprocessing import OneHotEncoder
import numpy as np

#데이터
colors = np.array(['Red', 'Blue', 'Green', 'Blue', 'Red']).reshape(-1, 1)

# OneHotEncoder 객체 생성
encoder = OneHotEncoder()

# fit 메소드를 사용해 데이터에 맞게 인코더를 학습
encoder.fit(colors)

# transform 메소드를 사용해 데이터를 변환
encoded_colors = encoder.transform(colors).toarray()

print(encoded_colors)

'''
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [0. 1. 0.]
 [1. 0. 0.]]
 '''
 
#역변환
original_colors = encoder.inverse_transform(encoded_colors)
print(original_colors)

 

One-Hot Encoder은 모든 범주가 동등한 중요성을 갖도록 보장하므로, 순서가 없는 범주형 데이터에 더 적합합니다. 하지만 범주의 수가 많을 경우에 데이터의 차원이 급격하게 증가하는 '차원의 저주' 문제가 발생할 수 있습니다.  이러한 문제는 모델의 성능을 저하시키거나 과적합을 유발 할 수 있으므로 조심해야 합니다.  

728x90
반응형