麻木的新手在这里。我正在尝试对神经网络的输入进行归一化(又名特征缩放、标准化)。我只是做线性缩放,我使用的公式是:
I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)
其中 I 是缩放的输入值,Imin 和 Imax 是缩放值的所需最小和最大范围,D 是原始数据值,Dmin 和 Dmax 是原始数据值的最小和最大范围。我想要一个 python 方法,它接受一个 numpy 数组并返回一个所有值都标准化的数组。这是我到目前为止的想法。
def get_normalized_values(array):
"""I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)"""
imin = -1
imax = 1
dmin = array.amin()
dmax = array.amax()
normalized = imin + (imax - imin)*(array - dmin)/(dmax - dmin)
return normalized
我的问题是这行得通吗?还是我必须遍历数组中的每个元素并执行数学运算?你能用数组和标量做这样的数学吗?也就是说,会array - dmin
创建一个新的临时数组,其中每个值都减去了 dmin 吗?不确定这是否是正确的术语,但我认为这是一种“矢量化”方法?
更新
有没有办法让这个修改数组到位?那不是返回数组的副本,而是让函数获取数组并修改原始数组?