data-science-summary/summary

one-hot encoding 하는법 in python

고수트 2020. 9. 19. 17:10
반응형

<엔지니어는 구현을 못하면 모르는것이다>

one-hot encoding 

one-hot(원핫)인코딩이란? 단 하나의 값만 True이고 나머지는 모두 False인 인코딩

변수를 가변수(dummy variable) 형태로 변환 / 변수를 one-hot encoding 기법을 통해 변환 하는 두가지 방법이 있음

import pandas as pd
s = pd.Series(list('abca'))
print(pd.get_dummies(s))

# 변수개수 하나 줄일때 drop_first=True
temp = pd.get_dummies(s, drop_first=True, prefix='dummies', prefix_sep='_')
df = pd.concat([s,temp], axis=1)
df

# one-hot encoder 사용하여 변형
from sklearn.preprocessing import OneHotEncoder
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc = OneHotEncoder(handle_unknown='ignore')
enc.fit(X)
print(enc.transform(X).toarray())
# 각 카테고리 확인
print(enc.categories_)

# 학습된 encoder를 바탕으로 변환
enc.transform([['Female', 1], ['Male', 4]]).toarray()

# one-hot encoding 상태에서 다시 원복
enc.inverse_transform([[0, 1, 1, 0, 0], [0, 0, 0, 1, 0]])

# 각 피쳐의 이름 얻기
enc.get_feature_names(['gender', 'group'])

# 하나를 제거하여 수행
drop_enc = OneHotEncoder(drop='first').fit(X)
drop_enc.transform(X).toarray()

 

반응형