이외에도 MaxAbsScaler는 각 특성별로 데이터를 최대 절댓값으로 나눕니다. 따라서 각 특성의 최댓값은 1이 됩니다. 전체 특성은 [-1, 1] 범위로 변경됩니다.
>>> from sklearn.preprocessing import MaxAbsScaler
>>> mas = MaxAbsScaler()
>>> X_train_maxabs = mas.fit_transform(X_train)
>>> X_test_maxabs = mas.fit_transform(X_test)
넘파이를 사용하여 계산하면 다음과 같습니다.
>>> ex / np.max(np.abs(ex))
array([0. , 0.2, 0.4, 0.6, 0.8, 1. ])
StandardScaler, MinMaxScaler, RobustScaler, MaxAbsScaler에 대응하는 scale(), minmax_scale(), robust_scale(), maxabs_scale() 함수가 있습니다. 이 함수들은 1차원 배열도 입력받을 수 있습니다. ex 배열에 이 함수들을 적용하여 결과를 비교해 봅시다.
>>> from sklearn.preprocessing import scale, minmax_scale, robust_scale, maxabs_scale
>>> print('StandardScaler:', scale(ex))
>>> print('MinMaxScaler:', minmax_scale(ex))
>>> print('RobustScaler:', robust_scale(ex))
>>> print('MaxAbsScaler:', maxabs_scale(ex))
StandardScaler: [-1.46385011 -0.87831007 -0.29277002 0.29277002 0.87831007 1.46385011]
MinMaxScaler: [0. 0.2 0.4 0.6 0.8 1. ]
RobustScaler: [-1. -0.6 -0.2 0.2 0.6 1. ]
MaxAbsScaler: [0. 0.2 0.4 0.6 0.8 1. ]
MaxAbsScaler, maxabs_scale()은 데이터를 중앙에 맞추지 않기 때문에 희소 행렬을 사용할 수 있습니다.
>>> from scipy import sparse
>>> X_train_sparse = sparse.csr_matrix(X_train)
>>> X_train_maxabs = mas.fit_transform(X_train_sparse)