特征工程(特征抽取、特征处理、特征降维)之二。学习了统一数据量纲的两种方法——归一化和标准化。
1.1 特征预处理
是什么
通过一些转换函数将特征转换成更适合算法模型的特征数据的过程。
包含
数值型数据的无量纲化(统一量纲)。
归一化
标准化
Why?
特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其他的特征。
1.1.1 归一化
1.定义
通过对原始数据进行变换把数据映射到[0,1]之间。
2.公式
作用于每一列,max为一列的最大值,min为一列的最小值,X”为最终结果,Mx,Mi分别为指定区间值默认Mx为1,Mi默认为0
3.数据
要想对上述表格内的数据进行归一化处理,以第一列第一个数据90为例:
转化后变成1
同理可得:
4.API
怎么在Sklearn中使用:
Sklearn.preprocessing.MinMaxScaler(feature_range=[0,1]...) # 类
# (Sklearn下面有个preprocessing数据预处理,最小值最大值放缩器,范围[0,1])
MinMaxScaler.fit_transform(X)
# 对象,可以把数据传进来了
# 其中X:是numpy array格式的数据———二维数组,即[n_samples,n_features]n行样本,n列特征
# 返回值:转换后的形状相同的array
5.实操
数据集介绍:
(1) 读取数据集
(2) 实例化一个转换器类
这里默认范围是[0,1]
(3) 调用fit_transform对象
(4) 调整一下范围试试
6.局限性分析
归一化用的是数据最大值最小值,若存在异常值(一般出现在最大值、最小值处),结果就会受影响,故鲁棒性较差,只适合传统精确小数据。
怎么办?
1.1.2 标准化
1.定义
通过对原始数据进行变换把数据变换到均值为0,标准差为1的范围内。
2.公式
作用于每一列,mean为平均值,σ为标准差
标准差:离散/集中程度。标准差或方差越小,则距离平均值越近,离散程度越小。
所以回到刚才异常点的地方,我们再来看看标准化。
粉色为异常值,红色为平均值
3.API
Sklearn.preprocessing.StandardScaler()
# 处理后,对每列来说,所有数都聚集在均值为0附近,标准差为1
StandardScaler.fit_transform(X)
# X:numpy array格式,[n_samples,n_features]
# 返回值:转换后的形状相同的array
4.实操
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
优劣对比
对于归一化来说,若出现异常值,并影响到最大值最小值,那么结果会受影响;
对于标准化来说,若出现异常值,由于具有一定数据量,少量的异常值对于平均值的影响不大,从而方差改变较小.