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에서 로지스틱 회귀를 수행하는 방법