基于数据归一化以及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中threading超线程用法实例分析
May 16 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
django将图片上传数据库后在前端显式的方法
May 25 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
Aug 10 Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
python 中xpath爬虫实例详解
Aug 26 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
python logging日志模块原理及操作解析
Oct 12 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 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/12/25 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
通过C++学习Python
2015/01/20 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
Sanic框架流式传输操作示例
2018/07/18 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
python交易记录链的实现过程详解
2019/07/03 Python
基于PyTorch中view的用法说明
2021/03/03 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
杭州联环马网络笔试题面试题
2013/08/04 面试题
面试后感谢信
2014/02/01 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android