数据预处理:归⼀化(Normalization)、标准化(Standardization)。。。
1、概念
归⼀化: 1)把数据变成(0,1)或者(1,1)之间的⼩数。主要是为了数据处理⽅便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。2)把有量纲表达式变成⽆量纲表达式,便于不同单位或量级的指标能够进⾏⽐较和加权。归⼀化是⼀种简化计算的⽅式,即将有量纲的表达式,经过变换,化为⽆量纲的表达式,成为纯量。
公式如下(Min-max Normalization):
def normalization(datas):#归⼀化
"""
X = (x - X_min) / (X_max - X_min)
"""
_range = np.max(datas)- np.min(datas)
return(datas - np.min(datas))/ _range
def normalization(datas):学雷锋手抄报模板
"""
如果归⼀化后的范围是[-1, 1]的情况
吉他介绍
"""
_range = np.max(abs(datas))
return datas / _range
标准化:在机器学习中,我们可能要处理不同种类的资料,例如,⾳讯和图⽚上的像素值,这些资料可能是⾼维度的,资料标准化后会使每个特征中的数值平均变为0(将每个特征的值都减掉原始资料中该特征的平均)、标准差变为1,这个⽅法被⼴泛的使⽤在许多机器学习算法中(例如:⽀持向量机、逻辑回归和类神经⽹络)。
公式如下如所⽰(Z-score规范化):
def standardization(datas):#标准化
"""
X = (x - µ)/σ
"""
mu = np.mean(datas, axis=0)
sigma = np.std(datas, axis=0)
饶恕的近义词
return(datas - mu)/ sigma
中⼼化:平均值为0,对标准差⽆要求。
公式如下(中⼼化):
def standardization(datas):#中⼼化
"""
欺负近义词X = (x - µ)
"""仗义执言的意思
恭喜发财英文mu = np.mean(datas, axis=0)
return(datas - mu)
2、三者的区别
归⼀化 和标准化 的区别:归⼀化是将样本的特征值转换到同⼀量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归⼀化的⼀种。标准化是依照特征矩阵的列处理数据,其通过求z-score的⽅法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产⽣影响。它们的相同点在于都能取消由于量纲不同引起的误差;都是⼀种线性变换,都是对向量X
按照⽐例压缩再进⾏平移。
标准化 和中⼼化 的区别:标准化是原始分数减去平均数然后除以标准差,中⼼化是原始分数减去平均数。 所以⼀般流程为先中⼼化再标准化。
⽆量纲:是通过某种⽅法能去掉实际过程中的单位,从⽽简化计算。
3、为什么要归⼀化/标准化?
归⼀化/标准化实质是⼀种线性变换,线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效”,反⽽能提⾼数据的表现,这些性质是归⼀化/标准化的前提。⽐如有⼀个很重要的性质:线性变换不会改变原始数据的数值排序。
简单来说有以下好处:
1. 由于原始数据值的范围差异很⼤,因此在某些机器学习算法中,如果没有归⼀化,⽬标函数将⽆法正常⼯作。例如,许多分类器通过
欧⼏⾥得距离来计算两点之间的距离。如果其中⼀个要素的取值范围较⼴,则该距离将受此特定要素⽀配。因此,所有特征的范围应归⼀化,以使每个特征对最终距离的贡献⼤致成⽐例。
2. 可以使得梯度下降收敛更快民部
3. 如果将正则化⽤作损失函数的⼀部分,则数据归⼀化也很重要(以便适当地对系数进⾏惩罚)
4. 使⽤距离,协⽅差计算时,提⾼模型的精度(使不同量纲和数量级的数据可以进⾏⽐较和加权)
数据归⼀化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。
上海姑娘