如何缩放一个输入示例?

how to scale one input example?

我有一个包含此类输入特征的数据集: [81.2819,5636.209677,9957.279495] 以上是我的神经网络的三个输入特征。假设我的整个数据集的大小是:(10,000 x 3) 当我使用以下代码行缩放整个数据集时:

scaler = preprocessing.MinMaxScaler()
scaled_ds = scaler.fit_transform(dataset)

一切正常。但是当我像上面的那样只缩放一行时,我得到的是零,比如:

array([[0., 0., 0.]])

你们能解释一下为什么吗?

根据 documentation:

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min

因此对于单个样本,X.min 与 X.max 重合,导致您的范围为零。反过来,零除处理会导致您的 X_scaled 为零。

这应该可以解释为什么不能为单个数据样本定义按特征缩放。另一方面,如果你已经拟合了你的数据集,只是想转换一个新的例子,你需要使用:

scaled_sample = scaler.transform(sample)

即只需使用预先获得的 min/max 值,而不是尝试适应新值。