基于数据归一化以及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判断变量是否已经定义的方法
Aug 18 Python
python查询mysql中文乱码问题
Nov 09 Python
python查看zip包中文件及大小的方法
Jul 09 Python
Python基于pycrypto实现的AES加密和解密算法示例
Apr 10 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
python 拼接文件路径的方法
Oct 23 Python
深入了解Python在HDA中的应用
Sep 05 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
PyTorch的torch.cat用法
Jun 28 Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 Python
Python学习之time模块的基本使用
Jan 17 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
Yii框架日志记录Logging操作示例
2018/07/12 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
原生小程序封装跑马灯效果
2020/10/21 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
python flask实现分页的示例代码
2018/08/02 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
旅游文化节策划方案
2014/06/06 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
python办公自动化之excel的操作
2021/05/23 Python