如何缩放有符号整数数组的范围从0到1?


Answers:


24

这称为基于单位的归一化。如果有向量,则可以通过执行以下操作来获得向量的规范化版本:。XZ

Z=Xmin(X)max(X)min(X)

1
这种方法也称为最小-最大归一化(因为我们使用最小和最大值)
Shagun Sodhani 2015年

是否可以使用此方法对表示百分比的值进行归一化,该值可以为负数,但始终高于-2%且低于30%?如果我以这种方式对其进行归一化,那么神经网络难于获取值含义的线索吗?
伊万

3

在数组中找到最大的正数和最小的(最负数)数。将最小(最负数)数的绝对值添加到数组中的每个值。将每个结果除以最大数与最小数之差。


@Jonathan:没关系,只要两个值都来自同一数组(原始数组或更新数组)即可。由于将相同的数字添加到每个值,因此最小值和最大值之间的差保持不变。
RemcoGerlich 2015年

1

说你有一个向量/值数组 v = [1, -2, 3]

minV = Math.min.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] -= minV;}
maxV = Math.max.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] /= ( maxV - minV );}

最后的输出将是v = [0.6, 0, 1]。说明:

  1. 将值的整个范围从0开始,这样我们就不会出现负数

  2. 将值除以(max-min)范围,这样max将为1


1

在执行此操作之前,您可能需要检查异常值。假设有99%的数据位于范围(-5、5)中,但是一个小家伙的值是25.0。您的归一化数组将围绕(0,0.3)聚集,这将导致神经网络学习出现问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.