한국경제신문(toss bank)

데이터 전처리 ( Preprocessing )

다시초심으로 2024. 8. 1. 17:01

데이터 인코딩

  • 머신러닝 알고리즘은 문자열 데이터 속성을 입력 받지 않는다.
  • 문자형 카테고리형 속성은 모두 숫자값으로 변환/인코딩 되어야 한다.
    • 레이블(Label)인코딩
    • 원-핫(One-Hot)인코딩

레이블 인코딩 ( Label Encoding )

# Target(Label)에만 적용해야 합니다.
targets = ["청바지", "치마", "청바지", "원피스", "청바지", "치마", "치마", "청바지", "원피스"]

#LabelEncoder란 범주형 데이터를 수치형 데이터로 변환 하는데 사용합니다.
#범주형 데이터 ( 예 : 문자열 라벨 ) 를 숫자형 라벨로 인코딩.
from sklearn.preprocessing import LabelEncoder

#LabelEncoder라는 객체를 생성
lbl_encoder = LabelEncoder()
lbl_encoder.fit(targets)

lbl_encoder.classes_
# 결과 ==> array(['원피스', '청바지', '치마'], dtype='<U3')

encoded_targets = lbl_encoder.transform(targets)
encoded_targets
# 결과 ==>array([1, 2, 1, 0, 1, 2, 2, 1, 0])

target
# 결과 ==> ['청바지', '치마', '청바지', '원피스', '청바지', '치마', '치마', '청바지', '원피스']

 

문자열 데이터 속성을 숫자값으로 변환

** 위 코드랑 캡쳐본이 다를수잇음 **

전처리 = 데이터를 변형( Transformation ) 시키는 작업. 데이터의 변형을 일으키는 클래스는 Transformer.

차이점 = Transformation은 데이터를 더 적합한 형태로 만드는 작업을 의미
Transformer 는 Transformation을 수행하는도구나 객체. 사이킷런에서 변형을 수행하는 클래스.

원-핫 (One-Hot) 인코딩

  • Feature의 유형에 따라 새로운 Feature를 추가해 고유 값에 해당하는 컬럼에만 1을표시.
  • 나머지 컬럼에는 0을 표시

Feature Scaling