基于数据归一化以及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从ftp下载数据保存实例
Nov 20 Python
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 Python
Python中的自定义函数学习笔记
Sep 23 Python
python实现读Excel写入.txt的方法
Apr 29 Python
对pandas中Series的map函数详解
Jul 25 Python
python实现随机梯度下降法
Mar 24 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
selenium处理元素定位点击无效问题
Jun 12 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
tensorflow2.0教程之Keras快速入门
Feb 20 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 setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
php curl选项列表(超详细)
2013/07/01 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
jquery中取消和绑定hover事件的实现代码
2016/06/02 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
作文评语集锦大全
2014/04/23 职场文书
会计学自荐信
2014/06/03 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
蜗居观后感
2015/06/11 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书