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


Posted in Python onJuly 11, 2018

数据归一化:

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

为什么要做归一化:

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数组条件过滤filter函数使用示例
Jul 22 Python
python中urllib模块用法实例详解
Nov 19 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 #Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 #Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 #Python
Python实现识别图片内容的方法分析
Jul 11 #Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 #Python
python对离散变量的one-hot编码方法
Jul 11 #Python
Python基于多线程操作数据库相关问题分析
Jul 11 #Python
You might like
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP递归创建多级目录
2015/11/05 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
python线程池threadpool使用篇
2018/04/27 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
struct与class的区别
2014/02/03 面试题
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
话题作文之诚信
2019/11/28 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis
python b站视频下载的五种版本
2021/05/27 Python