순서형 인코딩(Ordinal encoding)
순서를 정할 수 있는 범주형 변수의 경우 정수 배열로 인코딩할 수 있습니다. 예를 들어 다음 자료는 3개의 변수와 두개의 샘플을 가집니다.
변수1 | 변수2 | 변수3 | |
1 | male | from US | uses Safari |
2 | female | from Europe | uses Firefox |
각 변수에 따라 알파벳 순으로 순서를 지정할 수 있습니다. male과 female의 경우는 1, 0으로 변환됩니다. OrdinalEncoder()
클래스를 사용합니다.
sklearn.preprocessing.OrdinalEncoder(categories="auto")
- 목록변수를 정수(배열형)로 인코딩하는 클래스
- categories를 기본값(auto)으로 지정하면 고유값들을 올림차순으로 지정하고 각각에 대응하는 인덱스로 변환, 동일한 형태의 배열형태로 값을 지정하면 그 값에 대응하여 변환
odeco=preprocessing.OrdinalEncoder() X = [['male', 'from Europe', 'uses Safari'], ['female', 'from US', 'uses Firefox']] odeco.fit(X) print(odeco.categories_)
[array(['female', 'male'], dtype=object), array(['from Europe', 'from US'], dtype=object), array(['uses Firefox', 'uses Safari'], dtype=object)]
print(odeco.transform(X))
[[1. 0. 1.] [0. 1. 0.]]
위 결과와 같이 각 변수(열) 단위로 순서가 지정됩니다.
new=odeco.transform([['female', 'from Europe', 'uses Safari']]) print(new)
[[0. 0. 1.]]
new_or=odeco.inverse_transform(new) print(new_or)
[['female' 'from Europe' 'uses Safari']]
댓글
댓글 쓰기