归一化处理公式_特征工程2:归一化与标准化

43e0d2c3eed55f752f7edae9f8ea1288.png

归一化与标准化属于特征预处理的范畴

· 特征预处理是什么?

通过特定的数学统计方法将数据转化为算法要求的数据;
特征预处理在scikit-learn中的模块是:sklearn.preprocessing

对于不同的数据类型,有不同的处理方式,三种常见的数据类型:

  1. 数值型
  2. 类别型
  3. 时间类型

· 这里我们先看数值型的预处理:

标准缩放:有两种常见方式,归一化和标准化。

在特征较多时,并且认为这些特征同等重要,或者算法模型涉及到距离计算时(比如K近邻),为了防止某些特征的值对算法产生的影响过大,需要将特征数据缩放至某一个区间,这样比较起来才有意义,并且可以减少程序的计算量,加快速度。

举例说明:比如体型特征,数据如下,有身高和体重两个特征,计量单位分别是cm和kg

f388efe75623bcc3351fa3160bd1442d.png
如果我们要按体形特征将人群分类,找出王五的体型与谁最接近,并且认为身高和体重对于体型评判同等重要,由于身高和体重单位不同,身高的值较大,对结果的影响可能较大,所以需要将这两个特征缩放到同一个区间,这样每个特征对结果的影响是相同的。

1、 归一化

常用的归一化方法是:极差变换法,也称为min-max方法,通过线性变换将数据映射到[0,1]之间,变换公式是:

其中min是样本中最小值,max是样本中最大值,x为每一个特征的值

对应到示例中的数据,计算过程如下:

c528e4d5085135683b080c70c003661c.png

ed532cada704942efe5b35ab6f24ad7a.png

scikit-learn中归一化API是MinMaxScaler

使用方法如下:

# 归一化处理
from sklearn.preprocessing import MinMaxScaler
m = MinMaxScaler()
feature_data = [[172,60],
                [168,68],
                [165,65]]
data = m.fit_transform(data)
print(data)

输出结果:

array([[ 1.        ,  0.        ],
       [ 0.42857143,  1.        ],
       [ 0.        ,  0.625     ]])
归一化总结:从归一化的公式中,可以看出最大值最小值在计算过程起到的作用很大,因此计算结果特别容易受到异常数据的影响,所以这种方法的稳定性很差,只适用于数据精确的场景,但是现实中数据难免有异常,所以归一化很少被用到,为了避免异常数据对结果的影响,可以使用另一种方法:标准化。

2、 标准化

常用的标准化方法是:z-score,将数据转换到均值为0,标准差为1的范围内,公式如下:

作用于每一列,其中mean为特征的平均值,σ为标准差

scikit-learn中标准化的API是StandardScaler,使用方法与归一化类似,代码如下:

# 标准化处理
from sklearn.preprocessing import StandardScaler
m = StandardScaler()
data = [[172,60],
        [168,68],
        [165,65]]
stand_data = m.fit_transform(data)
print(stand_data)

输出结果:

array([[ 1.27872403, -1.31319831],
       [-0.11624764,  1.1111678 ],
       [-1.16247639,  0.20203051]])
标准化总结:标准化的应用场景非常广泛,在具有一定数据量的前提下,少量异常点对于平均值的影响不大,从而对于标准差的影响不大,进而对结果的影响也不大。

3、 归一化与标准化总结

1. 归一化和标准化本质上都是线性变换,线性变换的性质决定了对数据转换之后不会“失效”,反而还能提高数据的表现,因为线性变化不改变原始数据的数值排序;
2. 归一化的缩放是“拍扁”统一到区间(仅由极值决定),而标准化的缩放更加“弹性”和“动态”,与整体样本的分布有很大关系;
3. 归一化的输出范围在0-1之间,标准化的输出范围是负无穷到正无穷;
4. 当算法涉及到距离运算时,必须先使用归一化或标准化进行标准缩放,由于对于异常数据的反应不同,标准化的使用更广泛。

欢迎关注个人公众号

[活在一九八八]

6baa8e0132d094627f0f4e5dd56df3fd.png
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值