python - 将数据缩放到一定范围

标签 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和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/

相关文章:

python - iOS 和 Python 之间的共享二进制格式

Python websockets 模块和 IIS 作为反向代理

python - 使用 SSD Mobilenet (Tensorflow API) 进行 1080p 物体检测

python为脚本创建系统别名

python - Python 3 和 matplotlib 中的 Unicode 绘图标记

python - sparse_categorical_crossentropy 和 categorical_crossentropy 有什么区别?

r - `h2o.cbind` 仅接受 H2OFrame 对象 - R

python - TypeError : array( ['cycling' ], dtype=object) 不可 JSON 序列化

python - 来自 Transformers 的 BertForSequenceClassification 的大小不匹配和多类问题

python - Tensorflow/Keras : Model accuracy during training is always 0. 5 输入大小与第一个官方教程不同