Machine Learning

[머신러닝] Integer Encoding & One-hot Encoding

Scarlett_C 2021. 10. 2. 14:27
728x90

*Integer Encoding

머신러닝에 데이터를 inpur하기 전에, 컬럼의 값을 모두 int 값으로 변경 해 주는 것이 좋다.

따라서, Row Data 상에 object 형태의 값(str 값)이 있는경우 int 값으로 대응할 수 있도록 mapping 하는것이 좋다.

 

DataFrame의 .replace() 함수를 이용하여 컬럼의 값을 원하는 형태로 변경 가능하다

ex) 숫자형 값을 문자형으로, 숫자형 값을 다른 숫자로

#YES/No 값을 0,1로 변경
df['Column'].replace({'No' : 0, "YES" :1}, inplace=True)

ex) 변경 하고싶은 값을 변경 :.replace()함수는 원하는 값을 일괄적으로 변경 할 때 편리하다

# 값을 변경하고 싶을 때
df.replace({1:100, 2:200}) #Dataframe 내의 1값은 100을고 2값은 200으로 변경됨
df.replace({'Column1': 1 , 'Column2' : 2}, 100) #Column1의 1값과 Colume2의 2값이 모두 100으로 변경
df.replace({'Column1' : {0:100, 1:200}}) #Comlumn1의 0값은 100으로 1값은 200으로 변경됨

Integer Encoding은 머신러닝 알고리즘으로부터 잘못된 경향성을 학습하게 될 수도 있다. (연산이 가능한 것처럼 보임)

 

*One-hot Coding

: 범주형(Categorical)값을 이진화된 값(Binary)값으로 바꿔서 표현하는 것을 의미

- 범주형 데이터를 해당 레이블을 나타내는 인덱스만 1의 값을 가지고 나머지 부분은 0의 값을 가진 Binary Value로 표현

- 머신러닝 알고리즘을 구현할 때 타겟 데이터를 One-hot Coding 형태로 표현하는 것이 일반적

 

<One-hot Encoding 구현하기>

import pandas as pd
pd.get_dummies(df)

ex)

 

728x90