首页 > 解决方案 > Keras / NN - 对输入应用不同的缩放/归一化

问题描述

在我学习 ML 的旅程中,我正在测试一些 NN,我发现我的输出似乎没有考虑到我的 3 个非常重要的输入之一。

我的数据集由 4 个列(csv)组成:

我使用 scikit-learn 中的 MinMaxScaler 以这种方式扩展我的数据集:

df = pd.read_csv('rawData.csv')
dataset = df.values

min_max_scaler = preprocessing.MinMaxScaler()
dataset = min_max_scaler.fit_transform(dataset)

X = dataset[:,0:3] # input
Y = dataset[:,3]   # output

我还使用另一种方式来扩展我的数据(当我想测试我的模型时):

min_test = np.min(runset)
max_test = np.max(runset)

normalized = (runset - min_test) / (max_test - min_test)

test = model.predict(normalized)

result = test * (max_test - min_test) + min_test

所以我的问题是:是否可以并建议对不同的输入使用不同的比例?如果是,我该怎么做?

标签: pythonkerasscikit-learnneural-networknormalization

解决方案


对您的问题的简短回答是另一个问题:我是否对表征我的数据集的特征的重要性有先验知识?

  • 如果是,我可能会以更重要的特征具有更大的方差/范围的方式缩放我的数据。
  • 如果不是,我应该以特征具有均值 0 和标准差 1 的方式缩放我的数据。为什么?主要是为了改善数值条件,消除初始权重的尺度依赖性问题,使训练过程更快,降低陷入局部最优的风险。

不要低估梯度下降方法对缩放的敏感性。

最后,请记住使用训练集中的统计数据(均值和标准差)来标准化验证/测试集。


推荐阅读