sklearn数据预处理:归一化、标准化

归一化:

1、把数变为(0,1)之间的小数
主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。
2、把有量纲表达式变为无量纲表达式
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。

归一化算法有:

1.线性转换

   y=(x-MinValue)/(MaxValue-MinValue)

2.对数函数转换:

     y=log10(x)

3.反余切函数转换

     y=atan(x)*2/PI

4.线性也与对数函数结合

     式(1)将输入值换算为[-1,1]区间的值,

     在输出层用式(2)换算回初始值,其中和分别表示训练样本集中负荷的最大值和最小值。

标准化/规范化:

数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。

标准化算法有:

1.z-score标准化(或零-均值标准化)(常用)

 y=(x-X的平均值)/X的标准差=(x-mean)/std 

  优点:当X的最大值和最小值未知,或孤立点左右了最大-最小规范化时,该方法有用

2.最小-最大规范化(线性变换)

   y=( (x-MinValue) / (MaxValue-MinValue) )(new_MaxValue-new_MinValue)+new_minValue

3.小数定标规范化:通过移动X的小数位置来进行规范化

  y= x/10的j次方  (其中,j使得Max(|y|) <1的最小整数

4.对数Logistic模式:

    新数据=1/(1+e^(-原数据))

5.模糊量化模式:

    新数据=1/2+1/2sin[派3.1415/(极大值-极小值)*(X-(极大值-极小值)/2) ]       X为原数据

用sklearn实现:

 1.z-score:

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

将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。

实现时,有两种不同的方式:

  • 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化。

import numpy as np
from sklearn.preprocessing import scale
X = np.array([[ 1., -1.,  2.], 
              [ 2.,  0.,  0.],
              [ 0.,  1., -1.]])
X_scaled = scale(X)
print X_scaled
#[[ 0.         -1.22474487  1.33630621]
# [ 1.22474487  0.         -0.26726124]
# [-1.22474487  1.22474487 -1.06904497]]
print X_scaled.mean(axis = 0)
#[ 0.  0.  0.]
print X_scaled.std(axis = 0)
#[ 1.  1.  1.]
  • 使用sklearn.preprocessing.StandardScaler类,使用该类的好处在于可以保存训练集中的参数(均值、方差)直接使用其对象转换测试集数据。

  • import numpy as np
    from sklearn.preprocessing import StandardScaler
    X = np.array([[ 1., -1.,  2.], 
                  [ 2.,  0.,  0.],
                  [ 0.,  1., -1.]])
    scaler = StandardScaler().fit(X)
    print scaler
    #StandardScaler(copy=True, with_mean=True, with_std=True)
    print scaler.mean_
    #[ 1.          0.          0.33333333]
    print scaler.std_
    #[ 0.81649658  0.81649658  1.24721913]
    print scaler.transform(X)
    #[[ 0.         -1.22474487  1.33630621]
    # [ 1.22474487  0.         -0.26726124]
    # [-1.22474487  1.22474487 -1.06904497]]

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值