#值的归一化处理 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)