원-핫 인코딩(One-Hot Encoding)이란?
- 범주형 데이터를 수치형 데이터로 바꾸는 방법
- 머신러닝 모델은 숫자만 이해할 수 있기 때문에, 문자나 범주를 숫자로 변환 필요
사용 예시
예를 들어, 색상을 나타내는 color 컬럼이 있다고 할 때
| color |
| red |
| blud |
| green |
| red |
| … |
- 머신러닝 모델은 "red" 같은 문자열을 직접 처리할 수 없다.
- 그런데 단순히 red=1, blue=2, green=3 이렇게 숫자로 바꾸면 모델이 1<2<3처럼 순서가 있다고 오해할 수 있다.
- 원-핫 인코딩은 순서 정보를 주지 않으면서 각 범주를 표현할 수 있는 방법이다.
각 범주를 0과 1로 된 새로운 컬럼으로 바꾼다.
| color | red | blue | green |
| red | 1 | 0 | 0 |
| blue | 0 | 1 | 0 |
| green | 0 | 0 | 1 |
| red | 1 | 0 | 0 |
- 각 행은 자신이 속한 범주만 1, 나머지는 0
- 모델이 범주를 독립적으로 인식할 수 있음
파이썬에서 구현
import pandas as pd
df = pd.DataFrame({"color": ["red", "blue", "green", "red"]})
df_encoded = pd.get_dummies(df, columns=["color"])
print(df_encoded)
출력
color_blue color_green color_red
0 0 0 1
1 1 0 0
2 0 1 0
3 0 0 1
AICE Associate 연습문제
출처 : 더에이아이랩 AICE Associate특강 연습문제
8. 원-핫 인코딩(One-hot encoding)은 범주형 변수를 1과 0의 이진형 벡터로 변환하기 위하여 사용하는 방법입니다.
원-핫 인코딩으로 아래 조건에 해당하는 컬럼 데이터를 변환하세요.
- 대상 데이터프레임: df_del
- 원-핫 인코딩 대상: object 타입의 전체 걸럼
- 활용 함수: Pandas의 get_dummies
- 해당 전처리가 반영된 결과를 데이터프레임 변수 df_preset에 저장해 주세요.
# 여기에 답안코드를 작성하세요.
obj_columns = df_del.dtypes[df_del.dtypes == 'object'].index.tolist()
print(obj_columns)
df_preset = pd.get_dummies(data=df_del, columns=obj_columns)
1. object 타입 컬럼 찾기
obj_columns = df_del.dtypes[df_del.dtypes == 'object'].index.tolist()
- df_del.dtypes → 각 컬럼의 데이터 타입 반환
- == 'object' → 문자열(범주형) 컬럼만 필터
- .index.tolist() → 컬럼명 리스트로 추출
이렇게 하면 원-핫 인코딩할 컬럼만 선택 가능
- df_del.dtypes : 각 컬럼의 데이터 타입을 알려주는 속성
import pandas as pd
df_del = pd.DataFrame({
"name": ["Alice", "Bob"],
"age": [25, 30],
"city": ["Seoul", "Busan"]
})
print(df_del.dtypes)
출력
name object
age int64
city object
dtype: object
- Pandas에서 "name" 과 "city" 는 문자열 → object
- "age" 는 정수 → int64
- (파이썬에서는 그냥 str, int 타입)
- df_del.dtypes== 'object' : 각 컬럼이 object 타입인지 True/False 로 비교
name True
age False
city True
dtype: bool
- True → 문자열(범주형) 컬럼
- False → 다른 타입 컬럼
- dtype은 Series 형태(Pandas에서 1차원 배열과 비슷한 자료구조)로 보여주기 때문에 dtype: bool 같이 표시
2. get_dummies로 원-핫 인코딩
df_preset = pd.get_dummies(data=df_del, columns=obj_columns)
- get_dummies → 지정한 컬럼의 범주형 값을 0과 1로 된 새 컬럼으로 변환
- data=df_del → 원본 데이터
- columns=obj_columns → 원-핫 변환할 컬럼 지정
- 반환값 → 원-핫 인코딩이 반영된 새로운 DataFrame
반응형
'자격증 > AICE' 카테고리의 다른 글
| 머신러닝 의사결정나무 & 랜덤포레스트로 모델 학습 - 개념 및 연습문제 (0) | 2025.10.10 |
|---|---|
| 머신러닝 데이터셋 분리 및 스케일링 - 개념 및 연습문제 (0) | 2025.09.30 |
| AI 모델링 기초 (0) | 2025.09.01 |
| 데이터 전처리 기초 (0) | 2025.08.29 |
| 데이터 수집 및 분석 기초 (0) | 2025.08.26 |