sklearn.preprocessing的部分用法

来源:互联网 发布:知乎社区 编辑:程序博客网 时间:2024/05/22 14:52

类:sklearn.preprocessing.StandardScaler(copy=Truewith_mean=Truewith_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.])