파이썬 머신러닝ML
파이썬 LabelEncoding (종속변수를 숫자_Class_로 변환), One hot Encoding
양기호니
2022. 11. 7. 23:11
728x90
반응형
혼자 공부하려고 정리했어요~
LabelEncoding
분류모델에 적용할 수 있도록 y값을 겹치지 않는 숫자로 바꿔준다.
import numpy as np
from sklearn.preprocessing import LabelEncoder
from keras.utils import np_utils
e = LabelEncoder()
e.fit(["유튜브", "블로그", "블로그", "티스토리", "카카오"])
print(f'분류된 Class : {e.classes_}') #분류된 class 확인
print(f'분류된 Class의 번호 : {e.transform(e.classes_)}') #분류된 class의 번호 확인
label = e.transform(["블로그", "티스토리", "카카오","유튜브"])
print(label) #새로 만든 문자 list를 번호로
print(e.inverse_transform([0, 0, 2, 3, 1])) #번호를 원래 데이터로 변환
## 결과물 ##
['블로그' '유튜브' '카카오' '티스토리']
[0 1 2 3]
[0 3 2 1]
['블로그' '블로그' '카카오' '티스토리' '유튜브']
One hot Encoding
겹치지 않는 y값을 행,열의 바꿔준다.
0,1 -> [[1. 0.]
[0. 1.]]
loss = categorical_crossentropy에 적용하여 분류할 수 있다.
#One hot Encoding, Decoding
# label = e.transform(["블로그", "티스토리", "카카오","유튜브"]
one_hot = np_utils.to_categorical(label)
print(one_hot)
print(np.argmax(one_hot, axis=1))
print(np.argmax(one_hot)) #axis를 넣어주지 않으면 첫번째 행만 읽어낸다.
print(e.inverse_transform(np.argmax(one_hot, axis=1)))
## 결과물 ##
[[1. 0. 0. 0.]
[0. 0. 0. 1.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]] # print(one_hot)
[0 3 2 1] # print(np.argmax(one_hot, axis=1))
0 # print(np.argmax(one_hot))
['블로그' '티스토리' '카카오' '유튜브'] #print(e.inverse_transform(np.argmax(one_hot, axis=1)))
반응형