基于数据归一化以及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中将阿拉伯数字转换成中文的实现代码
May 19 Python
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
Django中使用Celery的方法示例
Nov 29 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
python远程邮件控制电脑升级版
May 23 Python
python障碍式期权定价公式
Jul 19 Python
利用python3 的pygame模块实现塔防游戏
Dec 30 Python
详解Python 函数参数的拆解
Sep 02 Python
Python扫描端口的实现
Jan 25 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
drupal 代码实现URL重写
2011/05/04 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
JS跨域总结
2012/08/30 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python实现树形打印目录结构
2018/03/29 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
金士达面试非笔试
2012/03/14 面试题
经济信息管理专业大学生求职信
2013/09/27 职场文书
大学生个人简历中的自我评价
2013/12/27 职场文书
小学英语复习计划
2015/01/19 职场文书
检讨书范文
2015/01/27 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫