将数据缩放到一定范围

时间:2018-12-28 00:57:36

标签: python machine-learning deep-learning

我有一个有关如何将数据缩放到一定范围的实现问题。我知道使用以下等式可以缩放数据:

X_nor = ((b-a)*(X-min))/((max-min)+a)

其中a,b是我要缩放的范围(例如-1,1)。 max和min是原始数据中的最大数和最小数。 X是原始数据,X_nor是规范化数据。

我的问题是:假设我有三个数据,每个形状为(1,128,128,1)。我使用上面的公式进行归一化,三个数据或每个单独数据的最大和最小数是最大还是最小?

要清楚地说,上面的代码是我所说的整个数据的最大值和最小值:

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。

另一个问题是:这样是否会破坏原始数据中的特征或图案?

非常感谢您!

1 个答案:

答案 0 :(得分:1)

这取决于您要实现的目标。他们俩都是对的。在处理图像时,第二种方法(通道标准化)是最常见的技术。并且在进行归一化时,我们只是重新缩放数据,因此原始特征和样式不会被破坏。如果要在归一化之后恢复原状,则可以始终返回原始比例。