끄적이는 기록일지

[머신러닝] 02.데이터 전처리_(2) 범주형 자료 본문

AI실무

[머신러닝] 02.데이터 전처리_(2) 범주형 자료

시시나브로 2021. 9. 13. 16:41
728x90
 

[머신러닝] 1.자료형태_(2) 범주형 자료

[머신러닝] 1.자료형태_(1) * 머신러닝 : 데이터 자료를 바탕으로 수행하는 분석방식 → 자료의 형태를 파악하는 것은 머신러닝의 필수 과정이라 할 수 있습니다. 1. 자료형태 ① 수치형 자료(Numeric

kcy51156.tistory.com

 

지난 시간 범주형 자료가 무엇인지에 대해 알아보았습니다. 이제 범주형 자료를 머신러닝이 사용할 수 있는 자료로 전 처리 해주는 과정을 배워보겠습니다.

 

1. 범주형 자료

아래 예시는 타이타닉 생존자 데이터 변수와 설명입니다. 

- 범주형 데이터: 몇 개의 범주로 나누어진 자료(명목형, 순서형 자료)

* 명목형 자료: 순서 의미X(ex 혈액형)

  순서형 자료: 순서 의미O(ex 성적)

타이타닉 생존자 데이터

2) 범주형 자료 변환 방식

① 명목형 자료: 수치 맵핑 방식, 더미(Dummy)기법

- 수치 맵핑 변환

: 일반적으로 범주를 0, 1로 맵핑

  (-1, 1), (0, 100)등 다양한 케이스 존재하지만 모델에 따라 성능 달라질 수 있음

  3개 이상인 경우, 수치 크기 간격을 같게 하여 수치 맵핑 ex 0,1,2,3...

성별 데이터 변환

- 더미 기법

: 각 범주를 0 or 1로 변환

0→no, 1→yes, C, Q, S중 하나는 1 나머지는 무조건 0으로 표기

② 순서형 자료: 수치 맵핑 방식

- 수치 맵핑 변환

: 수치에 맵핑하여 변환하지만, 수치 간 크기 차이는 커스텀 가능

  크기 차이가 머신러닝 결과에 영향 끼칠 수 있음(범위 차이가 많이 나는 경우)

없음>0, 조금많음>4, 매우많음>10

2. 실습

1. 성별(‘Sex’) 변수에서 male 데이터는 0, female 데이터는 1로 변환하여 titanic 데이터프레임에 저장해 봅시다.

#02. 데이터 전 처리_범주형_명목형_수치 맵핑

import pandas as pd

# 데이터를 읽어옵니다.
titanic = pd.read_csv('titanic.csv')
print('변환 전: \n',titanic['Sex'].head())

"""
1. male -> 0, female -> 1로 변환
(pandas의 DataFrame에서 replace를 사용)
>> DataFrame.replace({A:B, C:D,...})
"""
titanic = titanic.replace({'male':0, 'female':1})

# 변환한 성별 데이터를 출력합니다.
print('\n변환 후: \n',titanic['Sex'].head())



>>> 변환 전: 
 0      male
1    female
2    female
3    female
4      male
Name: Sex, dtype: object

변환 후: 
 0    0
1    1
2    1
3    1
4    0
Name: Sex, dtype: int64

2. Embarked의 S, Q, C데이터를 더미를 사용하여 변환하고 dummies에 저장해 봅시다.

#02. 데이터 전 처리_범주형_명목형_더미기법

import pandas as pd
   
# 데이터를 읽어옵니다.
titanic = pd.read_csv('titanic.csv')
print('변환 전: \n',titanic['Embarked'].head())

"""
1. get_dummies를 사용하여 변환
>> pd.get_dummies(DataFrame[[변수명]])
"""
dummies = pd.get_dummies(titanic[['Embarked']])

# 변환한 Embarked 데이터를 출력합니다.
print('\n변환 후: \n',dummies.head())



>>> 변환 전: 
 0    S
1    C
2    S
3    S
4    S
Name: Embarked, dtype: object

변환 후: 
    Embarked_C  Embarked_Q  Embarked_S
0           0           0           1
1           1           0           0
2           0           0           1
3           0           0           1
4           0           0           1

 

728x90
Comments