Keras / NN-对输入应用不同的缩放/标准化

时间:2019-05-01 20:15:31

标签: python keras scikit-learn neural-network normalization

在学习ML的过程中,我正在测试一些NN,但我发现我的输出似乎没有考虑到我这三项输入中的一项非常重要。

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

  • 3是介于1000之间的数字(包括输出),并且可以达到1.5亿

  • 1是一个0到2之间的数字,而100 wich是我的NN不考虑的数字

我使用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

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

1 个答案:

答案 0 :(得分:0)

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

  • 如果是,我可以按比例缩放数据,以便更重要的特征具有更大的方差/范围。
  • 如果没有,我应该缩放数据,使要素的均值为0,标准差为1。为什么?主要是为了改善数值条件,消除初始权重与比例有关的问题,使训练过程更快,并减少陷入局部最优的风险。

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

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