数据的归一化处理和标准化处理

#值的归一化处理
 1) 数据为什么做归一化处理
    
解析: 

假设一个神经元有两个输入分别是x1和x2,权重分别是w1和w2,那么该神经元的信号加权求和为x1w1+x2w2。再假设x1属于[0~1],x2属于[100~1000],那么x2远远大于x1,那么x1w1就可以忽略不计,整个加权求和就只由x2w2来决定,小的信号就被淹没了!

  所以需要将x1和x2都要做数据归一化处理避免造成数据结果不准确

在算法中如果各列数据值相差过大,必须要做归一化处理(或标准化处理)

def autoNorm(dataSet):
    minVals = dataSet.min(0)#最大值
    maxVals = dataSet.max(0)#最小值
    ranges = maxVals - minVals#差值
    normDataSet = zeros(shape(dataSet))#生成一个大小与dataSet相同的纬度数组,空的
    m = dataSet.shape[0]#dataSet行数

    #数据归一化公式
    #newValue=(oldValue-min)/(max-min)
    normDataSet = dataSet - tile(minVals, (m,1))
    normDataSet = normDataSet/tile(ranges, (m,1))   #element wise divide
    return normDataSet, ranges, minVals

2)数据标准化处理

from sklearn.preprocessing import StandardScaler
# 标准化数据,保证每个维度的特征数据方差为1,均值为0。使得预测结果不会被某些维度过大的特征值而主导。
ss = StandardScaler()
X_train = ss.fit_transform(self.X_train)
X_test = ss.transform(self.X_test)

你可能感兴趣的:(学习笔记)