基于数据归一化以及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 29 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 Python
Python分析学校四六级过关情况
Nov 22 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
Tensorflow卷积神经网络实例
May 24 Python
python skimage 连通性区域检测方法
Jun 21 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
python实现图片,视频人脸识别(opencv版)
Nov 18 Python
python图片灰度化处理的几种方法
Jun 23 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 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 shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
python 类详解及简单实例
2017/03/24 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
应届生高等护理求职信
2013/10/12 职场文书
口腔医学技术应届生求职信
2013/11/09 职场文书
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
25岁生日感言
2014/01/13 职场文书
小学体育教学反思
2014/01/31 职场文书
销售人员获奖感言
2014/02/05 职场文书
四年级语文教学反思
2014/02/05 职场文书
环保建议书作文
2014/03/12 职场文书
售房委托书
2014/08/30 职场文书
冰雪公主观后感
2015/06/16 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技