Python에서 원-핫 인코딩을 수행하는 방법


원-핫 인코딩은 범주형 변수를 기계 학습 알고리즘 에서 쉽게 사용할 수 있는 형식으로 변환하는 데 사용됩니다.

원-핫 코딩의 기본 아이디어는 원래 범주형 값을 나타내기 위해 0과 1의 값을 취하는 새로운 변수를 만드는 것입니다.

예를 들어, 다음 이미지는 팀 이름이 포함된 범주형 변수를 0과 1 값만 포함하는 새 변수로 변환하기 위해 원-핫 인코딩하는 방법을 보여줍니다.

다음 단계별 예제에서는 Python에서 이 정확한 데이터 세트에 대해 원-핫 인코딩을 수행하는 방법을 보여줍니다.

1단계: 데이터 생성

먼저 다음 pandas DataFrame을 만들어 보겠습니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29]})

#view DataFrame
print (df)

  team points
0 to 25
1 to 12
2 B 15
3 B 14
4 B 19
5 B 23
6 C 25
7 C 29

2단계: 원-핫 인코딩 수행

다음으로 sklearn 라이브러리에서 OneHotEncoder() 함수를 가져와서 이를 사용하여 pandas DataFrame의 ‘team’ 변수에 대해 핫 인코딩을 수행해 보겠습니다.

 from sklearn. preprocessing import OneHotEncoder

#creating instance of one-hot-encoder
encoder = OneHotEncoder(handle_unknown=' ignore ')

#perform one-hot encoding on 'team' column 
encoder_df = pd. DataFrame ( encoder.fit_transform (df[[' team ']]). toarray ())

#merge one-hot encoded columns back with original DataFrame
final_df = df. join (encoder_df)

#view final df
print (final_df)

  team points 0 1 2
0 to 25 1.0 0.0 0.0
1 to 12 1.0 0.0 0.0
2 B 15 0.0 1.0 0.0
3 B 14 0.0 1.0 0.0
4 B 19 0.0 1.0 0.0
5 B 23 0.0 1.0 0.0
6 C 25 0.0 0.0 1.0
7 C 29 0.0 0.0 1.0

원래 “팀” 열에 세 개의 고유 값이 포함되어 있으므로 세 개의 새 열이 DataFrame에 추가되었습니다.

참고 : 여기에서 OneHotEncoder() 함수에 대한 전체 문서를 찾을 수 있습니다.

3단계: 원래 범주형 변수 제거

마지막으로 원래 ‘team’ 변수는 더 이상 필요하지 않으므로 DataFrame에서 제거할 수 있습니다.

 #drop 'team' column
final_df. drop (' team ', axis= 1 , inplace= True )

#view final df
print (final_df)

   points 0 1 2
0 25 1.0 0.0 0.0
1 12 1.0 0.0 0.0
2 15 0.0 1.0 0.0
3 14 0.0 1.0 0.0
4 19 0.0 1.0 0.0
5 23 0.0 1.0 0.0
6 25 0.0 0.0 1.0
7 29 0.0 0.0 1.0

관련 항목: Pandas에서 열을 삭제하는 방법(4가지 방법)

더 쉽게 읽을 수 있도록 최종 DataFrame의 열 이름을 바꿀 수도 있습니다.

 #rename columns
final_df. columns = ['points', 'teamA', 'teamB', 'teamC']

#view final df
print (final_df)

   points teamA teamB teamC
0 25 1.0 0.0 0.0
1 12 1.0 0.0 0.0
2 15 0.0 1.0 0.0
3 14 0.0 1.0 0.0
4 19 0.0 1.0 0.0
5 23 0.0 1.0 0.0
6 25 0.0 0.0 1.0
7 29 0.0 0.0 1.0

원-핫 인코딩이 완료되었으며 이제 이 팬더 DataFrame을 원하는 기계 학습 알고리즘에 삽입할 수 있습니다.

추가 리소스

Python에서 절사 평균을 계산하는 방법
Python에서 선형 회귀를 수행하는 방법
Python에서 로지스틱 회귀를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다