본문 바로가기

나혼자 DA

[데이터 분석 정리] 데이터 인코딩편

숫자만 좋아하는 컴퓨터씨에게 데이터를 잘 전달하는게 중요하죠.

저를 위한 정리글 2탄, 데이터 인코딩 편입니다.


🤷‍♀️ 인코딩을 왜하나?

 | 범주형 데이터를 숫자 형태로 변환시켜주기 위해! 

 

더보기

목차

 

인코딩

 1. 레이블 인코딩

 2. 원-핫 인코딩

 3. 기타 

 

정규화

 1. MINMAX

 2. 표준화 

 

인코딩

1. 레이블 인코딩

 

레이블 인코딩이란 ?

: 범주형 데이터를 숫자로 1:1 MAPPING 시켜주는 인코딩 방법

 

예시

 [구매 상품] 피처를 아래와 같이 인코딩 

 책상 : 1 , 냉장고 : 2 , 티비 : 3 

 

구현

sklearn.preprocessing import LabelEncoder

le = LebelEncoder()

le.fit(x)

x_le = le.transform(x)

 

주의할점

: 명목형 데이터, 즉 순위가 없는 데이터를 레이블 인코딩시 컴퓨터가 잘 못 학습할 수 있음

   e.g. 책상 : 1 , 냉장고 : 2 , 티비 : 3 으로 인코딩했다고치면,  책상과 냉장고 그리고 티비는 서로 별개 데이터인데 책상-냉장고를 유사 데이터라고 인식할 수 있음(1-2 가 1-3 보다 서로 더 가까운 숫자니까)

 

그럼 어떻게하나? 2번 원-핫 인코딩으로 가넝한~

 

2. 원-핫 인코딩

 

원-핫 인코딩이란?

: 피처의 고유값을 열로 만든 후 고유값에 해당하는 열에 1을 표시 

 

예시

책상 냉장고 티비
1 0 0
0 1 0
0 0 1

 

구현 

pd.get_dummies(x)

 

주의할점 

: 고유값이 너어어어무 많아서 열이 너어어어무 늘어나면 안좋지 않을까? → 아래 방법으로 진행하며 성능차이를 확인해줘야합니다  

 

 (1) 비슷한 애들끼리 그룹화 

 (2) 빈도가 적은 애들은 '기타'에 다 넣기 

  e.g. 한국 10,000개 대만 5,000개 필리핀 3,000개... 일본 1개 중국 1개 러시아 1개 → 일본, 중국, 러시아를 "기타" 로 변환시킨 후 원-핫인코딩 

 (3) 다른 인코딩 방법 선택하기 

 

 

3. 기타 인코딩 

 제가 저번 필사에서 알게된 인코딩 법이 있습니다. 

 

 Frequency Encoding  !!

 

각 데이터의 구성 비율로 바꿔주는건데, 

분류의 Boosting Tree 모델을 사용할 때 성능을 높이고자 쓰인다고 하는데, 물론 모든 분류기법에 맞다! 는 말이 아니란거 아시죠? 그냥 이럴때 이런 인코딩법도 쓰더라~~ 로 알고 넘어갔습니다. 

 

관련 글이 궁금하시다면? ▼

 

[Kaggle 필사] 성인 인구조사 소득 예측 대회 필사 - 코드 풀어서 공부하기( 결측치 처리, 중복행 출

안녕하세요 여러분 오랜만에 돌아왔습니다. 사실 일주일에 한번 [모두의 연구소]에서 데이터 분석 모임을 진행하는데, 그 안에서 팀을 꾸려 Kaggle이나 Dacon 대회를 나가기로 결정했어요! 근데 이

debbie-da.tistory.com




피처 스케일링

모델 훈련을 제대로 시키기 위해 필요한 피처 스케일링! 특히 회귀 모델에 필수적이죠. 

말 그대로 훈련에 투입될 데이터들의 Scale이 비슷하게 만들어주는 절차입니다.

※ Tree 기반 모델(랜덤 포레스트, XGBOOST, Light GBM 등) 엔 할 필요 X

 

1. MINMAX

| 피처 값의 범위를 0~1로 조정하는 기법

 

구현

sklearn.preprocessing import MinMaxScaler 

mm = MinMaxScaler()

mm.fit(df)

df_sc = mm.transform(df)

 

주의사항 

 : 이상치가 너무 크거나 작으면 추천 X 

 

 

2. 표준화 

| 평균 0, 분산이 1이 되도록 피처 값을 조정하는 방법 

 

구현

sklearn.preprocessing import StandardScaler

sc = StandardScaler()

sc.fit(df)

df_sc = sc.transform(df)

 

알아두기 

: 정규분포를 따르는 데이터는 표준화스케일링을 적용하는 것이 좋다합니다

 

 

+ 추가 블로그

http://www.dodomira.com/2016/10/20/how_to_eda/

 

※ 향후 인코딩 관련 정보 습득시 이 글에다 추가할 예정이여요 


참고서 : 머신러닝, 딥러닝 문제해결 전략