Note ≡
역주 LabelEncoder는 타깃 레이블을 인코딩하기 위한 클래스이므로 입력 데이터로 1차원 배열을 기대합니다. 앞 코드에서 color 열만 추출해서 LabelEncoder 객체에 주입한 이유입니다. 데이터셋에 변경해야 할 열이 많다면 동일한 작업을 반복해야 하므로 번거롭습니다. 범주형 데이터를 정수로 인코딩하는 OrdinalEncoder와 판다스 데이터프레임의 열마다 다른 변환을 적용하도록 도와주는 ColumnTransformer를 이용하면 여러 개의 열을 한 번에 정수로 변환할 수 있습니다. 코드는 다음과 같습니다.
>>> from sklearn.compose import ColumnTransformer
>>> from sklearn.preprocessing import OrdinalEncoder
>>> ord_enc = OrdinalEncoder(dtype=int)
>>> col_trans = ColumnTransformer([('ord_enc', ord_enc, ['color'])])
>>> X_trans = col_trans.fit_transform(df)
>>> X_trans
array([[1],
[2],
[0]])
ColumnTransformer는 첫 번째 매개변수로 트랜스포머(transformer)의 리스트를 받습니다. 트랜스포머는 이름, 변환기, 변환할 열의 리스트로 이루어진 튜플입니다. 여기에서 이름은 ord_enc, 변환기는 OrdinalEncoder 객체, 변환할 열은 color 하나를 지정했습니다. 결과에서 알 수 있듯이 color 열이 정수 값으로 변환되었습니다.