A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

常用数据标准化方法python实现

原文地址:https://blog.csdn.net/zzc15806/article/details/80712320
作者:zzc15806

数据标准化是机器学习、数据挖掘中常用的一种方法。包括我自己在做深度学习方面的研究时,数据标准化是最基本的一个步骤。数据标准化主要是应对特征向量中数据很分散的情况,防止小数据被大数据(绝对值)吞并的情况。另外,数据标准化也有加速训练,防止梯度爆炸的作用。下面是从李宏毅教授视频中截下来的两张图。



左图表示未经过数据标准化处理的loss更新函数,右图表示经过数据标准化后的loss更新图。可见经过标准化后的数据更容易迭代到最优点,而且收敛更快。

一、[0, 1] 标准化

[0, 1] 标准化是最基本的一种数据标准化方法,指的是将数据压缩到0~1之间。标准化公式如下,


x=x−min(x)max(x)−mix(x)x=x−min(x)max(x)−mix(x)


代码实现,
def MaxMinNormalization(x, min, max):    """[0,1] normaliaztion"""    x = (x - min) / (max - min)    return x
  • 1
  • 2
  • 3
  • 4

或者,

def MaxMinNormalization(x):    """[0,1] normaliaztion"""    x = (x - np.min(x)) / (np.max(x) - np.min(x))    return x
  • 1
  • 2
  • 3
  • 4
二、Z-score标准化

Z-score标准化是基于数据均值和方差的标准化化方法。标准化后的数据是均值为0,方差为1的正态分布。这种方法要求原始数据的分布可以近似为高斯分布,否则效果会很差。标准化公式如下,


x=x−meanstdx=x−meanstd


下面,我们看看为什么经过这种标准化方法处理后的数据为是均值为0,方差为1,


代码实现,
def ZscoreNormalization(x, mean_, std_):    """Z-score normaliaztion"""    x = (x - mean_) / std_    return x
  • 1
  • 2
  • 3
  • 4

或者,

def ZscoreNormalization(x):    """Z-score normaliaztion"""    x = (x - np.mean(x)) / np.std(x)    return x
  • 1
  • 2
  • 3
  • 4
【参考文献】

https://en.wikipedia.org/wiki/Feature_scaling

【转载】原文地址:https://blog.csdn.net/zzc15806/article/details/80712320


1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马