数据特征 归一化/标准化 方法

归一化/标准化 定义

  • 归一化:就是将训练集中数值特征的值缩放到0和1之间。公式如下
    在这里插入图片描述
  • 标准化:就是将训练集中数值特征的值缩放成均值为0,方差为1的状态。公式如下
    需要先计算出均值和标准差,下面是标准差的计算公式
    在这里插入图片描述
    μ表示均值,x*表示标准化的表达式
    在这里插入图片描述

优点

  • 加快了梯度下降求最优解的速度。

例子如下,左图代表没处理过的数据,最优解的求值可能会比较缓慢,例子如下,左图代表没处理过的数据,最优解的求值可能会比较缓慢,而右图是归一化后的,明显收敛速度更快。
在这里插入图片描述

  • 提升模型精度

例如,在KNN类算法中。我们需要计算每个点与分类点之间的距离,当我们没有进行归一化操作的时候,取值范围大的特征占据主导因素,导致其他特征的影响极小,这样会影响到最后的结果。

什么情况下必须进行标准化/归一化?

  • 当你的损失函数,有L1或者L2惩罚项时,必须使用标准化/归一化,因为不用正则时,我们的损失函数只是仅仅在度量预测与真实的差距,加上正则后,我们的损失函数除了要度量上面的差距外,还要度量参数值是否足够小。而参数值的大小程度或者说大小的级别是与特征的数值范围相关的。
  • Kmeans,KNN一些涉及到距离有关的算法,或者聚类的话,都是需要先做变量标准化的。
  • 调用SVM的RBF内核和PCA算法

怎么进行标准化/归一化?

这里我们引用sklearn中自带的数据,来进行操作
导入数据

from sklearn.datasets import load_iris
iris = load_iris()
iris.data

标准化

from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(iris.data)

归一化

from sklearn.preprocessing import MinMaxScaler
MinMaxScaler().fit_transform(iris.data)

另外,我们要先拆分出test集,不要在整个数据集上做标准化,因为那样会将test集的信息引入到训练集中,这是一个非常容易犯的错误!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值