2023년 2월 26일 일요일

MinMaxScaler의 사용 0~1 -> ? ~ ?

sklearn 의 MinMaxScaler 는 0~1 사이의 값으로 Scale 변환해주는 Scaler라고 많이들 알고 있습니다.

그런데 간혹 아주 간혹 범위가 0~1사이가 아닌 특별한 값으로 변형하고자 할때가 있습니다. 예를 들어 -100~100 사이로 변환하고 싶은 경우가 있습니다.

MinMaxScaler 를 사용하고 나서 비례식으로 다시 범위를 곱하거나 빼주는 방법도 생각 해볼 수 있습니다. 연산식은 sklearn 에서 찾을 수 있습니다.

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min

위와 같은 방법으로 변환이 가능도 하지만 이미 sklearn에서 준비가 되어 있습니다.

class sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), *, copy=True, clip=False)[source]

지금 까지 아무 생각도 없이 해당 함수를 사용했었는데요. feature_range 인자로 사용이 가능합니다.

다음은 예제입니다. sample data는 sklearn 에 기본으로 있는 iris 데이터를 이용하였습니다.



기본으로 인자가 없을때 예제 0~1 사이 scaler로 동작합니다.


다음은 -100~100 범위의 MinMax Scaler 예제입니다.




댓글 없음:

댓글 쓰기