基于数据归一化以及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魔术方法详解
Feb 14 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python输出带颜色的字符串实例
Oct 10 Python
TensorFlow saver指定变量的存取
Mar 10 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Python中if有多个条件处理方法
Feb 26 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
python实现canny边缘检测
Sep 14 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 Python
python实现自动打卡的示例代码
Oct 10 Python
PyTorch中的torch.cat简单介绍
Mar 17 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 chmod 函数与批量修改文件目录权限
2010/05/10 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
php中require和require_once的区别说明
2014/02/27 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
PHP 图片处理
2020/09/16 PHP
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
django1.8使用表单上传文件的实现方法
2016/11/04 Python
python绘制多个曲线的折线图
2020/03/23 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
python2和python3哪个使用率高
2020/06/23 Python
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
求职教师自荐书
2014/06/19 职场文书
数学教育专业求职信
2014/07/22 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
信息技术国培研修日志
2015/11/13 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL