728x90
반응형
- Label Encoding: 카테고리 피처를 코드형 숫자 값으로 변환하는 것입니다
- One-hot Encoding
- 문자열(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
반응형
'Machine Learning & Data Analytics' 카테고리의 다른 글
[Jupiter Notebook] 기본적으로 자주 사용되는 마크다운 사용법 (0) | 2022.02.18 |
---|---|
Data encoding (2. One-hot Encoding) (0) | 2022.02.17 |
데이터 전처리 Data Preprocessing (0) | 2022.02.17 |
Exploratory Data Analysis (EDA)_1. Feature Distribution Visualization (0) | 2022.02.13 |
Machine Learning paradigms schematization (0) | 2022.02.13 |