类:sklearn.preprocessing.StandardScaler
(copy=True, with_mean=True, with_std=True)
通过减去均值并缩放到单位变量来标准化特征。
公式:(x-mean)/std,mean为均值,std为方差,计算时对每个属性/每列分别进行。结果是对于每个属性/每列的数据服从均值为0,方差为1的分布。
实现方式有两种:
(1)使用sklearn.preprocessing.StandardScaler()类,使用该类可以保存训练数据集的参数(scale_,mean_,var_),然后直接使用其对象转换测试数据集
>>>import numpy as np
>>>from sklearn.preprocessing import preprocessing
>>>scaler=preprocessing.StandardScaler()
>>>iiii=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1,-1.]])
>>>jjjj=scaler.fit(iiii)
>>>jjjj
StandardScaler(copy=True,with_mean=True,with_std=True)
>>>jjjj.scale_
array([1., 0., 0.333333333])
>>>jjjj.var_
array([ 0.66666667, 0.66666667, 1.55555556])>>>jjjj.transform(iiii)
array([[ 0. , -1.22474487, 1.33630621], [ 1.22474487, 0. , -0.26726124], [-1.22474487, 1.22474487, -1.06904497]])
使用该对象对测试数据进行标准化
>>>jjjj.transform([[-1., 1., 0.]])
array([[-2.44948974, 1.22474487, -0.26726124]])
(2)使用sklearn.preprocessing.scale()函数,可以直接对给定数据进行标准化
>>>iiii=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1,-1.]])
>>>jjjj=preprocessing.scale(iiii)
>>>jjjj
array([[ 0. , -1.22474487, 1.33630621], [ 1.22474487, 0. , -0.26726124], [-1.22474487, 1.22474487, -1.06904497]])#处理后,数据的均值和方差
>>>jjjj.mean(axis=0)
array([0. , 0., 0.])
>>>jjjj.std(axis=0)
array([1. , 1., 1.])