基于数据归一化以及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算法学习之基数排序实例
Dec 18 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
python读取LMDB中图像的方法
Jul 02 Python
3分钟学会一个Python小技巧
Nov 23 Python
python使用插值法画出平滑曲线
Dec 15 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
python腾讯语音合成实现过程解析
Aug 01 Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
如何用Python 加密文件
Sep 10 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 Python
Python IO文件管理的具体使用
Mar 20 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
重置版宣传动画
2020/04/09 魔兽争霸
php遍历目录viewDir函数
2009/12/15 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
python之wxPython菜单使用详解
2014/09/28 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
python集合常见运算案例解析
2019/10/17 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
模特职业生涯规划范文
2014/02/26 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
护理实习生带教计划
2015/01/16 职场文书
创业计划书之农家乐
2019/10/09 职场文书