背景介绍
在对机器学习的数据进行预处理时,往往都需要归一化,从而避免因特征值范围不同而造成学习结果偏差。本节给出Python中将Numpy数组实现(0,1)归一化的代码,其它种类的归一化再遇到时再进行补充。
所谓(0,1)归一化,就是通过遍历feature vector里的每一个特征值的数据,将Max和Min的记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理。
详细代码
假设一个Numpy数组中每行都为一个样本,每列为一个特征,且只包含数据,没有包含标签,则在归一化时,只需将每列的最大和最小值取出来,然后用每个样本的特征值减去该特征值的最小值然后除以最大与最小特征值的差即可。
def maxminnorm(array): maxcols=array.max(axis=0) mincols=array.min(axis=0) data_shape = array.shape data_rows = data_shape[0] data_cols = data_shape[1] t=np.empty((data_rows,data_cols)) for i in xrange(data_cols): t[:,i]=(array[:,i]-mincols[i])/(maxcols[i]-mincols[i]) return t