머신러닝 원-핫 인코딩(One-Hot Encoding) - 개념 및 연습문제

2025. 9. 26. 15:22·자격증/AICE

 

 

원-핫 인코딩(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
'자격증/AICE' 카테고리의 다른 글
  • 머신러닝 의사결정나무 & 랜덤포레스트로 모델 학습 - 개념 및 연습문제
  • 머신러닝 데이터셋 분리 및 스케일링 - 개념 및 연습문제
  • AI 모델링 기초
  • 데이터 전처리 기초
오은이
오은이
  • 오은이
    오은이 하우스
    오은이
  • 전체
    오늘
    어제
    • 분류 전체보기 (84)
      • 일기 (2)
      • Python (1)
      • Java (4)
      • CS (2)
      • 코딩테스트 (26)
        • 백준 (25)
        • 프로그래머스 (1)
      • 웹 개발 (17)
        • Spring (6)
        • JavaScript (3)
        • WebSquare (5)
        • React (3)
      • DB (5)
        • MySQL (4)
        • Oracle (1)
      • 서버&인프라 (18)
        • Server (5)
        • Cloud (12)
        • Linux (1)
      • 자격증 (9)
        • 정보처리기사 (2)
        • AICE (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    tomcat
    클라우드
    톰캣
    Associate
    알고리즘
    db
    자바
    웹스퀘어
    백준자바
    SpringBoot
    websquare
    dockerspring
    Java
    리액트
    EC2
    AICE Associate
    AI
    클라우드 배포
    docker배포
    백준
    cloud DB
    AICE
    react
    Spring
    머신러닝
    Apache
    MySQL
    오블완
    docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
오은이
머신러닝 원-핫 인코딩(One-Hot Encoding) - 개념 및 연습문제
상단으로

티스토리툴바