let us not love with words or tongue but actions and truth.

IT/파이썬

one-hot encoding(원-핫 인코딩)

sarah0518 2021. 1. 4. 09:01
728x90

데이터 전처리작업중 원-핫 인코딩이라는 것이 있습니다.

 

예를 들어 한 컬럼에 A, B, C라는 값이 있을 경우

아래와 같이 3개의 컬럼을 새로 만들어 해당 되는 컬럼값에 1이라는 값을 넣어주는 것입니다.

 

one-hot encoding을 쓰는 이유는 컬럼을 category화 하여 사용하거나, 

각각의 value에 대한 영향력을 파악하기위해서 사용합니다.

 

 

one-hot encoding은 pandas, keras, tensorflow 라이브러리에서 

각각 다른 함수로 존재하지요.

 

 

오늘은 각 라이브러리에서 어떤 함수로 사용되는지 간단히 살펴 볼게요!!

 

 

그럼 이걸 pandas를 활용해서 인코딩 해주는 법을 소개할게요.

 

1
2
3
import pandas as pd
dum_col=pd.get_dummies(df1['colabc'],prefix="col")
dum_col
cs

 

[output]

 

그리고 마지막으로 꼭 해주셔야 할 것은 기존 df에 새로 추가한 원-핫 인코딩 컬럼을 추가해 주는 것입니다.

1
2
df2=df1.join(dum_col)
df1.shape, df2.shape
cs

[output]

>> ((847,57),(847,60))

위에서 3개의 컬럼이 추가된 것을 확인하실 수 있습니다.

 

 

위와 같이 one-hot encoding을 해주는 함수는 판다스에만 있는 것은 아니에요.

 

keras나 tensorflow에도 존재합니다.

 

 

 

keras에서는

>> from tensorflow.keras.utils import to_categorical

>> to_categorical(data)

 

로 해주시면 되구요!

 

 

 

tensorflow에서는

>> import tensorflow as tf

>> tf.one_hot(data)

 

로 해주시면 됩니다!!

 

 

 

728x90