基于数据归一化以及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 Django模板的使用方法(图文)
Nov 04 Python
Python中的index()方法使用教程
May 18 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
解决python tkinter界面卡死的问题
Jul 17 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
Python concurrent.futures模块使用实例
Dec 24 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
Jul 27 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
解析python中的jsonpath 提取器
Jan 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
php 过滤器实现代码
2010/08/09 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
九月份红领巾广播稿
2014/01/22 职场文书
全国道德模范事迹
2014/02/01 职场文书
党员年终个人总结
2015/02/14 职场文书
小学班主任教育随笔
2015/08/15 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
Python 语言实现六大查找算法
2021/06/30 Python