基于数据归一化以及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编程羊车门问题代码示例
Oct 25 Python
python pandas修改列属性的方法详解
Jun 09 Python
python3实现名片管理系统
Nov 29 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
python实现邮件自动发送
Aug 10 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
Nov 29 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 Python
详解Python yaml模块
Sep 23 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 Python
python 实现IP子网计算
Feb 18 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测试硬盘写入速度示例
2014/01/27 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
如何真正的了解python装饰器
2020/08/14 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
公司前台接待岗位职责
2013/12/03 职场文书
大学自我评价
2014/02/12 职场文书
安全目标责任书
2014/07/22 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
长城导游词400字
2015/01/30 职场文书
大学生入党自荐书
2015/03/05 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
母亲去世追悼词
2015/06/23 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
MySQL里面的子查询的基本使用
2021/08/02 MySQL