sklearn.preprocessing.MinMaxScaler()仅返回0或1,不返回浮点数

问题描述 投票:3回答:2

无论出于何种原因,它只会返回0或1,而不是它们之间的浮点数。

from sklearn import preprocessing

X = [[1.3, 1.6, 1.4, 1.45, 12.3, 63.01,],
    [1.9, 0.01, 4.3, 45.4, 3.01, 63.01]]

minmaxscaler = preprocessing.MinMaxScaler()
X_scale = minmaxscaler.fit_transform(X)

print(X_scale) # returns [[0. 1. 0. 0. 1. 0.] [1. 0. 1. 1. 0. 0.]]
python-3.x scikit-learn
2个回答
1
投票

Minmax Scaler无法使用列表列表,例如,它需要使用numpy数组(或数据框)。

您可以转换为numpy数组。它将产生2个样本的6个特征,我想这不是您的意思,因此您也需要重塑形状。

import numpy

X = numpy.array([[1.3, 1.6, 1.4, 1.45, 12.3, 63.01,],
    [1.9, 0.01, 4.3, 45.4, 3.01, 63.01]]).reshape(-1,1)

MinMax Scaler之后的结果:

[[0.02047619]
 [0.0252381 ]
 [0.02206349]
 [0.02285714]
 [0.19507937]
 [1.        ]
 [0.03      ]
 [0.        ]
 [0.06809524]
 [0.72047619]
 [0.04761905]
 [1.        ]]

不确定是否要分别或同时最小化每个列表


0
投票

您从MinMaxScaler中获得的答案是预期的答案。

[只有两个数据点时,您将只得到0和1。有关三个数据点的情况,请参见示例here

您需要了解,它将每列的最小值转换为0,将最大值转换为1。当您有更多数据点时,其余的数据点将根据范围值(最大-最小)进行计算。参见公式here

BTW MinMaxScaler接受2D数据,这意味着可接受的列表列表。这就是为什么您没有任何错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.