基于数据归一化以及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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Django接受前端数据的几种方法总结
Nov 04 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
PyTorch中的Variable变量详解
Jan 07 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
python matplotlib.pyplot.plot()参数用法
Apr 14 Python
Python并发编程实例教程之线程的玩法
Jun 20 Python
python playwright 自动等待和断言详解
Nov 27 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 Python
python解析json数据
Apr 29 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基于单例模式封装mysql类完整实例
2016/10/18 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
JS数组求和的常用方法实例小结
2019/01/07 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
Python 错误和异常代码详解
2018/01/29 Python
python计算列表内各元素的个数实例
2018/06/29 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
python+requests接口自动化框架的实现
2020/08/31 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
德国机车企业:FC-Moto
2017/10/27 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
2015年元旦文艺汇演主持词
2014/03/26 职场文书
银行求职信
2014/05/31 职场文书
模具专业求职信
2014/06/26 职场文书
单位证明范文
2015/06/18 职场文书
合作意向书范本
2019/04/17 职场文书