基于数据归一化以及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显示进度条的方法
Sep 20 Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 Python
Python Django使用forms来实现评论功能
Aug 17 Python
遗传算法python版
Mar 19 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
Python实现在线批量美颜功能过程解析
Jun 10 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
在python中读取和写入CSV文件详情
Jun 28 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
js中的面向对象入门
2017/03/06 Javascript
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
用Python解数独的方法示例
2019/10/24 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
专升本自我鉴定
2013/10/10 职场文书
竞聘书格式及范文
2014/03/31 职场文书
法学求职信
2014/06/22 职场文书
社区服务活动小结
2014/07/08 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
党员承诺书范文2015
2015/04/27 职场文书
承诺书模板大全
2015/05/04 职场文书
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python