scikit-learn에서 OneHotEncoder를 사용하고 되돌리는 방법에 대해 알아보자.
머신러닝을 할 때, sklearn.preprocessing.OneHotEncoder 또는 sklearn.preprocessing.LabelEncoder를 사용하여 학습을 하게된다면, 최종 예측 결과도 one-hot encoded 된 결과로 나오게 되는데, 간단하게 inverse_transform을 통해 원래 형식으로 바꿀 수 있다.
아래처럼 샘플 시리즈 ["a", "b", "c"]가 있다고 할 때, OneHotEncoder 또는 LabelEncoder를 사용하게 된다면:
import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
s = pd.Series(['a', 'b', 'c'])
le = LabelEncoder()
ohe = OneHotEncoder(sparse=False)
s1 = le.fit_transform(s)
s2 = ohe.fit_transform(s.to_numpy().reshape(-1, 1))
유의할 점은, LabelEncoder는 주로 1d array (=pandas.Series) 용도이지만 안되진 않는다, DataConversionWarning을 보게될 뿐). 그러나 OneHotEncoder의 경우 반드시 2d array (=pandas.DataFrame)을 사용해야 한다는 것.
1d array를 2d array로 바꿔야 한다거나, 왜 에러가 나는지 모르겠다면 필자의 디버깅 글을 참조하자:
[sklearn] One Hot Encoding 되돌리기
scikit-learn
에서OneHotEncoder
를 사용하고 되돌리는 방법에 대해 알아보자.머신러닝을 할 때,
sklearn.preprocessing.OneHotEncoder
또는sklearn.preprocessing.LabelEncoder
를 사용하여 학습을 하게된다면, 최종 예측 결과도 one-hot encoded 된 결과로 나오게 되는데, 간단하게inverse_transform
을 통해 원래 형식으로 바꿀 수 있다.아래처럼 샘플 시리즈
["a", "b", "c"]
가 있다고 할 때,OneHotEncoder
또는LabelEncoder
를 사용하게 된다면:아래와 같은
numpy.ndarray
형식을 보게 된다:이
array
를 다시 우리가 원하는 string 값으로 받으려면:최종값:
유의할 점은,
LabelEncoder
는 주로 1d array (=pandas.Series
) 용도이지만 안되진 않는다,DataConversionWarning
을 보게될 뿐). 그러나OneHotEncoder
의 경우 반드시 2d array (=pandas.DataFrame
)을 사용해야 한다는 것.1d array를 2d array로 바꿔야 한다거나, 왜 에러가 나는지 모르겠다면 필자의 디버깅 글을 참조하자:
[debugging] Expected 2D array, got 1D array instead
'Python > Scikit-Learn' 카테고리의 다른 글