数据预处理:归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)代码实现

1、 概念

   归一化: 1)把数据变成(0,1)或者(1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。2)把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。
           公式如下(Min-max Normalization):

                  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规范化):
                           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.   使用距离,协方差计算时,提高模型的精度(使不同量纲和数量级的数据可以进行比较和加权)

归一化前
归一化后
    数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锦鲤AI幸运

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值