四种标准化方法

1、标准化(Z-Score),或者去除均值和方差缩放

公式为:(X-mean)/std  计算时对每个属性/每列分别进行。

将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在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_scaled = preprocessing.scale(X)
 
>>> 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.])

 

调用fit方法,根据已有的训练数据创建一个标准化的转换器


scaler = preprocessing.StandardScaler().fit(x)

scaler
StandardScaler(copy=True, with_mean=True, with_std=True)


 使用上面这个转换器去转换训练数据x,调用transform方法
scaler.transform(x)


array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])

 好了,比如现在又来了一组新的样本,也想得到相同的转换
new_x = [[-1., 1., 0.]]
scaler.transform(new_x)
array([[-2.44948974,  1.22474487, -0.26726124]])
 

另外,与StandardScaler 并列多还有其它多标准化方法:

2、MinMaxScaler,在MinMaxScaler中是给定了一个明确的最大值与最小值,数据会被规模化到[0,1]之间。它的计算公式如下:

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

X_scaled = X_std / (max - min) + min

用法:min_max_scaler = preprocessing.MinMaxScaler()

          x_minmax = min_max_scaler.fit_transform(x)

         x_minmax

 

3、MaxAbsScaler,原理与上面的很像,只是数据会被规模化到[-1,1]之间。也就是特征中,所有数据都会除以最大值。这个方法对那些已经中心化均值维0或者稀疏的数据有意义。

max_abs_scaler = preprocessing.MaxAbsScaler()

x_train_maxsbs = max_abs_scaler.fit_transform(x)

x_train_maxsbs

 

4、RobustScaler

当数据集中含有离群点,即异常值时,可以用z-score进行标准化,但是标准化后的数据并不理想,因为异常点的特征往往在标准化之后容易失去离群特征。此时可以用该方法针对离群点做标准化处理。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值