-
[Data Scaling] 정규화(Normalization)와 표준화(Standarization)Statistics and Linear Algebra 2021. 6. 12. 16:58
정규화(Normalization)와 표준화(Standarization)
데이터 처리시 변수들의 단위값이 다른 경우, 이를 스케일링 해줘야할 필요가있다. 머신러닝시 예측값 도출에 영향을 미치기 때문이다.
정규화(Nomalization): 변수를 0~1(Min ~ Max)값으로 변환시켜 준다.
사이킷런(Sklearn)에서 사용하는 함수는 "MinMaxScaler"다.
1) fit으로 데이터를 맞추어주고, 2) transform으로 데이터를 변환해준다. fit자체로는 변환된 데이터를 볼 수 없을 것이다. 만일 둘을 한번에 하려는 경우에는 fit_transform()으로 해주면 된다.
from sklearn.preprocessing import MinMaxScaler scaler=MinMaxScaler() scaler.fit(df) df_scaled=scaler.transform(df) #or scaler.fit_transform(df)
*** 유의해야할 점은 예측 모델을 위해 train과 test셋을 나눈경우에는 train으로 fit해준 스케일러를 test 데이터 셋에 적용해주어야 하므로
scaler.transform(test_df)를 해주어야 한다는 점이다.
그래야만 train데이터 셋에서의 값이 test 데이터셋에서도 동일한 값으로 표준화 된다. 가령 원본데이터에서는 모두 10이었던 Value 두 개가 train셋과 test셋에 각각 나누어 들어갔다고 가정하고,
train 데이터셋에서는 10이었던 값이 스케일러를 통해 0.2로 정규화되었다면, 테스트 데이터셋에서도 같은 스케일러를 적용해주어야 0.2로 보여질 것이다.
만일, train과 test데이터 셋에 각각 fit()을 진행해준다면 원본데이터에서는 같은 값이, 변환 이후에는 서로 다른 값으로 변환될 수 있다.
train_scaled = scaler.fit_transform(train) test_scaled = scaler.transform(test)
표준화(Standarization): 변수를 평균 0, 분산이 1인 가우시안 정규분포로 변환해준다.
사이킷런(Sklearn)에서 사용하는 함수는 "StandardScaler"다. StandardScaler()를 지정해주어 1) fit으로 맞추어주고, 2) transform으로 데이터를 변환해준다. 둘을 한번에 하려는 경우에는 fit_transform()으로 해주면 된다.
from sklearn.preprocessing import StandardScaler scaler=StandardScaler() scaler.fit(df) df_scaled=scaler.transform(df) #or scaler.fit_transform(df)
데이터 원본, 정규화, 표준화된 데이터셋을 비교하자면 아래와 같다.
출처: https://www.analyticsvidhya.com/blog/2020/04/feature-scaling-machine-learning-normalization-standardization/ 참고: https://jaaamj.tistory.com/20, https://bskyvision.com/849
'Statistics and Linear Algebra' 카테고리의 다른 글
[Deep Learning] Lecture Note 2 - 210810 (0) 2021.08.10 [Deep Learning] Lecture Note 1 - 210809 (0) 2021.08.09 [서적추천] 통계가 낯선 당신을 위한 달달구리 - 누워서 읽는 통계학 (0) 2021.06.11 [통계] T 검정 (스튜던트 T-test) One Sample / Two Sample T-test (0) 2021.05.29 [선형대수] 벡터의 내적, 전치행렬, 공분산, 상관계수 (0) 2021.05.29