[데이터 사이언스/개념/문법] oneHotCoding이란?
2024. 8. 16. 19:38ㆍAI & DS/머신러닝
OneHotEncoder를 사용하여 범주형 데이터를 원-핫 인코딩하면,
범주형 데이터를 머신 러닝 모델이 직접 사용할 수 있는 형태로 변환할 수 있습니다.
이는 모델 성능 향상에 기여하며, 다양한 알고리즘과의 호환성을 보장합니다.
다만, 차원의 증가와 메모리 사용량에 주의해야 합니다.
One-Hot Encoding이란?
- One-Hot Encoding은 범주형 데이터를 이진 벡터(binary vector)로 변환하는 방법입니다.
- 각 범주형 값은 하나의 고유한 이진 벡터로 변환됩니다.
- 벡터의 길이는 해당 범주형 변수의 고유한 값의 개수와 같고, 특정 범주에 해당하는 위치는 1, 나머지 위치는 0으로 설정됩니다.
- 예를 들어, ['red', 'green', 'blue']라는 범주형 변수를 원-핫 인코딩하면 다음과 같은 결과가 됩니다
- red -> [1, 0, 0]
- green -> [0, 1, 0]
- blue -> [0, 0, 1]
- 예를 들어, ['red', 'green', 'blue']라는 범주형 변수를 원-핫 인코딩하면 다음과 같은 결과가 됩니다
코드 설명
from sklearn.preprocessing import OneHotEncoder
# OneHotEncoder 객체 생성
cat_transformer = OneHotEncoder(handle_unknown='ignore')
OneHotEncoder(handle_unknown='ignore') 파라미터 설명
handle_unknown='ignore'
- 데이터셋에 없는 새로운 범주형 값이 등장했을 때 이를 무시하도록 설정합니다.
- 예를 들어, 훈련 데이터에는 없었지만 테스트 데이터에 새로운 범주형 값이 등장할 경우, 해당 값을 무시하고 인코딩합니다. 이를 통해 예기치 않은 오류를 방지할 수 있습니다.
예시
원본 데이터
import pandas as pd
# 예시 데이터프레임
df = pd.DataFrame({
'color': ['red', 'green', 'blue', 'green', 'red']
})
print("Original DataFrame:")
print(df)
One-Hot Encoding 적용
from sklearn.preprocessing import OneHotEncoder
# OneHotEncoder 객체 생성
encoder = OneHotEncoder(handle_unknown='ignore')
# 원-핫 인코딩 수행
encoded_data = encoder.fit_transform(df[['color']]).toarray()
print("\\\\nOne-Hot Encoded Data:")
print(encoded_data)
출력 결과
Original DataFrame:
color
0 red
1 green
2 blue
3 green
4 red
One-Hot Encoded Data:
[[0. 1. 0.]
[1. 0. 0.]
[0. 0. 1.]
[1. 0. 0.]
[0. 1. 0.]]
설명
fit_transform(df[['color']])
- fit_transform 메서드는 주어진 데이터에 대해 원-핫 인코딩을 수행합니다.
- fit 단계에서는 데이터를 학습하고, transform 단계에서는 학습된 정보를 바탕으로 데이터를 변환합니다.
- 결과는 희소 행렬(sparse matrix) 형태로 반환되기 때문에, 이를 배열 형태로 변환하기 위해 toarray()를 사용했습니다.
- 결과 해석:
- red -> [0, 1, 0]
- green -> [1, 0, 0]
- blue -> [0, 0, 1]
- 원본 데이터의 color 열이 이진 벡터로 변환되었습니다.
원-핫 인코딩의 장점
모델 성능 향상
- 원-핫 인코딩을 통해 범주형 데이터를 수치 데이터로 변환하면, 머신 러닝 모델이 이 데이터를 직접 사용할 수 있게 됩니다.
거리 기반 알고리즘에 유용
- KNN, SVM 등의 거리 기반 알고리즘은 수치 데이터를 필요로 하므로, 원-핫 인코딩을 통해 범주형 데이터를 적절히 변환할 수 있습니다.
다양한 모델과의 호환성
- 원-핫 인코딩은 대부분의 머신 러닝 알고리즘과 호환됩니다.
한계 및 주의점
차원의 증가
- 범주형 변수의 고유 값이 많을 경우, 원-핫 인코딩으로 인해 차원이 크게 증가할 수 있습니다.
- 예를 들어, 범주가 100개라면, 해당 변수는 100개의 열로 변환됩니다.
희소 행렬
- 원-핫 인코딩의 결과는 대부분의 값이 0인 희소 행렬이 됩니다.
- 큰 데이터셋에서 메모리 사용량을 주의해야 합니다.
'AI & DS > 머신러닝' 카테고리의 다른 글
[데이터 사이언스/문법] df[df[ ]] 과 df[ ]의 차이가 무엇일까? (0) | 2024.08.17 |
---|---|
[데이터 사이언스/문법] columnTransformer란? (0) | 2024.08.16 |
[데이터 사이언스/개념] 표준화의 장점 및 데이터 scale 차이에 따른 영향 (0) | 2024.08.15 |
[데이터 사이언스/개념/문법] pipeline이란? (0) | 2024.08.15 |
[데이터 사이언스/문법] DataFrame 이란? (0) | 2024.08.15 |