数据预处理之 标准化/正则化 处理

前端之家收集整理的这篇文章主要介绍了数据预处理之 标准化/正则化 处理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

标准化(Scale)和正则化(Normalization)是两种常用的数据预处理方法,其作用是让数据变得更加“规范”一些在文本聚类等任务中使用的比较多。

针对某数据,如果不适用数据标准化、正则化,展示的情况如下图

1.数据标准化

公式为:(X-mean)/std 计算时对每个属性/每列分别进行。将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。经过数据标准化的数据如下图:可以看到有些特征被凸显出来了。


2.数据正则化

正则化的过程是将每个样本缩放到单位范数(每个样本的范数为1),如果后面要使用如二次型(点积)或者其它核方法计算两个样本之间的相似性这个方法会很有用。

Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。

p-范数的计算公式:||X||p=(|x1|^p+|x2|^p+...+|xn|^p)^1/p

方法主要应用于文本分类和聚类中。例如,对于两个TF-IDF向量的l2-norm进行点积,就可以得到这两个向量的余弦相似性。


在sklearn中有三种正则化方法,l1范数、l2范数、max范数。

使用这三种范数生成的结果如下图所示:

在肉眼上很难看出有什么区别,不过还是能看出l2范数的结果相对更好,即能尽可能的削弱“强势”特征,将一些数值较小但是比较有特点的特征“凸显”出来。

使用方法参照sklearn官方文档就可以了,非常简单:

http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.scale.html#sklearn.preprocessing.scale

http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.normalize.html#sklearn.preprocessing.normalize

猜你在找的正则表达式相关文章