예측 모델링을 할 때 학습 데이터에 대하여 변환하는 경우가 굉장히 많다. 그중에서 각 데이터를 특정 범위로 제한시키는 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)
만약 변환된 데이터를 되돌리고 싶다면 inverse_transform을 이용한다.
inverse_transformed_X = scaler.inverse_transform(transformed_X) ## 원 데이터의 스케일로 변환
print(inverse_transformed_X)
원 데이터로 다시 돌아왔다!
'프로그래밍 > Scikit-Learn' 카테고리의 다른 글
[Scikit-Learn] 6. AdaBoost 모형 만들기(feat. AdaBoostClassifier, AdaBoostRegressor) (403) | 2022.06.18 |
---|---|
[Scikit-Learn] 5. 의사결정나무(Decision Tree) 만들기(feat. DecisionTreeClassifier, DecisionTreeRegressor) (410) | 2022.06.18 |
[Scikit-Learn] 4. 서포트 벡터 머신 모형 만들기. feat SVC, SVR (401) | 2022.05.27 |
[Scikit-Learn] 3. 데이터 칼럼 표준화하기 feat. StandardScaler (380) | 2022.05.27 |
[Scikit-Learn] 1. sklearn을 이용하여 선형 회귀 모형(Linear Regression) 적합하기 (392) | 2022.05.07 |
댓글