类: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
>>>import sklearn.preprocessing as 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.mean_
array([1. , 0. , 0.33333333])
>>>jjjj.scale_
array([0.81649658, 0.81649658, 1.24721913])
>>>jjjj.var_
array([0.6666667, 0.66666667, 1.55555556])
(2)使用sklearn.preprocessing.scale()函数,可以直接给定数据进行标准化。
>>>from sklearn import preprocessing
>>>import numpy as np
>>>x=np.array([[1., -1., 2.],[2., 0., 0.],[0., 1., -1.]])
>>>x_scaled=preprocessing.scale(x)
>>>x_scaled
array([[0., -1.22..., 1.33...],
[1.22..., 0., -0.26...],
[-1.22..., 1.22..., -1.06...]])
#处理后,数据的均值和方差分别为0和1
>>>x_scaled.mean(axis=0)
array([0., 0., 0.])
>>>x_scaled.std(axis=0)
array([1., 1., 1.])