基于数据归一化以及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 文件读写操作实例详解
Mar 12 Python
python中字典dict常用操作方法实例总结
Apr 04 Python
python获取元素在数组中索引号的方法
Jul 15 Python
Django实现自定义404,500页面教程
Mar 26 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
python return逻辑判断表达式实现解析
Dec 02 Python
django model通过字典更新数据实例
Apr 01 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
基于python实现操作redis及消息队列
Aug 27 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/10/09 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
为指定元素增加样式的js代码
2009/12/09 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
Python之re操作方法(详解)
2017/06/14 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
Django中的用户身份验证示例详解
2019/08/07 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
MySQL面试题
2014/01/12 面试题
测绘工程系学生的自我评价
2013/11/30 职场文书
大学自荐信
2013/12/12 职场文书
大学生入党思想汇报
2014/01/14 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
村道德模范事迹材料
2014/08/28 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
2014年药房工作总结
2014/11/22 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
开幕式邀请函
2015/01/31 职场文书
运动会广播稿100字
2015/08/19 职场文书
中学生运动会广播稿
2015/08/19 职场文书
小学生反邪教心得体会
2016/01/15 职场文书