Python/데이터 분석

[데이터 분석] Data Scaling (스케일 조정)

데이터 세상 2022. 4. 28. 11:46

Data Scaling (특성 스케일 바꾸기)

데이터를 모델링하기 전에는 스케일링 과정을 거쳐야 한다.

스케일링을 통해 다차원의 값들을 비교 분석하기 쉽게 만들어주며, 자료의 오버플로우(overflow)나 언더플로우(underflow)를 방지 하고, 독립 변수의 공분산 행렬의 조건수(condition number)를 감소시켜 최적화 과정에서의 안정성 및 수렴 속도를 향상 시킨다.

출처: 파이썬 라이브러리를 활용한 머신러닝

 

 

StandardScaler

(Xi - (X의 평균)) / (X의 표준편차)

 

각 특성의 평균을 0, 분산을 1로 변경하여 특성의 스케일을 맞춘다.

최소값과 최댓값의 크기를 제한하지 않는다.

이상치에 상대적으로 취약하다.

from sklearn.preprocessing import StandardScaler

features = np.array([[-500, 5],
                    [-100,1],
                    [0, 0],
                    [900,9]])

standard_scaler = StandardScaler()
scaled_feature = standard_scaler.fit_transform(features)
scaled_feature

 

RobustScaler

(데이터 값 - Q2) / (Q3 - Q1)

 

평균과 분산 대신에 중간 값과 사분위 값을 사용한다.

중간 값은 정렬 시 중간에 있는 값을 의미하고, 사분위 값은 1/4, 3/4에 위치한 값을 의미한다.

전체 데이터와 아주 동떨어진 데이터 포인트(이상치)에 영향을 받지 않는다.

from sklearn.preprocessing import RobustScaler

features = np.array([[-500, 5],
                    [-100,1],
                    [0, 0],
                    [900,9]])

robust_scaler = RobustScaler()
scaled_feature = robust_scaler.fit_transform(features)
scaled_feature

MinMxScaler

모든 특성이 0과 1 사이에 위치하도록 데이터를 변경한다.

from sklearn.preprocessing import MinMaxScaler

features = np.array([[-500, 5],
                    [-100,1],
                    [0, 0],
                    [900,9]])

minmax_scaler = MinMaxScaler()
scaled_feature = minmax_scaler.fit_transform(features)
scaled_feature

 

Normalizer

특성 벡터의 유클리디안 길이가 1이 되도록 조정한다.

즉, 길이가 1인 원 또는 구로 투영하는 것이고, 각도만이 중요할 때 적용한다.

l1, l2, max 옵션을 제공하며 유클리디안 커리인 l2가 기본값이다.

from sklearn.preprocessing import Normalizer

features = np.array([[0.5,0.5],
                    [1.1,3.4],
                    [1.5,20.2],
                    [1.63,34.4],
                    [10.9,3.3]])
n_scaler = Normalizer(norm='l1')
scaled_feature = n_scaler.fit_transform(features)
scaled_feature

반응형

'Python > 데이터 분석' 카테고리의 다른 글

[Python] 데이터 분석 파이썬 라이브러리  (0) 2022.04.26
[Python] 유용한 도구들  (0) 2022.04.25
데이터 분석  (0) 2022.04.25
[Python] 파이썬 통계 분석  (0) 2021.05.10