인코딩

J. Hwang·2024년 1월 18일
0

머신 러닝에서 인코딩 (encoding) 이란, string 데이터를 숫자 데이터로 변환시키는 것을 말한다.
일반적인 머신 러닝 알고리즘은 숫자 데이터를 기반으로 예측을 하기 때문에, 인코딩 작업이 필요하다.
인코딩은 크게 레이블 인코딩과 원핫 인코딩으로 나뉜다.

레이블 인코딩 (Lable encoding)

  • string 데이터를 범주형 숫자 데이터로 변환하는 방식이다.
  • 다만 0, 1, 2, 3, 4, ... 등과 같이 표시했을 때 0을 가장 약하고 숫자가 커질수록 강한 것으로 판단하는 알고리즘 (ex) 선형 회귀) 과 만나면 레이블 인코딩은 머신 러닝의 결과 예측을 왜곡할 수도 있다.
  • sklearn LabelEncoder 로 인코딩을 할 수 있다.
from sklearn.preprocessing import LabelEncoder

df = df.apply(LabelEncoder().fit_transform)

원핫 인코딩 (One-hot encoding)

  • 각 string 데이터 별로 새로운 feature를 만들고 그 string 데이터에 해당하는 경우에 feature에 1을 표시하는 방식이다.
  • 다만 feature의 갯수가 크게 늘어나기 때문에 머신 러닝 계산 시간이 길어지고 불필요한 feature도 많아져서 오히려 예측 성능이 떨어질 수 있다. 이때 어떤 feature가 중요하고 중요하지 않은지 판단해서 포함/제외시키는 단계가 별도로 필요할 수 있다.
  • sklearn OneHotEncoder 로 인코딩을 할 수 있다. 다만, 하나의 column에 대해서만 가능하고 전체 data frame에 적용되지 않는 것에 주의해야 한다.
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse=False)

ohe.fit(df[['col1']])
  • 그래서 보통은 전체 data frame에 적용 가능한 pandas의 get_dummies 메소드를 사용한다.
import pandas as pd

columns = df.columns.tolist()   # 전체 column에 대해서 one-hot encoding을 진행하겠다.
df1 = pd.get_dummies(df, columns=columns)

References

https://wikidocs.net/60853#:~:text=1.%20원%2D핫%20인코딩(,의%20벡터%20표현%20방식입니다
https://wikidocs.net/29530

profile
Let it code

0개의 댓글