如何缩放一个输入示例?
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 值,而不是尝试适应新值。
我有一个包含此类输入特征的数据集: [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 值,而不是尝试适应新值。