기억 저장소

클라우드 기반 인공지능 개발과 DevOps 실무

인공지능/머신러닝

머신러닝 : (1)Page [레이블 인코딩,원 핫 인 코딩] , [Label Encoding , One Hot Encoding], 문자열를 숫자로 변환해주기 , 머신러닝을 위해 숫자 변환

하늘.98 2021. 11. 23. 17:53

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd 등을 통해 라이브러리를 가져온 뒤 

저장되어있는 csv 파일을 read 로 읽어온다

데이터 프레임에 있는 문자열들이 카테고리컬 데이터 인지 확인해준다.

NaN를 두가지의 방법 중 하나로 처리해준다. 

 

카테고리컬 데이터는 컬럼이 2개일 경우 Label-Encoding, 3개 이상일 경우 One-Hot-Encoding을 사용해 Dummy variable trap 하였습니다.

 

 

Label Encoding

 

Label Encoding 이란 알파벳 오더순으로 숫자를 할당해주는 것을 말한다.

 

 

글자니까 당연히 알파벳순으로 정렬이 가능 할 것이고... 그 정렬된 기준으로 번호를 매긴다는 뜻.

 

각설하고 위에 Country 열의 정보를 숫자로 바꾸면 다음과 같아진다. (알파벳 순)

하지만 적용이 쉽지만은 않은 Label Encoding.

 

위 시나리오에서 Country라는 데이터는 순서나 랭크가 없다. 그러나 Label Encoding을

 

수행하면 결국엔 알파벳 순으로 랭크가 되는 것이고, 그로 인해서 랭크된 숫자정보가

 

모델에 잘못 반영될수가 있겠다. 

 

당연히 이건 우리가 바라는게 아니다. !!

 

그래서 머가 있냐면...

 

One-Hot Encoding

요놈이다. 쉽게 이야기해서 목록화해서 개별로 그 목록값에 대한 이진값으로 만드는 방법이다. 

 

구두로는 어렵다 예시로 보자.

 

One-Hot Encoding은 더미변수를 만든 것을 처리하는 방법이다.

 

아래와 같다. 인디아가 100, 일본이 001, 미국이 002 이런 느낌.. 이런 간지.

 

위 예시에서 보는 것과 같이 3개의 새로운 feature가 추가되었다.