반응형
MinMaxScaler 스케일러를 이용한 데이터 전처리와 전처리 저장 및 불러오기(joblib, sklearn)¶
In [2]:
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
- 데이터 프레임을 이용하여
minmaxscaler
를 적용합니다 - 반드시 알아야 할 것은
minmaxscaler
가 데이터 프레임에 컬럼 단위로 적용된다는 것! 입니다
In [7]:
# 예제 데이터 생성
cols = ['col1', 'col2', 'col3']
data = pd.DataFrame(np.array([[5, 2.1, 101],
[6, 2.2, 103],
[7, 2.1, 145]]),
columns=cols)
data
Out[7]:
col1 | col2 | col3 | |
---|---|---|---|
0 | 5.0 | 2.1 | 101.0 |
1 | 6.0 | 2.2 | 103.0 |
2 | 7.0 | 2.1 | 145.0 |
In [8]:
# scaler 생성 및 fitting
scaler = MinMaxScaler(feature_range = (0,1))
scaler_fit = scaler.fit(data)
In [9]:
# 데이터에 scaler 적용
scaled_data = scaler_fit.transform(data)
scaled_data
Out[9]:
array([[0. , 0. , 0. ], [0.5 , 1. , 0.04545455], [1. , 0. , 1. ]])
joblib
함수를 사용하여 스케일러 자체를 바이너리 형태로 저장합니다.
In [14]:
# joblib을 활용한 sacler 저장 : 파일이름과 fitting된 scaler 변수 필요
import joblib
scaler_filename = "scaler.save"
joblib.dump(scaler_fit, scaler_filename)
Out[14]:
['scaler.save']
joblib
을 이용하여 바이너리 파일로 저장된 스케일러를 불러 올 수 있습니다.
In [15]:
# joblib을 활용한 scaler 불러오기
scaler_filename = "scaler.save"
scaler_fit_load = joblib.load(scaler_filename)
- 새로운 데이터를 불러온 스케일러에 적용 시킵니다
In [16]:
cols = ['col1', 'col2', 'col3']
data = pd.DataFrame(np.array([[6, 2.01, 105],
[6, 2.09, 106],
[6, 2.09, 107]]),
columns=cols)
data
Out[16]:
col1 | col2 | col3 | |
---|---|---|---|
0 | 6.0 | 2.01 | 105.0 |
1 | 6.0 | 2.09 | 106.0 |
2 | 6.0 | 2.09 | 107.0 |
In [17]:
# min max 스케일
result = scaler_fit_load.transform(data)
result
Out[17]:
array([[ 0.5 , -0.9 , 0.09090909], [ 0.5 , -0.1 , 0.11363636], [ 0.5 , -0.1 , 0.13636364]])
[참고] inverse_transform
을 이용하여 데이터를 원복 시킬 수도 있습니다
In [18]:
# 스케일된 숫자를 원수로 복원
scaler_fit_load.inverse_transform(result)
Out[18]:
array([[ 6. , 2.01, 105. ], [ 6. , 2.09, 106. ], [ 6. , 2.09, 107. ]])
반응형
'python' 카테고리의 다른 글
파이썬에서 리스트를 텍스트 파일로(list to txt file, python) (0) | 2022.12.22 |
---|---|
파이썬을 활용하여 1부터 n까지 연속한 숫자의 제곱합 구하기 (0) | 2022.12.21 |
파이썬을 활용한 unique, 고유값 도출(numpy unique) (0) | 2022.12.19 |
파이토치로 이미지 패딩하기 torchvision padding (0) | 2022.12.19 |
sklearn train_test_split, 트레인 테스트 데이터 분할 (0) | 2022.12.18 |
댓글