본문 바로가기

Information/통계강의

1.3 데이터 스케일링 (이론)

반응형

데이터 스케일링(Data Scaling)은 각 변수들의 범위 혹은 분포를 같게 만드는 작업이다. 이를 통해 각 변수들이 동일한 조건(혹은 범위)을 가지게 되어, 이 변수들에 대한 상대 비교가 가능하게 된다.

 

데이터 분석을 하기 전 전처리 과정에서, 주어진 방법으로 스케일링하도록 하는 문제가 많이 나온다. 

 


A) 정규화 (Normalization)

 

정규화는 데이터의 값들을 [0,1] 사이의 값이 되게 변환하는 것이다.

 

정규화 수식은,

 

$$ \frac {(X-Min)}{(Max - Min)}$$

 

구현 방법은, 

 

1) 수식을 이용해서 직접 구현

2) sklearn.preprocessing.MinMaxScaler 이용

 

푸는 예를 보면,

 

import pandas as pd
lst = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
df = pd.DataFrame(lst, columns=['A','B'])
df

# 1)수식을 이용해서 직접 구현: (X-Min) / (Max-Min)
def normalize(s):
    return (s-s.min())/(s.max()-s.min())
    
# normalize(df['A'].to_list())
dic={}
dic['A']=normalize(df['A'])
dic['B']=normalize(df['B'])
df1 = pd.DataFrame(dic)
df1

 

# 2) MinMaxScaler 이용
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(df)
arr = scaler.transform(df)
df1 = pd.DataFrame(arr, columns=df.columns)
df1

scaler.data_min_, scaler.data_max_,scaler.data_range_

(array([-1., 2.]), array([ 1., 18.]), array([ 2., 16.]))

 

df

 


B) 표준화 (Standardization)

 

표준화는 데이터의 값들을 평균은 0, 분산은 1이 되게 변환하는 것 (Z점수 정규화라고도 함)

 

 

수식은, 

$$ \frac{(X-평균)}{표준 편차}$$

 

구현 방법은,

 

1) 수식을 직접 구현

2) sklearn.preprocessing.StandardScaler 이용

 

구하는 예를 보면,

df = pd.DataFrame({
    'A':[1,2,3,4,5,6],
    'B':[101,102,103,104,105,106]
})
df

# 1) 수식을 직접 구현 : (X - 평균) / 표준편차
import numpy as np

def standardization(s):
    return (s-s.mean()) / s.std(ddof=0) #모집단이라고 가정

df1 = pd.DataFrame({
    'A':standardization(df['A']),
    'B':standardization(df['B'])
})
df1

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(df)
arr = scaler.transform(df)
df1 = pd.DataFrame(arr, columns=df.columns )
df1

 

주의: StandardScaler는 모 표준편차를 기준으로 계산 -> 표본집단에 대한 계산방법 없음
  --> 표본 표준편차를 기준으로 해서 정규화를 하라고 한다면, 수식을 이용해서 직접 구현해야 함
scaler.mean_, scaler.var_

(array([ 3.5, 103.5]), array([2.91666667, 2.91666667]))

 

df.mean(), df.var(ddof=0)


C) 그 외의 스케일링 방법

 

sklearn.preprocessing 패키지에는, 정규화(MinMaxScaler), 표준화(StandardScaler) 외에 RobustScalerMaxAbsScaler가 있다. 

 

sklearn.preprocessing에 있는 Scaler:

  • MinMaxScaler (정규화)
  • StandardScaler (표준화)
  • RobustScaler
  • MaxAbsScaler

RobustScaler

 

계산식은,

$$ \frac{(X - Median)}{IQR} $$

 

각 값을 최대 절댓값으로 나눈다.


사용법,

from sklearn.preprocessing import MaxAbsScaler
scaler = MaxAbsScaler()
scaler.fit(df)
arr = scaler.transform(df)

 

-끝-

 

다음 글: 1.3 데이터 스케일링 (예제 풀이)

반응형

'Information > 통계강의' 카테고리의 다른 글

2. 분포 및 가설검정  (0) 2021.02.14
1.3 데이터 스케일링 (예제 풀이)  (0) 2021.02.13
1.2 산포 (이론, 예제 풀이)  (0) 2021.02.12
1.1 대푯값 (예제 풀이)  (0) 2021.02.12
1.1 대푯값 (이론)  (0) 2021.02.12