Milky's note

Chap 3. sklearn 전처리 본문

머신러닝/요약 정리

Chap 3. sklearn 전처리

밀뿌 2022. 2. 16. 03:43

전처리 : 데이터 분석에 적합하게 데이터를 가공/변형/처리/정리 해주는 과정

 

1. 결측치

- 데이터 중에 빠져있는 값들을 어떻게 처리할 것인지? 

- pandas의  fillna()를 사용해도 되지만, 2개 이상의 컬럼에 대해서는 SimpleImputer 를 사용한다.

 

from sklearn.impute import SimpleImputer
#median 값을 이용해서 결측값 처리
impute = SimpleImputer(strategy='median')
result = impute.fit_transform(train[['Age']])

fit_transform는 결측치에 학습한 내용을 적용하는 함수이다.

train[['Age']] = result

2. 이상치

- 데이터의 이상치가 있을 때 어떻게 처리할 것인지?

3. 정규화 (Normalization)

- 0~1 사이의 분포로 조정

- 다른 스케일에 있는 데이터를 동일하게 맞추기 위해, 값에 대한 수치형 데이터가 넓을 때 사용

 

예제 문제>>>>

네이버와 넷플릭스의 평점은 기준이 다르다. 이를 같은 선상에서 맞춰 데이터를 전처리 하기 위해 정규화 과정이 필요하다.

  • 네이버 영화평점 (0점 ~ 10점): [2, 4, 6, 8, 10]
  • 넷플릭스 영화평점 (0점 ~ 5점): [1, 2, 3, 4, 5]
movie = {'naver' : [2, 4, 6, 8, 10],
         'netflix' : [1, 2, 3, 4, 5]
}
movie = pd.DataFrame(data=movie)
movie
 
Out[ ]:
 
naver                                                                                                                                                                            netflix01234
2 1
4 2
6 3
8 4
10 5
sklearn의 MinMaxScaler 를 사용해서 정규화를 해준다.
#불러오기
from sklearn.preprocessing import MinMaxScaler
#모델 설정
mms = MinMaxScaler()
#fit_transform를 사용해서 값을 변환
movie_normal = mms.fit_transform(movie)
# 데이터 프레임 형태로 변환한 후 프레임 출력
pd.DataFrame(movie_normal, columns=['naver', 'netfliex'])
 
Out[ ]:
 
naver                                                                                                                                                                         netfliex01234
0.00 0.00
0.25 0.25
0.50 0.50
0.75 0.75
1.00 1.00

==> 기준이 다르지만 동일한 퍼센트로 정규화 되었다!!

4. 표준화 (Standardization)

- 평균을 0, 표준 편차를 1로 맞춤

예제 문제 >>

from sklearn.preprocessing import StandardScaler

standard_scaler = StandardScaler()
import numpy as np 

x = np.arange(10)
# outlier 추가
x[9] = 1000
#샘플 데이터 생성
x.mean(), x.std()
# 결과
(103.6, 298.8100399919654)
#표준화 할 변수
scaled = standard_scaler.fit_transform(x.reshape(-1, 1))
round(scaled.mean(),2), scaled.std()
# 결과
(0.0, 1.0)

5. 샘플링 (over/under sampling)

- 지나치게 적거나 많은 데이터를 오버 샘플링, 언더 샘플링을 이용해서 데이터의 수를 맞춰주는 작업

6. 피처 공학 (Feature Engineering)

- feature끼리의 연산/생성, 구간 생성, 또는 스케일 변형 등이 있음

'머신러닝 > 요약 정리' 카테고리의 다른 글

Chap 2. sklearn 개요  (0) 2022.02.16
Chap 1. 머신러닝 기초  (0) 2022.02.14
Comments