본문 바로가기

[scikit-learn] LabelEncoder / 범주형 데이터 변환

Python/Scikit-learn 2019. 11. 13.

반응형

 

scikit-learn을 이용해 범주형 데이터를 쉽게 수치형 데이터로 바꿀 수 있다.

0과 1로 이루어진 다수의 열을 만드는 one-hot encoder와 달리 label encoder는 하나의 열에 서로 다른 숫자를 입력해준다. 

 

One-Hot Encoder

과일      
딸기 1 0 0
사과 0 1 0
바나나 0 0 0

 

Label Encoder

과일  
딸기 1
사과 2
바나나 3

 

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
le = le.fit(train['col'])   #train['col']을 fit
train['col'] = le.transform(train['col'])   #train['col']에 따라 encoding
test['col'] = le.transform(test['col'])   #train['col']에 따라 encoding

train['col']의 데이터를 기준으로 수치화하는 코드이다. 

 

 

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
data['col'] = le.fit_transform(data['col'])

fit_transform을 이용하여 코드를 간략화할 수도 있다. 그러나 train과 test데이터에 같은 값으로 encoding을 하고 싶으면 fit과 transform을 따로해야한다. test에도 le.fit(train['col'])한 값을 transform 해줘야하기 때문이다.

 

728x90

Comments