본문 바로가기
프로그래밍/Scikit-Learn

[Scikit-Learn] 2. 최대 최소(Min Max) 변환하기 feat. MinMaxScaler

by 부자 꽁냥이 2022. 5. 27.

예측 모델링을 할 때 학습 데이터에 대하여 변환하는 경우가 굉장히 많다. 그중에서 각 데이터를 특정 범위로 제한시키는 Min Max 변환을 많이 사용한다. 최대 최소(Min Max) 변환은 원 데이터를 우리가 지정한 범위 내로 변환시키는 것이다. Scikit-Learn(sklearn)에서는 Min Max 변환을 위한 클래스인 MinMaxScaler를 제공한다. 이번 포스팅에서는 그 사용법을 알아본다.

 

1. Scikit-Learn(sklearn) MinMaxScaler 변환 과정

2. Scikit-Learn(sklearn) MinMaxScaler 사용법


   1. Scikit-Learn(sklearn) MinMaxScaler 변환 과정

먼저 MinMaxScaler를 사용하여 데이터를 변환하는 과정은 다음과 같다.

 

1) MinMaxScaler 클래스 생성 → 2) MinMaxScaler 적합(Fitting) → 3) 데이터 변환 → 4) (필요시) 데이터 역변환

 

각 과정에 대해서 알아보자.


1) MinMaxScaler 클래스 생성

Min Max 변환을 하기 위한 초기 작업이다. 변환을 하기 위해 당연히 MinMaxScaler를 생성해야 한다. 이때 feature_range에 (최소 범위, 최대 범위) 형태의 튜플을 넘겨준다. 예를 들어 원 데이터를 2~3 범위로 변환하고자 한다면 feature_range = (2, 3)을 설정하면 된다.

2) MinMaxScaler 적합(Fitting)

주어진 데이터를 이용하여 MinMaxScaler로 변환하기 위한 함수를 만드는 과정이다. 이 함수는 원 데이터가 주어진 경우 feature_range에서 정의한 범위에 맞춰서 변환할 준비가 된 상태이다.

3) 데이터 변환

2) 단계에서 만들어진 함수에 원 데이터를 넣어서 실제로 데이터를 변환하는 과정이다.

4) 데이터 역변환

Min Max 변환된 데이터를 원 데이터로 바꾸는 작업이다.


   2. Scikit-Learn(sklearn) MinMaxScaler 사용법

보스턴 집값 데이터를 이용하여 Min Max 변환을 수행해보자. 데이터를 임포트 한 후 원 데이터의 범위를 살펴보자.

 

import pandas as pd

from sklearn.preprocessing import MinMaxScaler
from sklearn.datasets import load_boston

boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
X = df[['B', 'LSTAT']]

print(X.values)

 

이제 MinMaxScaler를 이용하여 Min Max 변환을 해볼 시간이다. 다음은 앞에서 다룬 1)~3) 단계를 수행하는 코드이다. 실제로 변환된 데이터를 출력해볼 수 있다.

 

scaler = MinMaxScaler(feature_range=(0,3)) ## 각 칼럼 데이터 값을 0~3 범위로 변환
scaler.fit(X) ## 각 칼럼 데이터마다 변환할 함수 생성
transformed_X = scaler.transform(X) ## fit에서 만들어진 함수를 실제로 데이터에 적용
print(transformed_X)

 

MinMaxScaler를 이용해 변환된 데이터

만약 변환된 데이터를 되돌리고 싶다면 inverse_transform을 이용한다.

 

inverse_transformed_X = scaler.inverse_transform(transformed_X) ## 원 데이터의 스케일로 변환
print(inverse_transformed_X)

 

원 데이터로 다시 돌아왔다!

 

 


댓글


맨 위로