Standardization标准化:将特征数据的分布调整成标准正态分布,亦叫高斯分布,也就是使得数据的均值为0,方差为1
标准化的原因在于如果有些特征的方差过大,则会主导目标函数,从而使参数估计器无法正确地学习其他特征
标准化的过程为两步:去均值的中心化(均值变为0);方差的规模化(方差变为1)。
在sklearn.preprocessing中提供了一个scale的方法,可以实现以上功能。
from sklearn import preprocessing
import numpy as np
x = np.array([[1.,-1.,2.],
[2.,0.,0.],
[0.,1.,-1.]])
#将每一列特征标准化为标准特征分布,注意,标准化是针对每一列而言的
x_scale = preprocessing.scale(x)
x_scale
array([[ 0. , -1.22474487, 1.33630621],
[ 1.22474487, 0. , -0.26726124],
[-1.22474487, 1.22474487, -1.06904497]])
可以查看标准化后数据的均值和方差,已经变成0,1了
axis=0表示对每一列
x_scale.mean(axis=0)
array([0., 0., 0.])
axis=1表示对