본문 바로가기

Data Science/Data Preprocessing

[03. Feature Engineering] 002. Scaling

728x90

크기가 다른 여러 데이터를 분석할 때 스케일을 맞추지 않으면 동등비교가 되지 않고 모델에서 큰 값을 가진 데이터의 영향력이 커지게 되어 잘못한 분석결과를 도출할 수 있다. 또한 모델의 최적화 과정에서도 어려움을 겪게 된다.

 

1) 표준화(Standardization)

표준화는 데이터를 평균이 0이고 표준편차가 1인 분포로 변환해준다.

 

(X – X의 평균) / X의 표준편차

 

2) 정규화(Normalization)

정규화는 범위가 0~1인 데이터로 변환해준다.

 

(X – X의 Min) / (X의 Max – X의 Min)

 

import FinanceDataReader as fdr

if __name__ == '__main__':
    aapl = fdr.DataReader('AAPL', '2021-01-01')
    ssec = fdr.DataReader('005930', '2021-01-01')
    price = aapl[['Close']].merge(ssec[['Close']], how='outer', left_index=True, right_index=True)
    price = price.rename(columns={'Close_x': 'AAPL', 'Close_y': 'SSEC'})
    price = price.dropna()
    
    # Standardization
    print((price - price.mean()) / price.std())
    
    # Normalization
    print((price - price.min()) / (price.max() - price.min()))


결과 값
               AAPL      SSEC
Date                          
2021-06-15 -1.308061  0.359286
2021-06-16 -1.029953  1.720792
2021-06-17 -0.135646  0.359286
2021-06-18 -0.860908 -0.245827
2021-06-21  0.142462 -1.153498
2021-06-22  1.058582 -1.002220
2021-06-23  0.905896 -0.850941
2021-06-24  1.227628  0.813122

               AAPL      SSEC
Date                          
2021-06-15  0.000000  0.526316
2021-06-16  0.109677  1.000000
2021-06-17  0.462366  0.526316
2021-06-18  0.176344  0.315789
2021-06-21  0.572043  0.000000
2021-06-22  0.933333  0.052632
2021-06-23  0.873118  0.105263
2021-06-24  1.000000  0.684211
728x90