[파이썬] 데이터변형 | 정규화와 표준화

2020. 4. 14. 11:08노트/Python : 프로그래밍

 

  • 변수들 간 척도가 다른 경우 데이터 표준화  
  • 모집단 : 전체집단, 모집단에서 표본을 추출
  • 표본집단 : 평균, 표준편차, ... -> 통계량
  • 모수적 방법 :  

    중심극한정리 : 무작위로 복원추출하면, 연속형 자료의 평균에 대한 분포는 정규분포를 띈다.  

    - 가정 : 30개 이상의 표본의 경우에 정규분포를 따른다. 

 

  • 비모수적 방법 :  

    - 10개 미만의 표본의 경우에는 모수적 방법을 사용하지 못함.  

    - 자료를 크기로 나열 -> 순위 매김 -> 차이 비교  

 

 

표준화  = $ {(각 데이터-평균(각 열)) \over 표준편차(각 열)}$

평균까지의 거리로, 2개 이상의 대상이 단위가 다를때, 대상 데이터를 같은 기준으로 볼수있게 해줌

모집단이 정규분포를 따르는 경우에 $N(0,1)$ 인 표준정규분포로 표준화 하는 작업

1) numpy 

2) scipy.stats. zscore 

3) sckit-learn preprocessing  

 

예제 데이터 생성

 

import numpy as np
from numpy import *

data=np.random.randint(30 , size=(6,5))
data

>>> array([[ 4, 18,  4, 12, 17],
       [ 1, 26, 15, 28, 21],
       [ 6, 19, 28, 27, 18],
       [ 9, 13, 27,  8, 20],
       [18,  8,  3, 13, 13],
       [ 4, 26, 11, 19,  0]])

 

1. numpy를 이용한 표준화 

print(data)
print("="*30)
std_data = (data - np.mean(data,axis = 0))/ np.std(data,axis = 0)
print(std_data)

 

 

 

 

2. zscore을 이용한 표준화 

 

import scipy.stats as ss 

data_ss=ss.zscore(data)
print(data_ss)

 

3. sckit-learn preprocessing 을 이용한 표준화 

 

import sklearn
from sklearn.preprocessing import *

ss_data=StandardScaler().fit_transform(data)
print(ss_data)

 

 

정규화 = $ {(각 데이터-최솟값(각열) ) \over (최댓값(각열) - 최솟값(각열)}$

전체구간을 0~100으로 설정하여 데이터를 관찰하는방법,

특정데이터의위치를확인할수있게해줌

 

0~1사이의 범위로 데이터를 표준화  

1) 수식 입력 

2) 객체 생성 MinMaxScaler()

 

1. 수식을 통한 정규화 

 

data_mm = (data - data.min(axis = 0)) / (data.max(axis = 0) - data.min(axis = 0))
print(data_mm)

 

 

2. sklearn.preprocessing 을 통한 정규화 

 

data_ms=MinMaxScaler().fit_transform(data)
print(data_ms)