sckit-learn의 머신러닝 알고리즘은 입력값으로 문자열을 받는 걸 허락하지 않는다.
이를 위한 전처리 방법 중 하나인 원핫 인코딩.
(1) Pandas의 get_dummies() 함수 활용
import pandas as pd
df=pd.DataFrame({'col_name':['a','b','c','d']})
pd.get_dummies(df)
(2) Keras 메소드 활용
# 토크나이징 과정
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
str='can not take my eyes off you'
tkn=Tokenizer()
tkn.fit_on_texts([str])
tkn.word_index
# 텍스트 수치화
encoded=tkn.texts_to_sequences([str])[0]
encoded
# one-hot encoding
ohe = tf.keras.utils.to_categorical(encoded)
ohe
[3] Tensorflow 활용
import tensorflow as tf
data=[1,3,5,3,2,7]
tf.one_hot(data,10) # (라벨 인덱스 목록, 라벨 개수)
# tf.one_hot(data, depth=10, dtype=tf.int32) # 정수형태로 - 소수점 사라짐
# tf.one_hot(data, depth=10, axis=0) : 열방향
# on_value/off_value 옵션 :0,1 대신 다른 값으로 넣을 수도 있음