STUDY/ML
[ML] Binary Encoding과 One Hot Encoding
moru_xz
2023. 3. 18. 14:37
Binary Encoding | One Hot Encoding | |
공통점 | - 범주형 변수를 수치형 변수로 변환 | |
차이점 | - 각 범주에 대한 고유의 이진 패턴 할당 | - 각 범주를 해당하는 항목이 1이고 다른 항목이 0인 이진 벡터로 인코딩 |
- 세 가지 범주가 있다면, 첫 번째 범주는 "001", 두 번째 범주는 "010", 세 번째 범주는 "100"으로 인코딩 |
- 세 가지 범주가 있다면, 첫 번째 범주는 "1 0 0", 두 번째 범주는 "0 1 0", 세 번째 범주는 "0 0 1"로 인코딩 |
|
- 비교적 적은 자리수의 이진 비트를 사용하여 데이터 크기를 줄일 수 있음 | - 범주의 수와 관계없이 모든 범주에 대해 동일한 수의 이진 비트를 사용하여 데이터를 표현 |
Binary Encoding
import pandas as pd
from category_encoders import BinaryEncoder
# 예시 데이터프레임 생성
df = pd.DataFrame({'fruits': ['apple', 'banana', 'orange', 'banana', 'orange']})
# Binary Encoder 객체 생성
be = BinaryEncoder()
# 범주형 변수를 이진 벡터로 변환하여 새로운 열을 추가
df_encoded = be.fit_transform(df['fruits'])
print(df_encoded)
fruits_0 fruits_1 fruits_2
0 0 0 1
1 0 1 0
2 0 1 1
3 0 1 0
4 0 1 1
One Hot Encoding
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({'fruits': ['apple', 'banana', 'orange', 'banana', 'orange']})
# pd.get_dummies() 함수를 사용하여 one-hot encoding 수행
df_encoded = pd.get_dummies(df['fruits'])
print(df_encoded)
apple banana orange
0 1 0 0
1 0 1 0
2 0 0 1
3 0 1 0
4 0 0 1