sckit-learn의 머신러닝 알고리즘은 입력값으로 문자열을 받는 걸 허락하지 않는다.
이를 위한 전처리 방법 중 하나인 원핫 인코딩.

One-Hot Encoding(원핫 인코딩) :

  • 고유값에 해당하는 컬럼에만 1, 나머지 컬럼에는 0
  • 0으로 이루어진 벡터에 단 한개의 1의 값으로 해당 데이터의 값을 구별
  • 딥러닝, 데이터 마이닝, 자연어 처리 등 많은 분야에서 사용되고 있는 기법

(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 대신 다른 값으로 넣을 수도 있음


0개의 댓글