머신러닝에서는 데이터에 대한 결과가 잘 나오길 기대하기 때문에 표준화 혹은 정규화 작업을 거친다.
예를 들어, 범죄발생 건수를 예측하는데 있어 가로등 개수, 스트레스 인지율, 소비자 물가지수 등 많은 변수들이 존재하지만 나타내는 크기가 다르다.
이떄, 각각 다른 크기의 데이터들에 대해 기준을 설정하고 데이터들을 평가하기 위해 사용하는 것이다.
표준화는 데이터의 평균을 0으로, 표준편차를 1로 만들어주는 과정이다.
표준화를 진행하면 평균이 0, 표준편차가 1이기 때문에 표준 정규분포가 된다.

인구수
연도
2008 10456034.0
2009 10464051.0
2010 10575447.0
2011 10528774.0
2012 10442426.0
2013 10388055.0
2014 10369593.0
2015 10297138.0
2016 10204057.0
2017 10124579.0
2018 10049607.0
2019 10010983.0
2020 9911088.0
2021 9736027.0
2022 9667669.0
# 이 인구수라는 값에 대해 표준화를 실행하면
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
popul_tot[['인구수']] = scaler.fit_transform(popul_tot[['인구수']])
#위의 표준화 코드를 실행하면
인구수
연도
2008 0.866835
2009 0.895671
2010 1.296345
2011 1.128470
2012 0.817890
2013 0.622325
2014 0.555920
2015 0.295311
2016 -0.039487
2017 -0.325357
2018 -0.595020
2019 -0.733944
2020 -1.093251
2021 -1.722918
2022 -1.968792
# 이렇게 값이 바뀐다.
정규화는 데이터의 범위를 [0, 1] 또는 [-1, 1] 등으로 조절한다.

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
x_scaled = scaler.fit_transform(x.reshape(-1,1))
print(x_scaled[:10].flatten())
[0.87492405 0.37658554 0.39521325 0.27379961 0.70578689 0.
0.90177124 0.34327895 0.58402299 0.45734703] #정규화를 통해 [0,1]로 출력된다.
표준화와 정규화에 대한 특별한 선택 방법이 있는건 아니라고 한다.
표준화를 통해 이상치를 제거하고 이상치가 제거된 데이터들을 정규화를 실행하여 상대적 크기에 대한 영향력을 줄인 후 다음 분석과정을 실행한다.