基于数据归一化以及Python实现方式

 更新时间:2018年07月11日 10:20:06   作者:迷茫的脚  
今天小编就为大家分享一篇基于数据归一化以及Python实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

数据归一化:

数据的标准化是将数据按比例缩放,使之落入一个小的特定区间,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

为什么要做归一化:

1)加快梯度下降求最优解的速度

如果两个特征的区间相差非常大,其所形成的等高线非常尖,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛。

2)有可能提高精度

一些分类器需要计算样本之间的距离,如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

归一化类型

1)线性归一化

这种归一化比较适用在数值比较集中的情况,缺陷就是如果max和min不稳定,很容易使得归一化结果不稳定,使得后续的效果不稳定,实际使用中可以用经验常量来代替max和min。

2)标准差标准化

经过处理的数据符合标准正态分布,即均值为0,标准差为1。

3)非线性归一化

经常用在数据分化较大的场景,有些数值大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括log、指数、反正切等。需要根据数据分布的情况,决定非线性函数的曲线。

log函数:x = lg(x)/lg(max)

反正切函数:x = atan(x)*2/pi

Python实现

线性归一化

定义数组:x = numpy.array(x)

获取二维数组列方向的最大值:x.max(axis = 0)

获取二维数组列方向的最小值:x.min(axis = 0)

对二维数组进行线性归一化:

def max_min_normalization(data_value, data_col_max_values, data_col_min_values):
""" Data normalization using max value and min value

Args:
 data_value: The data to be normalized
 data_col_max_values: The maximum value of data's columns
 data_col_min_values: The minimum value of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]

for i in xrange(0, data_rows, 1):
 for j in xrange(0, data_cols, 1):
  data_value[i][j] = \
   (data_value[i][j] - data_col_min_values[j]) / \
   (data_col_max_values[j] - data_col_min_values[j])

标准差归一化

定义数组:x = numpy.array(x)

获取二维数组列方向的均值:x.mean(axis = 0)

获取二维数组列方向的标准差:x.std(axis = 0)

对二维数组进行标准差归一化:

def standard_deviation_normalization(data_value, data_col_means,
         data_col_standard_deviation):
""" Data normalization using standard deviation

Args:
 data_value: The data to be normalized
 data_col_means: The means of data's columns
 data_col_standard_deviation: The variance of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]

for i in xrange(0, data_rows, 1):
 for j in xrange(0, data_cols, 1):
  data_value[i][j] = \
   (data_value[i][j] - data_col_means[j]) / \
   data_col_standard_deviation[j]

非线性归一化(以lg为例)

定义数组:x = numpy.array(x)

获取二维数组列方向的最大值:x.max(axis=0)

获取二维数组每个元素的lg值:numpy.log10(x)

获取二维数组列方向的最大值的lg值:numpy.log10(x.max(axis=0))

对二维数组使用lg进行非线性归一化:

def nonlinearity_normalization_lg(data_value_after_lg,
        data_col_max_values_after_lg):
""" Data normalization using lg

Args:
 data_value_after_lg: The data to be normalized
 data_col_max_values_after_lg: The maximum value of data's columns
"""

data_shape = data_value_after_lg.shape
data_rows = data_shape[0]
data_cols = data_shape[1]

for i in xrange(0, data_rows, 1):
 for j in xrange(0, data_cols, 1):
  data_value_after_lg[i][j] = \
   data_value_after_lg[i][j] / data_col_max_values_after_lg[j]

以上这篇基于数据归一化以及Python实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python动态属性与反射机制方式

    Python动态属性与反射机制方式

    深入探索Python中的反射机制和动态属性的细节,对我们来说是编写具有适应性和高可扩展性程序的关键,本篇文章旨在通过详尽的概念介绍和精心设计的代码示例,加强您对这些核心概念的把握,并助您在实践中运用自如
    2024-06-06
  • python自定义模块使用.pth文件实现重用方式

    python自定义模块使用.pth文件实现重用方式

    这篇文章主要介绍了python自定义模块使用.pth文件实现重用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Pandas Shift函数的基础入门学习笔记

    Pandas Shift函数的基础入门学习笔记

    shift函数是对数据进行移动的操作,下面这篇文章主要给大家介绍了关于Pandas Shift函数的基础入门学习笔记,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-11-11
  • python批量修改xml文件中的信息

    python批量修改xml文件中的信息

    大家好,本篇文章主要讲的是python批量修改xml文件中的信息,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下的相关资料
    2022-01-01
  • python接口自动化使用requests库发送http请求

    python接口自动化使用requests库发送http请求

    这篇文章主要介绍了python接口自动化使用requests库发送http请求,HTTP协议 ,一个基于TCP/IP通信协议来传递数据,包括html文件、图像、结果等,即是一个客户端和服务器端请求和应答的标准
    2022-08-08
  • 解决python 执行sql语句时所传参数含有单引号的问题

    解决python 执行sql语句时所传参数含有单引号的问题

    这篇文章主要介绍了解决python 执行sql语句时所传参数含有单引号的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python中常见的几种音频数据读取、保存方式总结

    python中常见的几种音频数据读取、保存方式总结

    Python是一种非常适合进行音频处理和音频分析的语言,因为它有许多强大的库可以使用,下面这篇文章主要给大家介绍了关于python中常见的几种音频数据读取、保存方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • python实现字符串完美拆分split()的方法

    python实现字符串完美拆分split()的方法

    今天小编就为大家分享一篇python实现字符串完美拆分split()的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python 制作python包,封装成可用模块教程

    python 制作python包,封装成可用模块教程

    这篇文章主要介绍了python 制作python包,封装成可用模块教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python实现简易信息分类存储软件

    Python实现简易信息分类存储软件

    这篇文章主要介绍的是通过Python制作一个简易的文件分类存储文件,可以实现信息的增删改查以及内容的导出和回复,文中的示例代码对我们的学习有一定的价值,感兴趣的同学可以了解一下
    2021-12-12

最新评论