使用sklearn preprocessing进行数据预处理

在机器学习中,我们尽量的把数据转成均值为0,方差为1满足高斯分布的数据,这样的好处使得数据比较均衡,算法不会因为某一个奇异的数据值而更偏向某一个数据。但是实际的情况中,我们通常不会太多的考虑数据的分布情况,而是通过均值集中数据,然后除以他们的标准差。

一.标准化,减均值,按照方差等比缩放

    数据的标准化:当个体的特征明显不服从正态分布时,标准化表现的结果比较差。实际操作中,经常忽略数据的分布,通过减去数据的均值,通过标准差,实现数据的中心化。

1.使用sklearn中scale函数把数据按照行或列缩放到均值为0,方差为1,下面的代码是从sklearn中scale的标准用法截取的

from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])
X_scaled = preprocessing.scale(X_train)

X_scaled                                          
array([[ 0.  ..., -1.22...,  1.33...],
       [ 1.22...,  0.  ..., -0.26...],
       [-1.22...,  1.22..., -1.06...]])

X_scaled.mean(axis=0)
array([0., 0., 0.])

X_scaled.std(axis=0)
array([1., 1., 1.])

其中scale的函数原型如下:详细参考sklearn使用手册

klearn.preprocessing.scale(Xaxis=0with_mean=Truewith_std=Truecopy=True)

Parameters:

     X:待处理的数据

     axis = 0(按照列处理)/1(按照行处理),默认=0

     with_mean = True,在处理之前把数据去均值 

     with_std = True,在处理之前把数据除标准差

     copy = True,处理之后的数据,复制一份

2.使用sklearn中StandardScaler计算训练数据集的平均值和标准差,以方便测试数据集进行同样的变换,以下代码来自sklearn

scaler = preprocessing.StandardScaler().fit(X_train)
scaler
StandardScaler(copy=True, with_mean=True, with_std=True)

scaler.mean_                                      
array([1. ..., 0. ..., 0.33...])

scaler.scale_                                       
array([0.81..., 0.81..., 1.24...])

scaler.transform(X_train)                           
array([[ 0.  ..., -1.22...,  1.33...],
       [ 1.22...,  0.  ..., -0.26...],
       [-1.22...,  1.22..., -1.06...]])

X_test = [[-1., 1., 0.]]
scaler.transform(X_test)                
array([[-2.44...,  1.22..., -0.26...]])

 注意:scaler = preprocessing.StandardScaler().fit(X_train),只能按照列来减均值,除标准差

二:讲数据集特征缩放到指定的范围:

     1.MinMaxScaler进行缩放数据,通常我们指定区间为(0,1)

X_train = np.array([[ 1., -1.,  2.],
                     [ 2.,  0.,  0.],
                     [ 0.,  1., -1.]])

min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X_train)
X_train_minmax
array([[0.5       , 0.        , 1.        ],
       [1.        , 0.5       , 0.33333333],
       [0.        , 1.        , 0.        ]])

X_test = np.array([[-3., -1.,  4.]])
>>> X_test_minmax = min_max_scaler.transform(X_test)
>>> X_test_minmax
array([[-1.5       ,  0.        ,  1.66666667]])

也可以指定缩放的区间:MinMaxScaler = preprocessing.MinMaxScaler(feature_range=(1,2))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值