정규화(Normalization)와 표준화(Standardization)
전처리 기본 - Normalization(정규화)
- 컬럼간에 다른 min, max 값을 가지는 경우, 정규화를 통해 최솟값/최댓값의 척도를 맞추어 주는 것
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
# 네이버와 넷플릭스의 평점 범위가 다름
movie = {
'naver': [2, 4, 6, 8, 10],
'netfflix': [1, 2, 3, 4, 5]
}
movie = pd.DataFrame(data=movie)
movie
'''출력
naver netfflix
0 2 1
1 4 2
2 6 3
3 8 4
4 10 5
'''
min_max_scaler = MinMaxScaler()
min_max_movie = min_max_scaler.fit_transform(movie)
pd.DataFrame(min_max_movie, columns=['naver', 'netfflix'])
'''출력
naver netfflix
0 0.00 0.00
1 0.25 0.25
2 0.50 0.50
3 0.75 0.75
4 1.00 1.00
'''
전처리 기본 - Standardization(표준화)
- 평균이 0, 표준편차가 1이 되도록 변환
from sklearn.preprocessing import StandardScaler
standard_scaler = StandardScaler()
# 샘플 데이터 생성
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))
scaled.mean(), scaled.std()
'''출력
(4.4408920985006264e-17, 1.0)
'''
round(scaled.mean()), scaled.std()
'''출력
(0, 1.0)
'''