【发布时间】:2016-03-30 13:35:02
【问题描述】:
您可能知道,对于 Theano 中的训练任务,我们必须将训练数据映射到 0 到 1。我的训练数据也有负值。目前我正在使用这个公式:
x'=(x - min(x))/(max(x) - min(x))
这是由这段代码实现的:
for i in range (train_x.shape[0]):
train_x[i,:] = ((train_x[i,:] - train_x[i,:].min(0)) /train_x[i,:].ptp(0))
这个公式正确吗?您对特征重新缩放有更好的想法吗?
【问题讨论】:
-
那些是 numpy 数组吗?大约 10 分钟前,我写道:
(x - x.min(axis=0)) / x.ptp(axis=0)看起来与您所拥有的几乎相同(没有循环)。在我看来,您只会在一行内进行规范化,而不是像您可能想要的那样跨行进行规范化。 -
感谢您的回复。是的,它们是 numpy 数组。你是对的。我担心在这种情况下,每行都会有一个 0 和一个 1。我们如何对所有行进行标准化?
-
我认为你应该可以使用我第一条评论中的表达方式(用
train_x代替x)。不需要循环。 -
我试过你的评论,但它不起作用。 These are the results:train_set_x= [[ 7.6990701 2.17705725 -3.49150865 ..., -0.33457212 1.02\ 0639 -0.52406797] [-1.50598435 0.52384467 -1.92651141 ..., -1.12350943 0.05220407 -0.06458882] [ 6.70513488 0.36322057 -1.53669312 ..., -1.59078881 -0.51936011 0.29170968] ..., [ 6.92596268 2.02438224 -3.15645995 ..., 0.23745564 1.52109066 -0.72535945] [ 6.00661444 1.44427386 -2.22867013 ..., -0.13492791 -0.95444645 0.51398081] [-6.28165553 0.07711241 0.52136293 ..., 0.36748433 0.51728437 0.1107671 ]]