4.2.1 순서가 있는 특성 매핑
학습 알고리즘이 순서 특성을 올바르게 인식하려면 범주형의 문자열 값을 정수로 바꾸어야 합니다. 안타깝지만 size 특성의 순서를 올바르게 자동으로 바꾸어 주는 함수는 없기 때문에 매핑 함수를 직접 만들어야 합니다. 여기서는 특성 간의 산술적인 차이를 이미 알고 있다 가정합니다. 예를 들어 다음과 같습니다.
XL = L + 1 = M + 2
>>> size_mapping = {
... 'XL': 3,
... 'L': 2,
... 'M': 1}
>>> df['size'] = df['size'].map(size_mapping)
>>> df
color size price classlabel
0 green 1 10.1 class1
1 red 2 13.5 class2
2 blue 3 15.3 class1
만약 나중에 정수 값을 다시 원래 문자열 표현으로 바꾸고 싶다면 간단히 거꾸로 매핑하는 딕셔너리 inv_size_mapping = {v: k for k, v in size_mapping.items()}를 정의하면 됩니다.7 앞서 size_mapping 딕셔너리와 비슷하게 판다스의 map 메서드를 사용하여 변환된 특성 열에 적용할 수 있습니다. 다음과 같이 사용합니다.
>>> inv_size_mapping = {v: k for k, v in size_mapping.items()}
>>> df['size'].map(inv_size_mapping)
0 M
1 L
2 XL
Name: size, dtype: object
7 역주 2장에 나온 리스트 내포와 비슷하게 중괄호 안에 포함된 for 반복문을 딕셔너리 내포라고 합니다. 여기서는 size_mapping의 키, 값 쌍을 뒤집은 딕셔너리를 만듭니다.