【发布时间】:2019-05-25 22:13:02
【问题描述】:
我有一个关于如何将数据缩放到特定范围的实施问题。我知道使用下面的等式我们可以缩放数据:
X_nor = ((b-a)*(X-min))/((max-min)+a)
其中 a,b 是我想要缩放的范围(例如 -1,1)。而 max 和 min 是原始数据中的最大数和最小数。 X为原始数据,X_nor为归一化数据。
我的问题是:假设我有三个数据,每个形状是 (1,128,128,1)。而我使用上面的等式进行归一化,max和min是三个数据的最大和最小数还是每个单独的数据?
说的清楚一点,上面的代码就是我所说的整个数据的最大值和最小值:
max=0
min=0
for i in range(len(data)):
if data[i].max()>max:
max=data[i].max()
if data[i].min()<min:
min=data[i].min()
下面的代码就是我所说的单个最大值和最小值:
max=[]
min=[]
for i in range(len(data)):
max.append(data[i].max())
min.append(data[i].min())
这样,在做归一化时,数据会减去自己的最大值和最小值,而不是第一种情况下唯一的最大值和最小值。
另外一个问题是:这样会不会破坏原始数据中的特征或模式?
非常感谢!
【问题讨论】:
-
我认为你的公式应该是 X_nor = (((b-a)*(X-min))/(max-min))+a
标签: python machine-learning deep-learning