归一化在机器学习算法中的应用

85 篇文章 5 订阅
58 篇文章 2 订阅

归一化的适用范围

距离类模型归一化的需求

什么是归一化呢?我们把X放到DataFrame中来看,可以观察到,每个特征的均值差异很大:有的特征数值很大,有的特征数值很小,这种现象在机器学习中被称为"量纲不统一"。NN是距离类模型,欧氏距离的计算公式中存在着特征上的平方和。如果某个特征?的取值非常大,距离的大小很大程度上都会由这个巨大特征?来决定,其他特征之间的距离可能就无法对AB两点之间的距离?(?, ?)的大小产生什么影响了,这种现象会让KNN这种距离类模型的效果大打折扣。
实际分析情景中,绝大多数数据集都会存在各特征值量纲不同的情况,此时若要使用KNN分类器,则需要先对数据集进行归一化处理,即将所有的数据压缩都同一个范围内。

preprocessing.MinMaxScaler

当数据x按照最小值中心化后,再按极差(最大值-最小值)缩放,数据移动了最小值个单位,并且会被收敛到[0,1]之间,而这个过程,就称作数据归一化(Normalization,又称Min-Max Scaling),格式如下:
x*=[x-min(x)]/[max(x)-min(x)]
sklearn 中, 用preprocessing.MinMaxScaler 来实现这个功能。MinMaxScaler 有一个重要参数,
feature_range,我们希望把数据压缩到控制的范围,默认是[0,1]。

先分数据集,再做归一化

归一化是使用数据中的最小值和极差在对数据进行压缩处理的,如果在全数据集上进行归一化,那么最小值和极差的选取就会参考到测试集中的数据了。
因此,如果没有事先划分数据集,则归一化后,无论如何分割数据,都会由一部分测试集的信息被"泄露" 给训练集(当然,也有部分训练集的信息被泄露给了测试集,但这种情况无关紧要),使模型的效果被高估。
在现实业务中,我们只知道训练集的数据,不了解测试集究竟会长什么样,所以要利用训练集上的最小值和极差来归一化测试集。

实现代码

#MinMaxScaler(归一化)
from sklearn.preprocessing import MinMaxScaler as mms
#将训练集归一化
Xtrain_ = mms().fit_transform(Xtrain)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值