Python

LabelEncoder, OneHotEncoder의 차이

데건 2024. 8. 20. 16:48
728x90

 

인코딩

범주형 데이터를 숫자형으로 변환하는 과정에서 필요한 과정

 

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

 

728x90