数据归一化可以提升模型收敛速度,加快梯度下降求解速度,提升模型精度,消除量纲得影响,简化计算
常用的归一化方式有min_max标准化和Z-Score标准化
当数据本身就服从正态分布时,使用z-score;
当有离群值时,使用z-score;min-max比较容易受利群值得影响.
#生成dataframe格式数据import numpy as npimport pandas as pddata = pd.DataFrame(np.arange(12).reshape(3,4),columns = list('abcd'))data#数据结果:a b c d0 0 1 2 31 4 5 6 72 8 9 10 11#最小最大归一化:min_max标准化#对所有列进行归一化min_max_norm1 = (data-data.min())/(data.max()-data.min())min_max_norm2 = data.apply(lambda x:(x-np.min(x))/(np.max(x)-np.min(x)))min_max_norm2#结果:a b c d0 0.0 0.0 0.0 0.01 0.5 0.5 0.5 0.52 1.0 1.0 1.0 1.0#对某一列进行归一化data['min_max_norm_d'] = (data['d']-data['d'].min())/(data['d'].max()-data['d'].min())data#结果:a b c d min_max_norm_d0 0 1 2 3 0.01 4 5 6 7 0.52 8 9 10 11 1.0#Z-Score 标准化 :将原来的数据转为符合均值为0,标准差为1的正态分布的新数据z_score1 = (data-data.mean())/data.std()z_score2 = data.apply(lambda x:(x-x.mean())/x.std())z_score2#结果:a b c d min_max_norm_d0 -1.0 -1.0 -1.0 -1.0 -1.01 0.0 0.0 0.0 0.0 0.02 1.0 1.0 1.0 1.0 1.0#使用sklearn库中的StandardScaler()进行归一化from sklearn import preprocessingzscore = preprocessing.StandardScaler()z_score = zscore.fit_transform(data)z_score#结果:array([[-1.22474487, -1.22474487, -1.22474487, -1.22474487, -1.22474487],[ 0. , 0. , 0. , 0. , 0. ],[ 1.22474487, 1.22474487, 1.22474487, 1.22474487, 1.22474487]])
