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에서 준비가 되어 있습니다.
지금 까지 아무 생각도 없이 해당 함수를 사용했었는데요. feature_range 인자로 사용이 가능합니다.
다음은 예제입니다. sample data는 sklearn 에 기본으로 있는 iris 데이터를 이용하였습니다.
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 |
1 | 4.9 | 3.0 | 1.4 | 0.2 |
2 | 4.7 | 3.2 | 1.3 | 0.2 |
3 | 4.6 | 3.1 | 1.5 | 0.2 |
4 | 5.0 | 3.6 | 1.4 | 0.2 |
기본으로 인자가 없을때 예제 0~1 사이 scaler로 동작합니다.
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 |
다음은 -100~100 범위의 MinMax Scaler 예제입니다.
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
0 | -55.555556 | 25.000000 | -86.440678 | -91.666667 |
1 | -66.666667 | -16.666667 | -86.440678 | -91.666667 |
2 | -77.777778 | 0.000000 | -89.830508 | -91.666667 |
3 | -83.333333 | -8.333333 | -83.050847 | -91.666667 |
4 | -61.111111 | 33.333333 | -86.440678 | -91.666667 |