본문 바로가기

BLOG/머신러닝

[머신러닝] MinMaxScaler : 0~1 스케일로 정규화 하기 (파이썬 코드)

MinMaxScaler는 스케일을 조정하는 정규화 함수로, 모든 데이터가 0과 1 사이의 값을 갖도록 해주는 함수입니다.

따라서 최댓값은 1로, 최솟값은 0으로 데이터의 범위를 조정해줍니다.

 

한편, MinMaxScaler 함수는 파이썬에서 다음과 같이 입력하여 사용할 수 있습니다.

 

from sklearn.preprocessing import MinMaxScaler

minmax_scaler = MinMaxScaler()
minmax_scaled = minmax_scaler.fit_transform(X_train)  #x_train라는 데이터 입력

 

먼저 필요한 라이브러리인 MinMaxScaler를 import 해주고,

두 번째 줄 ~ 세 번째 줄 코드처럼 정규화를 하는 함수에 정규화를 할 데이터(X_train)를 입력해주면 됩니다.

그리고 마지막으로 정규화를 한 데이터를 데이터프레임으로 나타내기 위한 코드를 작성해주었습니다.

 

 

이렇게 입력하고 실행하면 정규화 된 데이터를 얻을 수 있는데요,

예시로, 사이킷런에서 제공하는 보스턴 주택 데이터를 이용하여 정규화를 해보겠습니다.

 

먼저, 필요한 데이터를 불러와 train data와 test data로 나누어보겠습니다.

 

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler


boston_dataset = datasets.load_boston()
X_train, X_test, y_train, y_test = train_test_split(boston_dataset['data'],
                                                    boston_dataset['target'],
                                                    test_size=0.2,
                                                    random_state=0)

 

그리고, 위에서 살펴본 MinMaxScaler 함수를 통해 정규화를 한 뒤 데이터프레임으로 나타내 보겠습니다.

 

minmax_scaler = MinMaxScaler()
minmax_scaled = minmax_scaler.fit_transform(X_train)  #x_train라는 데이터 입력

round(pd.DataFrame(minmax_scaled), 2)

 

#output :
	0	1	2	3	4	5	6	7	8	9	10	11	12
0	0.00	0.00	0.21	1.0	0.25	0.65	0.88	0.15	0.30	0.23	0.51	0.99	0.23
1	0.00	0.00	0.38	0.0	0.06	0.46	0.15	0.38	0.13	0.23	0.70	0.95	0.23
2	0.00	0.30	0.16	0.0	0.09	0.64	0.53	0.47	0.22	0.22	0.43	0.99	0.27
3	0.00	0.12	0.27	0.0	0.29	0.47	0.66	0.40	0.17	0.24	0.28	1.00	0.30
4	0.29	0.00	0.65	0.0	0.60	0.33	0.89	0.04	1.00	0.91	0.81	0.32	0.71
...	...	...	...	...	...	...	...	...	...	...	...	...	...
399	0.00	0.00	0.25	0.0	0.22	0.41	0.74	0.32	0.17	0.19	0.74	0.99	0.28
400	0.00	0.45	0.11	0.0	0.11	0.69	0.24	0.48	0.17	0.40	0.28	0.98	0.03
401	0.00	0.00	0.35	0.0	0.33	0.47	0.82	0.14	0.22	0.47	0.55	0.99	0.24
402	0.00	0.00	0.24	0.0	0.13	0.47	0.85	0.41	0.09	0.09	0.56	0.99	0.48
403	0.00	0.00	0.13	0.0	0.26	0.39	0.88	0.13	0.17	0.21	0.43	1.00	0.37
404 rows × 13 columns

 

정규화를 거친 결과, 해당 값이 모두 0과 1 사이의 값으로 변경되었음을 살펴볼 수 있답니다.