본문 바로가기
개발 Tools/파이썬_Deep learning & ML

머신러닝 MinMaxScaler(정규화)

by 전컴반 2021. 7. 15.
반응형

이번엔 전처리의 한 방법인 MinMaxScaler 정규화를 알아보겠다. 

 

표준화 = StandardScaler

정규화 = MinMaxScaler

 

정규화란, 모든 값을 0~1 사이의 값으로 바꾸는 것이다. 음수도 예외 없이 다 바꾼다. 표준화와는 차이가 있다.

 

수학식을 보자면, ( X- (X의 최솟값) ) / ( X의 최댓값 - X의 최솟값 )이다. 

예시로 들어보자면,

최댓값 10, 최솟값 2 일 때, 4는 어떻게 정규화될까? (4 - 2) / (10 - 2 ) = 0.25로 정규화될 수 있다.

 

라이브러리

 

from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.datasets import load_iris
import pandas as pd

 

최대, 최소 확인

 

iris = load_iris()
iris_data = iris.data
iris_df = pd.DataFrame(iris_data, columns=iris.feature_names)

print(iris_df.max())
print(iris_df.min())

출력
sepal length (cm)    7.9
sepal width (cm)     4.4
petal length (cm)    6.9
petal width (cm)     2.5
dtype: float64

sepal length (cm)    4.3
sepal width (cm)     2.0
petal length (cm)    1.0
petal width (cm)     0.1
dtype: float64

 

붓꽃 데이터를 불러와서 데이터 프레임으로 만든 뒤, 최대 최소를 확인했다. 정규화시킨 뒤 최대 최소를 확인하기 위해 먼저 출력해 보았다. 

 

MinMaxScaler()

 

객체를 생성하여 표준화와 마찬가지로 fit으로 학습시킨 뒤 transform을 사용하여 변환한다.

 

scaler_ = MinMaxScaler()
scaler_.fit(iris_df)
iris_scaled_ = scaler_.transform(iris_df)

iris_scaled__df = pd.DataFrame(iris_scaled_, columns=iris.feature_names)

print(iris_scaled__df)
print(f"최소\n{iris_scaled__df.min()}")
print(f"최대\n{iris_scaled__df.max()}")

출력
     sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
0             0.222222          0.625000           0.067797          0.041667
1             0.166667          0.416667           0.067797          0.041667
2             0.111111          0.500000           0.050847          0.041667
3             0.083333          0.458333           0.084746          0.041667
4             0.194444          0.666667           0.067797          0.041667
..                 ...               ...                ...               ...
145           0.666667          0.416667           0.711864          0.916667
146           0.555556          0.208333           0.677966          0.750000
147           0.611111          0.416667           0.711864          0.791667
148           0.527778          0.583333           0.745763          0.916667
149           0.444444          0.416667           0.694915          0.708333
[150 rows x 4 columns]

최소
sepal length (cm)    0.0
sepal width (cm)     0.0
petal length (cm)    0.0
petal width (cm)     0.0
dtype: float64

최대
sepal length (cm)    1.0
sepal width (cm)     1.0
petal length (cm)    1.0
petal width (cm)     1.0
dtype: float64

 

보면 최대와 최소가 0~1로 모든 숫자들이 정규화된 걸 확인할 수 있다. 

반응형

댓글