Data Science & AI/Machine Learning

[Python] 데이터 인코딩 - 레이블 인코딩, 원핫 인코딩

skwkiix 2023. 8. 17. 18:26
728x90

데이터 인코딩

머신러닝 알고리즘을 적용하기 전, 데이터 전처리에 해당하는 부분이다. 머신러닝에서는  문자형 데이터를 입력값으로 사용할 수 없으므로, 문자형 데이터를 숫자형 데이터로 변환해주어야 한다.


1.레이블 인코딩 ( Label Encoding)

카테고리 피처를 코드형 숫자 값으로 표현

 

예시 데이터) titanic 데이터

  • 데이터 불러오기
import pandas as pd
import seaborn as sns
​
df = sns.load_dataset('titanic')
df.head()
  • 레이블 인코딩
from sklearn import preprocessing
import pandas as pd
​
# LabelEncoder 사용하여 'sex' 열 변환
le = preprocessing.LabelEncoder()
le.fit(df['sex'])
df['sex'] = le.transform(df['sex'])
​
print(df.head())

'sex' 컬럼의 값들이 1과 0으로 바뀌었다. ( male > 1, female >0)

 


2. 원 핫 인코딩( One Hot Encoding)

컬럼 형태로 되어있는 피쳐의 고유값을 열 형태로 변환한 뒤 , 고유값에 해당하는 칼럼에만 1을 표시하고 나머지 칼럼에는 0을 표시하는 방법이다.

 

pandas의 get_dummies 를 이용해서 간단히 처리해보자.

  • 데이터 불러오기
import pandas as pd
import numpy as np
import seaborn as sns
​
df = sns.load_dataset('titanic')
df.head()
  • 문자형 데이터 'sex' 개수 파악
df.sex.value_counts()
  • 원핫인코딩으로 변환
pd.get_dummies(df['sex']) # 원핫인코딩 -> 범주형 변수를 0과 1로 바꾼다.

 

이처럼 레이블 인코딩과 달리 원핫 인코딩은,  새로운 피처를 추가해, 고유값만 해당하는 데이터를 1로 처리해준 것을 볼 수 있다.


3. 인코딩 방법 비교 _ 장단점

데이터의 특성과 사용하는 머신러닝 알고리즘에 따라 어떤 인코딩 방법을 적용해야 할지 고민해봐야 한다.
  원핫 인코딩 레이블 인코딩
장점 - 다양한 모델에 적용하기 용이함
- 클래스 거리 간 계산 가능
- 범주형 값들을  정수로 변환하여 표현하여, 데이터 저장에 효율적
- 일부 범주형 변수의 순서 정보를 유지 가능
단점 - 차원의 저주 발생 가능
- 다중공선성 문제 야기 

- 정수 값들의 크기를 가중치로 해석할 가능성 존재 > 모델 성능 왜곡 

 

728x90