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