본문 바로가기

머신러닝

[파이썬 머신러닝] map으로 레이블 인코딩 하기

레이블 인코딩의 문제는 범주 간에 어떤 종류의 관계도 없을 때 레이블 인코딩을 하면 뜻하지 않게 관계가 만들어질 수 있다. 예를 들어 남자. 여자로 나눌 때 남자를 1로 하고 여자를 2로 하면 여자의 숫자가 더 크므로 여자의 데이터가 더 중요하게 받아들여질 수 있다.

 

하지만 초등학교졸업, 중학교졸업, 고등학교졸업, 대학교졸업 이라는 숫자를 레이블 인코딩으로 한다면 초등학교 졸업은 1, 중학교 졸업은 2, 고등학교 졸업은 3, 대학교 졸업은 4로 줘서 학력에 따른 레이블을 숫자로 주어서 인코딩 하면 데이터를 분석하는데 더 도움이 된다. LabelEncoder를 쓰면 이 순서가 뒤죽박죽이 될 수 있으므로 map을 통해서 인코딩을 해보겠다.

education_level_map = {
    'Primary School' :    0,
    'High School'    :    1, 
    'Graduate'       :    2,
    'Masters'        :    3, 
    'Phd'            :    4
    } 
    
df['education_level'] = df['education_level'].map(education_level_map)

df 안에 education_level 안에 학력의 종류가 나타나있다. 각각의 점수를 준 다음 해당 컬럼을 map 하면 컬럼에 맞게 바뀐다.