LabelEncoder, OneHotEncoder의 차이
인코딩
범주형 데이터를 숫자형으로 변환하는 과정에서 필요한 과정
1. 레이블 인코딩
문자열(범주형) 값을 내림차순 정렬 후 0부터 1씩 증가하는 값으로 변환함.
- 숫자의 차이가 모델에 영향을 주지 않는 트리 계열 모델에 적용함.
(의사결정나무, 랜덤포레스트)
- 숫자의 차이가 모델에 영향을 미치는 선형 계열 모델에는 적용하지 않는 것이 좋음.
(로지스틱 회귀, SVM, 신경망 → 원핫인코딩 적용)
sklearn.preprocessing.LabelEncoder 활용 방법
> fit() : 어떻게 변환할 것인지에 대해 학습
> transform() : 문자열을 숫자로 변환
> fit_transform() : 학습과 변환을 한 번에 처리
> inverse_transform() : 숫자를 다시 문자열로 변환
> classes_ : 인코딩한 클래스 조회
2. 원핫 인코딩
- N개의 클래스를 N차원의 One-Hot 벡터로 표현되도록 변환함.
(고유값들을 피처로 만들고 정답에 해당하는 열은 1로 나머지는 0으로 표시)
- 숫자의 차이가 모델에 영향을 미치는 선형 계열 모델에 주로 적용함.
(로지스틱 회귀, SVM, 신경망)
sklearn.preprocessing.OneHotEncoder 활용 방법
> fit() : 어떻게 변환할 것인지에 대해 학습
> transform() : 문자열을 숫자로 변환
> fit_transform() : 학습과 변환을 한 번에 처리
> get_feature_names() : 원핫인코딩으로 변환된 컬럼의 이름을 반환
> DataFrame 을 넣을 경우 모든 변수들을 변환하기 때문에 범주형 컬럼만 처리하도록 해야 함.
-> 처리 후 본래 DataFrame와 concat 처리
https://blog.naver.com/dalgoon02121/222088976883
머신러닝3. 범주형 데이터 전처리 (Label Encoding, One-Hot Encoding)
머신러닝의 사이킷런 라이브러리는 문자열 값을 입력 값으로 처리하지 않기 때문에, 모델을 학습시키기에 ...
blog.naver.com