Machine Learning & Data Analytics

Data encoding (1. Label Encoding)

Genie Lee 2022. 2. 17. 00:54
728x90
반응형
  1. Label Encoding: 카테고리 피처를 코드형 숫자 값으로 변환하는 것입니다
  2. One-hot Encoding
  3. 문자열(object)을 정수형(int)으로 return

1. Label Encoding (Categorical Variable to Numeric Variable)

사이킷런의 머신러닝 알고리즘은 문자열 값을 입력 값으로 허용하지 않는다. 그래서 모든 문자열 값은 인코딩돼서 숫자 형으로 변환해야 합니다.

  • 레이블 인코딩은 카테고리 피처를 코드형 숫자 값으로 변환하는 것입니다. 예: 차의 등급 변수 소형 : 0 / 중형 : 1 / 대형 : 2
  • '소형'과 '중형'이라는 범주형 데이터가 가지고 있는 차이가 0과 1의 수치적인 차이라는 의미가 아님을 주의
#Label Encoding은 Scikit-Learn의 preprocessing 패키지에 있음.
from sklearn.preprocessing import LabelEncoder

items = ['TV', '냉장고', '전자레인지', '컴퓨터', '선풍기', '선풍기', '믹서','믹서']
#LableEncoder를 객체로 생성한 후 fit()과 tranfsorm()을 호출해 레이블 인코딩을 수행
encoder = LabelEncoder()
encoder.fit()
labels = encoder.transform(items)
print('인코딩 변환값:', labels)

#데이터가 큰 경우, 어떤 문자열이 숫자 값으로 인코딩됐는지 확인하는 방법
print('인코딩 변환값:',encoder.classes_)

[Output]
인코딩 변환값: [0 1 4 5 3 3 2 2]
인코딩 변환값: ['TV' '냉장고' '믹서' '선풍기' '전자레인지' '컴퓨터']

 

 

  • 레이블 인코딩은 트리 계열의 ML 알고리즘에 사용되어야 한다.

그 이유는, 레이블 인코딩 된 1, 2, .. 라는 숫자가 크고 작음에 대한 특성이 적용이 되서, 특정 ML 알고 리즘에서 가중치가 더 부여되거나 더 중요하게 인식할 가능성이 발생하기 때문이다. 이러한 특성 때문에 선형회귀와 같은 ML 알고리즘에는 적용하지 않아야 한다.

*Scikit-Learn Label Encoder, 파이썬 머신러닝 완벽가이드 p120*

728x90
반응형