🍎 LabelEncoder vs OneHotEncoder 쉽게 이해하기
🥝 예시 데이터
items = ["사과", "바나나", "토마토", "딸기", "수박"]
1️⃣ LabelEncoder: 클래스에 숫자를 붙여줌
from sklearn.preprocessing import LabelEncoder
items = ["사과", "바나나", "토마토", "딸기", "수박"]
encoder = LabelEncoder()
encoder.fit(items)
labels = encoder.transform(items)
print('인코딩 변환값:', labels)
📌 출력 결과
인코딩 변환값: [3 0 4 1 2]
| 원본 | LabelEncoder 결과 |
|---|---|
| 바나나 | 0 |
| 딸기 | 1 |
| 수박 | 2 |
| 사과 | 3 |
| 토마토 | 4 |
📌 주의: 숫자가 순서를 가지는 것처럼 보이지만 실제로는 그렇지 않음
2️⃣ OneHotEncoder: 각 항목을 열로 바꿔줌
from sklearn.preprocessing import OneHotEncoder
import numpy as np
items = np.array(items).reshape(-1, 1) # 2D로 변환
one_hot = OneHotEncoder(sparse=False)
encoded = one_hot.fit_transform(items)
print(encoded)
📌 출력 결과
[
[0. 1. 0. 0. 0.] # 바나나
[0. 0. 0. 1. 0.] # 딸기
[0. 0. 1. 0. 0.] # 수박
[1. 0. 0. 0. 0.] # 사과
[0. 0. 0. 0. 1.] # 토마토
]
📊 표로 보면:
| 원본 | 바나나 | 딸기 | 수박 | 사과 | 토마토 |
|---|---|---|---|---|---|
| 바나나 | 1 | 0 | 0 | 0 | 0 |
| 딸기 | 0 | 1 | 0 | 0 | 0 |
| 수박 | 0 | 0 | 1 | 0 | 0 |
| 사과 | 0 | 0 | 0 | 1 | 0 |
| 토마토 | 0 | 0 | 0 | 0 | 1 |
✅ 정리
- LabelEncoder: 간단히 숫자로 바꿈 (순서나 거리 개념 X)
- OneHotEncoder: 각 항목마다
0/1 벡터로 변환 → 머신러닝에 더 적합 - 분류 모델을 만들 때는 OneHot이 더 안전
🧠 언제 써야 할까?
- ✅ 트리계열 모델 (DecisionTree, RandomForest) → LabelEncoder도 OK
- ✅ 로지스틱 회귀, 신경망 등 선형 모델 → 반드시 OneHotEncoder
📌 한 줄 정리
LabelEncoder는 번호표, OneHotEncoder는 진짜 상태표!
머신러닝 모델이 헷갈리지 않게 하려면, OneHot이 더 안전합니다.
'인공지능' 카테고리의 다른 글
| 피처 스케일링과 정규화 (4) | 2025.08.27 |
|---|---|
| 정확도 정밀도 재현률 (2) | 2025.07.31 |
| 사이킷런에서 의사결정나무 결정 과정 (0) | 2025.07.31 |
| 🎥 OpenCV : 이미지 속 사람 검출하기 (2) | 2025.07.18 |
| 🎥 OpenCV 입문: 이미지 & 동영상 데이터 불러오기 (6) | 2025.07.17 |