现在,我将数据存储在2 x 2 numpy数组中。如果我要在数组上使用MinMaxScaler fit_transform,它将逐列对其进行归一化,而我希望对整个np数组进行归一化。反正有这样做吗?

最佳答案

从文档看来,您无法更改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参数,以考虑整个数组中的最大值和最小值。

10-07 13:30