더북(TheBook)

4.2 범주형 데이터 다루기

지금까지는 수치형 데이터만 사용했습니다. 실제 데이터셋은 하나 이상의 범주형 특성이 포함된 경우가 많습니다. 이 절에서 간단하지만 효과적인 예를 사용하여 이런 데이터를 수치 계산용 라이브러리에서 어떻게 다루는지 알아보겠습니다.

범주형 데이터에 관해 이야기할 때 순서가 있는 것과 없는 것을 구분해야 합니다. 순서가 있는 특성은 정렬하거나 차례대로 놓을 수 있는 범주형 특성으로 생각할 수 있습니다. 예를 들어 티셔츠 사이즈는 XL > L > M으로 순서를 정할 수 있으므로 순서가 있는 특성입니다. 반대로 순서가 없는 특성은 차례를 부여할 수 없습니다. 앞의 예에서 티셔츠 컬러는 순서가 없는 특성입니다. 일반적으로 빨강이 파랑보다 더 크다고 말할 수 없습니다.

 

 

판다스를 사용한 범주형 데이터 인코딩

범주형 데이터를 다루는 여러 기법을 살펴보기 전에 예제를 위한 새로운 DataFrame을 만들어 보죠.

>>> import pandas as pd
>>> df = pd.DataFrame([
...                   ['green', 'M', 10.1, 'class.'],
...                   ['red', 'L', 13.5, 'class.'],
...                   ['blue', 'XL', 15.3, 'class.']])
>>> df.columns = ['color', 'size', 'price', 'classlabel']
>>> df
   color  size  price  classlabel
0  green     M   10.1      class1
1    red     L   13.5      class2
2   blue    XL   15.3      class1

앞 출력에서 볼 수 있듯이 새롭게 만든 DataFrame에는 순서가 없는 특성(color)과 순서가 있는 특성(size), 수치형 특성(price)이 있습니다. 클래스 레이블은 마지막 열에 저장되어 있습니다(지도 학습을 위해 데이터셋을 만든다고 가정합니다). 책에서 다루는 분류 학습 알고리즘은 순서가 있는 클래스 레이블을 사용하지 않습니다.6

 

 


  6 역주 순서가 있는 레이블을 다루는 문제를 순서를 가진 분류(ordinal classification) 또는 순서를 가진 회귀(ordinal regression)라고 부릅니다. 예를 들어 영화 평점을 1~5까지 다섯 개의 순서가 있는 레이블로 예측하는 문제입니다. 사이킷런은 아직 이에 대한 기능을 제공하지 않습니다. Mord 파이썬 패키지를 확인해 보세요(https://github.com/fabianp/mord).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.