【问题标题】:why sklearn MinMaxScaler normalizing sparse matrix will output only -1 and 1 value为什么 sklearn MinMaxScaler 归一化稀疏矩阵只会输出 -1 和 1 值
【发布时间】:2021-08-30 00:58:32
【问题描述】:

我尝试使用MinMaxScaler 来规范化稀疏矩阵,并将范围设置为 [-1, 1],但结果只给了我 -1 和 1 个 int 值。我不知道我应该更改缩放器的设置。

我的输出是这样的:

list_1:  [[11.41822609 -1.88521764  3.23520926]
 [10.21012252 -1.05147544  6.925866  ]]

scaled:  [[ 1. -1. -1.]
 [-1.  1.  1.]] 

transfer:  [[11.41822609 -1.88521764  3.23520926]
 [10.21012252 -1.05147544  6.925866  ]] 

我的代码:

file = h5py.File('HDF5s\\xy_train&std_data.hdf5', 'r')
dataset = numpy.array(file['s1']['V1']['cnn1']['n_train'])
file.close()

list_1 = numpy.array(dataset[:2, :3], dtype='float64')

scaler_1 = MinMaxScaler(feature_range=(-1, 1))
s_list_1 = scaler_1.fit_transform(list_1)

print('list_1: ', list_1, '\n')
print('scaled: ', s_list_1, '\n')
print('transfer: ', scaler_1.inverse_transform(s_list_1), '\n')

【问题讨论】:

标签: python scikit-learn


【解决方案1】:

这是因为您已将 MinMaxScaler() 与形状为 (2,3) 的 numpy 数组相匹配。 MinMaxScaler() 将分别缩放每个特征(即每一列)。对于您提供的数组,每个特征只有 2 个值(即行),因此较高的值成为该特征的上限 (1),而较低的值成为下限 (-1),因此所有值都是 -1 或 1。

如果您将 MinMaxScaler 拟合到更大的样本(即更多行),那么您将看到缩放后的值不再只是 -1 和 1。

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2014-03-19
    • 2012-09-06
    • 2017-10-03
    • 2018-01-19
    • 1970-01-01
    相关资源
    最近更新 更多