基于数据归一化以及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 13 Python
Python实现八大排序算法
Aug 13 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
使用Python+Splinter自动刷新抢12306火车票
Jan 03 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
python关闭占用端口方式
Dec 17 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
Feb 07 Python
Python类和实例的属性机制原理详解
Mar 21 Python
详解Python中list[::-1]的几种用法
Nov 16 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 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
adodb与adodb_lite之比较
2006/12/31 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
四个PHP非常实用的功能
2015/09/29 PHP
php HTML无刷新提交表单
2016/04/05 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
js字符串操作方法实例分析
2015/05/06 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
微信小程序实现打卡日历功能
2020/09/21 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
浅谈Python数据类型之间的转换
2016/06/08 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
python 获取等间隔的数组实例
2019/07/04 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
JS原生实现轮播图的几种方法
2021/03/23 Javascript
优秀技术工人先进材料
2014/02/17 职场文书
亮化工程实施方案
2014/03/17 职场文书
项目建议书范文
2014/05/12 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书