特征工程2:归一化与标准化

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

· 特征预处理是什么?

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

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

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

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

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

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

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

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

1、 归一化

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

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

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

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. 当算法涉及到距离运算时,必须先使用归一化或标准化进行标准缩放,由于对于异常数据的反应不同,标准化的使用更广泛。

原文地址:https://www.cnblogs.com/chaofan-/p/11044710.html

时间: 2024-08-02 12:00:03

特征工程2:归一化与标准化的相关文章

第二节 数值型特征进行归一化或标准化处理

数值型特征处理:通过特定的统计方法将数据转换成算法要求的数据,归一化和标准化 # 归一化的计算公式决定了其对异常值很敏感,一旦出现异常值会导致鲁棒性较差,所以归一化只适合传统精确小数据场景 from sklearn.preprocessing import MinMaxScaler def mm(): # feature_range指定归一化后的数据范围,不指定就是0-1之间 mm = MinMaxScaler(feature_range=(2, 3)) # fit_transform接收数组

使用sklearn做单机特征工程

目录 1 特征工程是什么?2 数据预处理 2.1 无量纲化 2.1.1 标准化 2.1.2 区间缩放法 2.1.3 标准化与归一化的区别 2.2 对定量特征二值化 2.3 对定性特征哑编码 2.4 缺失值计算 2.5 数据变换 2.6 回顾3 特征选择 3.1 Filter 3.1.1 方差选择法 3.1.2 相关系数法 3.1.3 卡方检验 3.1.4 互信息法 3.2 Wrapper 3.2.1 递归特征消除法 3.3 Embedded 3.3.1 基于惩罚项的特征选择法 3.3.2 基于树

特征工程之特征预处理

在前面我们分别讨论了特征工程中的特征选择与特征表达,本文我们来讨论特征预处理的相关问题.主要包括特征的归一化和标准化,异常特征样本清洗与样本数据不平衡问题的处理. 1. 特征的标准化和归一化  由于标准化和归一化这两个词经常混用,所以本文不再区别标准化和归一化,而通过具体的标准化和归一化方法来区别具体的预处理操作. z-score标准化:这是最常见的特征预处理方式,基本所有的线性模型在拟合的时候都会做 z-score标准化.具体的方法是求出样本特征x的均值mean和标准差std,然后用(x-me

快速入门特征工程

有一句话在业界广为流传:特征工程决定了模型的上界,调参决定模型能够有多逼近这个上界. 这里以sklearn为例讲讲特征工程. 一图概览特征工程 虽然说分了这么多部分,但特征工程最重要的部分还是特征处理,特征处理主要包含三个方面,特征预处理,特征选择和降维度. 数据预处理 数据预处理一方面把特征转为合适的编码喂给我们学习算法,另一方面就是把数据都转化到一个同一个规格.我们平时会用公制单位,那么对于特征也要转化到这样的公制单位.都是身高体重的数据,转化到公制下比较方便. 无量纲化 即把特征转化到"公

关于特征工程的一些学习、思考与错误的纠正

特征工程的整体思路: 1. 对于特征的理解.评估 2. 特征处理: 2.1 特征处理 2.1.1 特征清洗 清洗异常.采样 2.1.2 预处理 单特征情况:归一化.离散化.哑变量编码.缺失值填充等.数据变换例如log服从正态分布. 多特征情况: 降维:PCA.LDA(这个不太了解.待学习) 特征选择:三种大方法,Filter--x与y之间的关联,Wrapper--目标函数检验(MSE),Embedded--机器学习方法,正则化.决策树.深度学习. 3. 特征监控 有效性分析和监控. Python

sklearn特征工程

目录 一.    特征工程是什么?    2 ①特征使用方案    3 ②特征获取方案    4 ③特征处理    4 1.    特征清洗    4 2.    数据预处理    4 3.    特征监控    4 二.    数据预处理    5 1.    无量纲化    5 1.1标准化    5 1.2区间缩放法    7 1.3归一化方法有两种    7 2.    对定量特征二值化    8 1.    为什么要对定量特征二值化?    8 2.    对定量特征二值化的方法   

Python数据挖掘—特征工程—数据处理

概念: 特征工程:本质上是一项工程活动,他目的是最大限度地从原始数据中提取特征以供算法和模型使用 特征工程的重要性:特征越好,灵活性越强.模型越简单.性能越出色. 特征工程包括:数据处理.特征选择.维度压缩 量纲不一: 就是单位,特征的单位不一致,不能放在一起比较 通过:0-1标准化.Z标准化.Normalizer归一化 数据处理-归一化: 1 import pandas 2 3 data=pandas.read_csv( 4 "C:\\Users\\Jw\\Desktop\\python_wo

数据挖掘——特征工程

特征工程(Feature Engineering) 特征工程其本质上是一项工程活动,它的目的是最大限度地从原始数据中提取特征以供算法和模型使用. 特征工程的重要性: 特征越好,灵活性越强 特征越好,模型越简单 特征越好,性能越出色 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.特征工程的最终目的就是提升模型的性能. 特征工程包括:数据处理.特征选择.维度压缩三大方面的内容. 1.数据处理:量纲不一.虚拟变量.缺失值填充 1.1.量纲不一 量纲就是单位,特征的单位不一致就不能放在一

1. 特征工程之特征预处理

1. 前言 "数据决定了机器学习的上限,而算法只是尽可能逼近这个上限",这里的数据指的就是经过特征工程得到的数据.特征工程指的是把原始数据转变为模型的训练数据的过程,它的目的就是获取更好的训练数据特征,使得机器学习模型逼近这个上限.特征工程能使得模型的性能得到提升,有时甚至在简单的模型上也能取得不错的效果.特征工程在机器学习中占有非常重要的作用,主要包括数据与特征预处理.特征选择和数据的降维三部分.接下去会通过3篇文章对这三方面进行介绍.今天首先讲讲数据与特征的预处理. 2. 数据与特