我有一个关于如何将数据缩放到一定范围的实现问题。我知道使用下面的等式我们可以缩放数据:
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和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())
这样,在做归一化的时候,数据会减去自己的max和min,而不是第一种情况下唯一的max和min。
还有一个问题是:这样的话,原始数据中的特征或者模式会被破坏吗?
非常感谢!
最佳答案
这取决于您想要实现的目标。他们俩都是对的。处理图像时,第二种方法( channel 归一化)是最常用的技术。在进行标准化时,我们只是重新缩放数据,因此原始特征和模式不会被破坏。如果您愿意,标准化后可以随时返回到原始比例。
关于python - 将数据缩放到一定范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952544/