원-핫 인코딩one-hot encoding은 여러 값 중 하나one만 활성화hot하는 인코딩입니다.
실행 절차
-
인코딩 하려는 피처의 고윳값 개수를 구합니다.
-
피처의 고윳값 개수만큼 열을 추가합니다.
-
각 고윳값에 해당하는 열에 1을 표시하고 나머지 열에는 0을 표시합니다.
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
fruits = ['사과', '블루베리', '바나나', '귤', '블루베리', '바나나', '바나나', '사과']
# 레이블 인코더, 원-핫 인코더 생성
label_encoder = LabelEncoder()
onehot_encoder = OneHotEncoder()
# 레이블 인코딩 적용(문자 데이터 -> 숫자 데이터)
fruits_label_encoded = label_encoder.fit_transform(fruits)
# 원-핫 인코딩 적용
fruits_onehot_encoded = onehot_encoder.fit_transform(fruits_label_encoded.reshape(-1, 1))
print('원-핫 인코딩 적용 후 데이터:\n', fruits_onehot_encoded.toarray())
원-핫 인코딩 적용 후 데이터:
[[0. 0. 0. 1.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 0. 1.]]
판다스의 get_dummies() 함수를 사용하면 더 간단하게 구현할 수 있습니다.
import pandas as pd
pd.get_dummies(fruits)