基于数据归一化以及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装饰器使用实例:验证参数合法性
Jun 24 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
python爬取网页转换为PDF文件
Jun 07 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
python把1变成01的步骤总结
Feb 27 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
详解python UDP 编程
Aug 24 Python
如何用Python徒手写线性回归
Jan 25 Python
Python基础详解之邮件处理
Apr 28 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基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
python语言使用技巧分享
2016/05/31 Python
Python守护线程用法实例
2017/06/23 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
最新结婚典礼主持词
2014/03/14 职场文书
企业法人代表任命书
2014/06/06 职场文书
政风行风建设责任书
2014/07/23 职场文书
验房委托书
2014/08/30 职场文书
党员个人剖析材料
2014/09/30 职场文书
建党伟业的观后感
2015/06/01 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
python如何将mat文件转为png
2022/07/15 Python