现在,我将数据存储在2 x 2 numpy数组中。如果我要在数组上使用MinMaxScaler fit_transform,它将逐列对其进行归一化,而我希望对整个np数组进行归一化。反正有这样做吗?
答案 0 :(得分:1)
根据文档,您似乎无法更改MinMaxScaler的轴。一种替代方法是根据文档中的MinMaxScaler的定义来定义缩放函数:
X_std = (X - X.min()) / (X.max() - X.min())
X_scaled = X_std * (max - min) + min
因此您可以这样做:
import numpy as np
X = np.array([[-1, 2], [-0.5, 6]])
def min_max_scale(X, range=(0, 1)):
mi, ma = range
X_std = (X - X.min()) / (X.max() - X.min())
X_scaled = X_std * (ma - mi) + mi
return X_scaled
print(min_max_scale(X))
输出
[[0. 0.42857143]
[0.07142857 1. ]]
基本上,您需要删除axis参数,以考虑整个数组中的最大值和最小值。
答案 1 :(得分:0)
为什么不通过以下方式使用原始的MinMaxScaler API:
整形结果恢复为X数组的形状
import numpy as np
X = np.array([[-1, 2], [-0.5, 6]])
scaler = MinMaxScaler()
X_one_column = X.reshape([-1,1])
result_one_column = scaler.fit_transform(X_one_column)
result = result_one_column.reshape(X.shape)
print(result)
输出
[[ 0. 0.42857143]
[ 0.07142857 1. ]]