数据的归一化处理

数据的标准化(normalization)和归一化

数据的标准化

  数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

目前数据标准化方法:直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循。

归一化

数据标准化中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。
归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,且sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。归一化是统一在0-1之间的统计概率分布,当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。另外在数据中常存在奇异样本数据,奇异样本数据存在所引起的网络训练时间增加,并可能引起网络无法收敛。为了避免出现这种情况及后面数据处理的方便,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。

归一化的目标

1 把数变为(0,1)之间的小数
2 把有量纲表达式变为无量纲表达式

归一化的好处

1. 提升模型的收敛速度

2.提升模型的精度

常见的数据归一化方法

最常用的是 min-max标准化 和 z-score 标准化。

min-max标准化

是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:

其中max为样本数据的最大值,min为样本数据的最小值。

def Normalization(x):
    return [(float(i)-min(x))/float(max(x)-min(x)) for i in x]

如果想要将数据映射到[-1,1],则将公式换成:

x* = x* * 2 -1

或者进行一个近似

x* = (x - x_mean)/(x_max - x_min), x_mean表示数据的均值。

def Normalization2(x):
    return [(float(i)-np.mean(x))/(max(x)-min(x)) for i in x]

这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

ps: 将数据归一化到[a,b]区间范围的方法:

(1)首先找到原本样本数据X的最小值Min及最大值Max
(2)计算系数:k=(b-a)/(Max-Min)
(3)得到归一化到[a,b]区间的数据:Y=a+k(X-Min)  或者 Y=b+k(X-Max)

即一个线性变换,在坐标上就是求直线方程,先求出系数,代入一个点对应的值(x的最大/最小就对应y的最大/最小)就ok了。

z-score 标准化(zero-mean normalization)

参考:

https://blog.csdn.net/Orange_Spotty_Cat/article/details/80312154

https://blog.csdn.net/pipisorry/article/details/52247379

log函数转换

通过以10为底的log函数转换的方法同样可以实现归一下,具体方法如下:

使用注意:max为样本数据最大值,并且所有的数据都要大于等于1。

atan函数转换

通过反正切函数也可以实现数据的归一化:

使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上,而并非所有数据标准化的结果都映射到[0,1]区间上。

原文地址:https://www.cnblogs.com/-wenli/p/11234878.html

时间: 2024-10-10 17:23:15

数据的归一化处理的相关文章

转:数据标准化/归一化normalization

转自:数据标准化/归一化normalization 这里主要讲连续型特征归一化的常用方法.离散参考[数据预处理:独热编码(One-Hot Encoding)]. 基础知识参考: [均值.方差与协方差矩阵] [矩阵论:向量范数和矩阵范数] 数据的标准化(normalization)和归一化 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较

机器学习笔记:为什么要对数据进行归一化处理?

文章来自知乎,作者hit nlper 忆臻 转自:https://zhuanlan.zhihu.com/p/27627299 在喂给机器学习模型的数据中,对数据要进行归一化的处理. 为什么要进行归一化处理,下面从寻找最优解这个角度给出自己的看法. 例子 假定为预测房价的例子,自变量为面积,房间数两个,因变量为房价. 那么可以得到的公式为: 其中代表房间数,代表变量前面的系数. 其中代表面积,代表变量前面的系数. 首先我们祭出两张图代表数据是否均一化的最优解寻解过程. 未归一化: 归一化之后 为什

为什么一些机器学习模型需要对数据进行归一化?

为什么一些机器学习模型需要对数据进行归一化? http://www.cnblogs.com/LBSer/p/4440590.html 针对这个问题参考了wiki的解释:http://en.wikipedia.org/wiki/Feature_scaling.“归一化后有两个好处:1)归一化后加快了梯度下降求最优解的速度:2)归一化有可能提高精度”. 1 归一化为什么能提高梯度下降法求解最优解的速度? 斯坦福机器学习视频做了很好的解释:https://class.coursera.org/ml-0

数据的归一化和标准化

归一化: ----把数据变成(0,1)之间的小数 ----把有量纲表达式变成无量纲表达式 归一化算法有: 1.线性转化: y=(x-MinValue)/(MaxValue-MinValue) 2.对数函数转化:y=log10(x) 3.反余切函数转换:  y=arctan(x)*2/PI --------------------------------------------------------------------------- 规范化: ----把数据按比例缩放,使之落入一个小的空间里

Pandas(python)数据处理:只对某一列DataFrame数据进行归一化

处理数据要用到Pandas,但是没有学过,不知道是否有直接对某一列归一化的方法调用.自己倒弄了下.感觉还是比较麻烦. 使用Pandas读取到数组之后想把其中的'MonthlyIncome'一列进行归一化,网上的栗子都是对整个dataframe进行归一化,因为我的数据有些列是类别,不能使用: import pandas as pd import numpy as np #加载数据 #cvs df = pd.read_csv("train1.csv") #规格化 s = (df['Mont

关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化

一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std  计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1. 实现时,有两种不同的方式: 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 >>> from skle

[Scikit-Learn] - 数据预处理 - 归一化/标准化/正则化

reference: http://www.cnblogs.com/chaosimple/p/4153167.html 一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std  计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1. 实现时,有两种不同的方式: 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化. 1

Matlab中的数据预处理-归一化(mapminmax)与标准化(mapstd)

一.mapminmax Process matrices by mapping row minimum and maximum values to [-1 1] 意思是将矩阵的每一行处理成[-1,1]区间,此时对于模式识别或者其他统计学来说,数据应该是每一列是一个样本,每一行是多个样本的同一维,即对于一个M*N的矩阵来说,样本的维度是M,样本数目是N,一共N列N个样本. 其主要调用形式有: 1. [Y,PS] = mapminmax(X,YMIN,YMAX) 2. [Y,PS] = mapmin

使用sklearn进行数据预处理 —— 归一化/标准化/正则化

一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std  计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1. 实现时,有两种不同的方式: 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 >>> from skle