상세 컨텐츠

본문 제목

[머신러닝] Label Encoding / One-Hot Encoding

coding/머신러닝

by golduny_zoo 2021. 5. 17. 11:52

본문

728x90

데이터 전처리 과정으로

위의 데이터 처럼 학습 시킬 데이터에 문자가 들어오게 되면

컴퓨터는 문자를 인식하지 못하기 때문에 카테고리로 판단되는 데이터는, 숫자로 바꿔줄 수 있다.

 


1. Label Enconding

말그대로 문자열을 ABC 순서대로 라벨링을 해주는 작업을 말한다. 

from sklearn.preprocessing import LabelEncoder
label_X = LabelEncoder()
X['Country']=label_X.fit_transform(X['Country'])

Country 부분이 0, 1, 2로 라벨링이 되어 있는 모습을 볼수 있다. 


2. One-Hot Encoding

onehot encoding은 0과 1로 문자열의 컬럼에 표시하는 방식이다. 

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
#		        '설명'	   	 '적용할 함수'       '컬럼'	
ct = ColumnTransformer([('one_hot_encoder', OneHotEncoder(),[0])],remainder ='passthrough')
# remainder 특수한 경우 drop할지 아니면 원래상태로 놔둘지 결정
X = ct.fit_transform(X)

3개의 컬럼이 5개로 늘어나고, 앞의 3개의 컬럼이 One-Hot인코딩된 컬럼이다. 

 

 

원핫 인코딩은 데이터의 양을 증가시켜 저장공간을 비효율적으로 사용하나

다음 기법들로 다차원 공간에 유사도를 표현할 수 있다.

  • 카운트 기반의 벡터화 방법 : LSA, HAL
  • 예측 기반의 벡터화 방법 : NNLM, RNNLM, Word2Vec, FastText
  • 카운트와 예측 기반의 벡터화 방법 : GloVe

관련글 더보기