본문 바로가기
■ 칼퇴를 위한 파이썬 : 사례

파이썬으로 데이터 전처리하기: 원핫 인코딩

by 포탈메이커 2023. 7. 19.

파이썬으로 데이터 전처리하기: 원핫 인코딩

소개

데이터 전처리는 머신러닝 또는 딥러닝 모델을 만들기 전에 반드시 수행해야 하는 중요한 과정입니다. 전처리를 통해 데이터를 정제하고 가공하여 모델의 성능을 향상시킬 수 있습니다. 이번 포스팅에서는 파이썬을 사용하여 데이터 전처리 중 하나인 "원핫 인코딩"에 대해 알아보겠습니다.

원핫 인코딩이란?

원핫 인코딩은 범주형 데이터를 수치형 데이터로 변환하는 방법 중 하나입니다. 범주형 데이터는 카테고리 값을 가지며, 예를 들어 "사과", "바나나", "딸기"와 같이 구분할 수 있는 항목들이 있습니다. 이러한 항목들은 모델에 바로 입력될 수 없기 때문에 수치형 데이터로 변환해주어야 합니다. 원핫 인코딩은 각 항목을 이진벡터로 표현하는 방식으로, 해당 항목은 1로 표시하고, 나머지 항목들은 모두 0으로 표시합니다.

예시

다음은 "과일"이라는 범주형 데이터를 원핫 인코딩하는 예시입니다.

| 과일 | |------| | 사과 | | 바나나 | | 딸기 | | 사과 | | 사과 |

원핫 인코딩을 적용하면 다음과 같이 변환됩니다.

| 사과 | 바나나 | 딸기 | |-----|-------|----| | 1 | 0 | 0 | | 0 | 1 | 0 | | 0 | 0 | 1 | | 1 | 0 | 0 | | 1 | 0 | 0 |

이렇게 변환된 원핫 인코딩 데이터는 모델에 바로 입력할 수 있습니다.

pandas로 원핫 인코딩하기

파이썬의 데이터 분석 라이브러리인 pandas를 사용하면 간편하게 원핫 인코딩을 수행할 수 있습니다. pandas의 get_dummies() 함수를 사용하면 범주형 변수를 원핫 인코딩할 수 있습니다. 다음은 get_dummies() 함수를 사용하여 원핫 인코딩하는 예시입니다.

```python import pandas as pd

데이터프레임 생성

df = pd.DataFrame({'과일': ['사과', '바나나', '딸기', '사과', '사과']})

원핫 인코딩 수행

onehotencoded = pd.getdummies(df['과일'])

결과 출력

print(onehot_encoded) ```

위 코드를 실행하면 원핫 인코딩된 결과가 출력됩니다.

scikit-learn으로 원핫 인코딩하기

scikit-learn은 파이썬의 대표적인 머신러닝 라이브러리로, 다양한 기능을 제공합니다. scikit-learn의 OneHotEncoder 클래스를 사용하여 원핫 인코딩을 수행할 수 있습니다. 다음은 scikit-learn을 사용하여 원핫 인코딩하는 예시입니다.

```python from sklearn.preprocessing import OneHotEncoder

데이터 생성

data = [['사과'], ['바나나'], ['딸기'], ['사과'], ['사과']]

OneHotEncoder 객체 생성

onehot_encoder = OneHotEncoder()

원핫 인코딩 수행

onehotencoded = onehotencoder.fit_transform(data)

결과 출력

print(onehot_encoded.toarray()) ```

위 코드를 실행하면 원핫 인코딩된 결과가 출력됩니다.

주의사항

  • 원핫 인코딩을 적용할 때, 변수의 개수가 많아지면 인코딩 결과로 생성되는 변수의 수도 많아집니다. 따라서 변수의 개수가 많은 경우, 차원의 저주(curse of dimensionality) 문제가 발생할 수 있으니 주의해야 합니다.
  • 원핫 인코딩을 적용할 때, 학습 데이터와 테스트 데이터에 동일한 인코딩을 적용해야 합니다. 따라서 인코딩을 수행할 때에는 학습 데이터와 테스트 데이터를 함께 인코딩해주어야 합니다.

마무리

원핫 인코딩은 데이터 전처리 중 가장 기본적인 방법 중 하나입니다. 파이썬의 pandas나 scikit-learn을 사용하여 간편하게 원핫 인코딩할 수 있습니다. 데이터 전처리를 효율적으로 수행하여 모델의 성능을 높이는 것은 머신러닝 또는 딥러닝 모델을 만들기 위해 반드시 필요한 과정입니다. 이번 포스팅이 데이터 전처리를 위한 원핫 인코딩에 대해 도움이 되었기를 바랍니다.