MinMaxScaler sklearn:我也应该规范化类标签吗?



我正在使用MLPRegressor,它需要5个连续特征和1个特征,它从一组40个值中提取值[0,1,2,.., 39]

有人告诉我,使用 sklearn.preprocessing.MinMaxScaler(feature_range = (0,1)) 规范化功能有助于提高 MLP 和 LSTM 的性能。

因此,我在包含上述功能的Xtrain矩阵上使用它。

然而,对我来说,我应该

最小化一个分类变量,这看起来很奇怪......我应该这样做吗?文档说(http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html)MInMaxScaler单独规范化每个功能。我应该去掉分类列并规范化所有其他列吗?

另外,如果它分别规范化每个功能,当我使用 inverse_transform 时,它如何知道如何将它们转换回来?

分类特征应显示为OneHotEncoding。不过,如果您执行分类特征的规范化,它不会损害您的数据。它只是将您的数据从一种形式转换为另一种形式并保持值离散性。请找到下面的小代码示例:

from sklearn.preprocessing import OneHotEncoder, MinMaxScaler
data = np.array([-2,-2,-78,-78,-1,-1,0,0,1,1])
scaler = MinMaxScaler(feature_range=(0,1))
normalizedData = scaler.fit_transform(data.reshape(-1,1))
encoder = OneHotEncoder(categories='auto',sparse=False)
encodedData = encoder.fit_transform(normalizedData.reshape(-1,1))
print(encodedData)

OneHot编码后的O/P:

[[0. 1. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [1. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]
 [0. 0. 0. 0. 1.]]

即使我直接将数据馈送到编码器,即不归一化,O/P 也将保持不变。

分类变量应相应地处理,即使用独热编码

之后,MinMax缩放器不会真正改变编码的特征。

回答您的最后一个问题 - 缩放器只是存储每个输入特征分离的最小值和最大值,因此它可以进行逆变换。独立缩放功能是有意义的 - 它们可能具有不同的规模甚至性质。

缩放分类变量是不必要的,因为在这种类型的变量空间中没有度量的自然意义。

第二个答案 - MinMaxScaler 对象在拟合到数据(规范化变量长度的数组)后保持scale_, data_range_, data_min_ data_max_

此属性启用每个要素的逆变换。

相关内容

  • 没有找到相关文章

最新更新