본문 바로가기
데이터사이언티스트 Data Scientist

원 - 핫 인코딩 - 범주형 데이터를 수치형 데이터로 변환하기

by 루시달 2024. 11. 4.

원-핫 인코딩 (One-Hot Encoding)

  • 정의: 각 카테고리를 **독립적인 이진 변수(0 또는 1)**로 변환합니다. 예를 들어, "Red", "Green", "Blue"라는 색상이 있으면 각각의 색상에 대해 새로운 열을 생성하고, 해당 색상에 맞는 위치에 1을 할당합니다.
  • 적합한 경우: 순서가 없는 명목형 데이터(예: 성별, 도시 이름 등)를 변환할 때 사용합니다.
  • 특징: 데이터의 차원이 증가하므로, 카테고리의 개수가 많을 경우 데이터 차원이 매우 커질 수 있습니다.

 

범주형 데이터수치형 데이터는 데이터의 특성과 활용 방식에 따라 구분되는 두 가지 주요 데이터 유형입니다.

1. 범주형 데이터 (Categorical Data)

  • 정의: 범주형 데이터는 특정 그룹이나 카테고리로 나뉘는 데이터입니다. 이러한 데이터는 순서가 없거나(명목형), 특정 순서가 존재하는 경우(순서형)도 있습니다.
  • 예시: 성별(남/여), 제품 종류(A/B/C), 지역(서울/부산/대구), 날씨(맑음/흐림/비).
  • 특성: 값 자체는 의미가 없고, 그룹이나 클래스로 구분되는 용도로 사용됩니다.
  • 구분:
    • 명목형(Nominal): 순서나 크기 관계가 없는 데이터 (예: 성별, 도시 이름).
    • 순서형(Ordinal): 순서나 등급이 있는 데이터 (예: 만족도(높음/보통/낮음), 학위 수준).

2. 수치형 데이터 (Numerical Data)

  • 정의: 수치형 데이터는 숫자로 표현되며 산술적 계산이 가능한 데이터입니다.
  • 예시: 나이, 소득, 점수, 길이, 무게.
  • 특성: 데이터의 크기나 차이를 계산할 수 있으며, 평균, 분산 등 통계적 분석이 가능합니다.
  • 구분:
    • 이산형(Discrete): 정수 값만 가지는 데이터 (예: 나이, 건물 층수, 자녀 수).
    • 연속형(Continuous): 실수 값이 가능한 데이터로, 특정 범위 내에서 무한히 많은 값을 가질 수 있음 (예: 키, 몸무게, 온도).

 

카테고리 형태의 데이터는?

"카테고리 형태의 데이터"는 일반적으로 범주형 데이터에 속합니다. 이러한 데이터는 특정 그룹이나 클래스를 나타내며, 순서가 없거나 순서가 있더라도 수치 연산을 하기보다는 그룹 간 비교빈도 계산 등에 사용됩니다.

범주형 데이터와 수치형 데이터의 차이 요약

구분범주형 데이터수치형 데이터

데이터 형태 그룹 또는 카테고리 숫자 또는 실수
예시 성별, 도시, 제품 종류 나이, 키, 무게
통계 분석 방식 빈도, 비율, 카이제곱 검정 평균, 분산, 회귀분석
구분 기준 명목형, 순서형 이산형, 연속형

 

따라서, 카테고리 형태의 데이터는 주로 범주형 데이터에 속하며, 데이터 분석이나 머신러닝에서 원-핫 인코딩 등을 통해 숫자로 변환하여 처리하는 경우가 많습니다.

 


카테고리형 데이터를 수치형 데이터로 변환할 때 고려해야 할 것

- 나중에 모델링 할 때 알고리즘 적용 시 


get_dummies

get_dummies는 범주형 데이터를 수치형 데이터로 변환하는 데 사용하는 원-핫 인코딩(one-hot encoding) 함수입니다. 판다스의 get_dummies 함수는 각각의 범주형 값에 대해 새로운 이진(0과 1) 열을 생성하여, 머신러닝 모델이나 통계 분석에서 사용할 수 있는 수치형 형태로 데이터를 변환해줍니다.

주요 특징

  • 각 범주형 변수의 고유한 값마다 새로운 열이 생성됩니다.
  • 해당 열에 해당하는 범주의 경우 1로 표시되고, 그렇지 않은 경우 0으로 표시됩니다.
  • 데이터프레임의 특정 열을 지정하여 선택적으로 변환할 수도 있습니다.

사용법

주요 파라미터

  • data: 원본 데이터프레임.
  • columns: 원-핫 인코딩할 열을 지정합니다. 지정하지 않으면 범주형 열을 모두 인코딩합니다.
  • prefix: 새로운 열 이름에 추가할 접두사를 지정합니다.
  • drop_first: True로 설정하면 첫 번째 범주를 제거하여 다중공선성을 줄이는 효과가 있습니다(기본값은 False).

예제

다음과 같은 데이터프레임이 있다고 가정해 보겠습니다:

 

  • Color 열은 Color_Blue, Color_Green, Color_Red 세 개의 이진 열로 변환되었습니다.
  • Size 열도 Size_L, Size_M, Size_S 세 개의 이진 열로 변환되었습니다.

drop_first 사용

다중공선성을 줄이기 위해 첫 번째 열을 제외하고 인코딩할 수 있습니다.

  • drop_first=True 옵션을 사용하면 첫 번째 범주(Color_Blue와 Size_S)가 제외됩니다.

요약

  • get_dummies는 범주형 데이터를 수치형 데이터로 변환하여 머신러닝 모델에서 사용할 수 있도록 변환합니다.
  • 다중공선성을 줄이기 위해 drop_first=True를 사용하는 것이 좋습니다.
  • 각 범주형 변수의 고유한 값마다 새로운 이진 열을 생성하여 값이 1(해당됨) 또는 0(해당되지 않음)으로 표시됩니다.

 

특정 칼럼에 고유값이 너무 많으면, 열이 너무 많아지기 때문에 (모델링 할때 안좋을 수 있습니다)

그럴 땐, 더미변수 갯수 조절이 필요할 수 있습니다.

 

반응형

'데이터사이언티스트 Data Scientist' 카테고리의 다른 글

PCA - 주성분 분석  (5) 2024.11.04
스케일링 (Scaling)  (0) 2024.11.04
피벗테이블(Pivot)  (0) 2024.11.04
melt 메소드  (0) 2024.11.04
파이썬 - groupby  (1) 2024.11.04