원핫인코딩은 범주형 데이터를 수치형 데이터로 변환하는 방법 중 하나입니다. 이를 통해 머신러닝 모델에 범주형 데이터를 적용할 수 있습니다. pandas 라이브러리의 get_dummies
함수를 사용하여 간편하게 원핫인코딩을 수행할 수 있습니다.
원핫인코딩이란?
원핫인코딩은 범주형 데이터의 각 카테고리를 이진 벡터로 표현하는 과정입니다. 예를 들어, “사과”, “바나나”, “오렌지”와 같은 과일에 대한 범주형 데이터를 원핫인코딩하면 [“사과”, “바나나”, “오렌지”]가 아래처럼 변환됩니다.
과일 | 사과 | 바나나 | 오렌지 |
---|---|---|---|
사과 | 1 | 0 | 0 |
바나나 | 0 | 1 | 0 |
오렌지 | 0 | 0 | 1 |
이론적 배경과 원핫인코딩의 필요성을 알게 되었으니, 이제 pandas의 get_dummies
함수를 사용해 실제 데이터를 변환하는 방법을 살펴보겠습니다.
pandas의 get_dummies 함수 사용하기
get_dummies
함수는 pandas 데이터프레임의 열을 인코딩하기 위해 사용됩니다. 다음은 get_dummies
의 가장 기본적인 사용 방법입니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'과일': ['사과', '바나나', '오렌지']})
# 원핫인코딩 적용
encoded_df = pd.get_dummies(df['과일'])
# 결과 출력
print(encoded_df)
실행 결과:
과일_바나나 과일_사과 과일_오렌지
0 0 1 0
1 1 0 0
2 0 0 1
위의 예제에서는 “과일” 열의 범주형 데이터를 원핫인코딩하여 새로운 데이터프레임을 생성했습니다. get_dummies
함수는 기본적으로 각 카테고리를 열 이름에 추가하여 이진 벡터로 변환합니다. 변환된 결과를 encoded_df
라는 새로운 데이터프레임으로 저장하고 출력하였습니다.
추가적으로, get_dummies
함수는 다양한 매개변수를 제공하여 원핫인코딩의 세부사항을 조정할 수 있습니다. 예를 들어, prefix
매개변수를 사용하여 열 이름에 접두사를 추가할 수 있습니다.
encoded_df = pd.get_dummies(df['과일'], prefix='Fruit')
결과:
Fruit_바나나 Fruit_사과 Fruit_오렌지
0 0 1 0
1 1 0 0
2 0 0 1
만약 원핫인코딩을 수행하고 나서 원래 데이터프레임에 인코딩된 열을 추가하려면 pd.concat
함수를 사용하여 원래 데이터프레임과 인코딩된 데이터프레임을 병합할 수 있습니다.
# 원핫인코딩 적용 및 병합
merged_df = pd.concat([df, encoded_df], axis=1)
결과:
과일 Fruit_바나나 Fruit_사과 Fruit_오렌지
0 사과 0 1 0
1 바나나 1 0 0
2 오렌지 0 0 1
이제 merged_df
데이터프레임에는 원래 데이터프레임과 인코딩된 열이 함께 표시됩니다.
결론
pandas의 get_dummies
함수를 사용하면 손쉽게 범주형 데이터의 원핫인코딩을 수행할 수 있습니다. 이를 통해 머신러닝 모델에 범주형 데이터를 적용할 수 있으며, 데이터프레임에 원핫인코딩된 열을 추가하는 방법도 알아보았습니다. 이제 여러분은 pandas의 get_dummies
함수를 사용하여 데이터를 변환할 수 있습니다.
참고 문서: