归一化和标准化是否改变数据分布的问题

您所在的位置:网站首页 数据标准化处理怎么做的 归一化和标准化是否改变数据分布的问题

归一化和标准化是否改变数据分布的问题

2024-07-05 11:24| 来源: 网络整理| 查看: 265

归一化和标准化关于是否改变原始数据分布的探讨 归一化归一化的目的归一化的优点常见的数据归一化方法 标准化 最近在做关于ECG的降噪实验,在数据处理过程中需要进行归一化的操作,因此对常见的标准化和归一化做一下总结。

归一化 归一化的目的 将数值变为(0,1)之间的小数把有量纲的表达式变为无量纲的表达式 归一化的优点 提升模型的收敛速度提升模型的精度深度学习中数据归一化可以防止模型梯度爆炸 常见的数据归一化方法 min-max归一化: x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x^{'}=\frac{x-min(x)}{max(x)-min(x)} x′=max(x)−min(x)x−min(x)​

这种是对数据的数值范围进行特定缩放,但不改变其数据分布的一种线性特征变换

#min-max数据归一化 import numpy as np import matplotlib.pyplot as plt import numpy as np import scipy.io as sio import os import seaborn as sns #Seaborn是一种基于matplotlib的图形可视化python libraty。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。 import matplotlib font_set=matplotlib.font_manager.FontProperties(fname='C:\\Windows\\Fonts\\simsun.ttc') path="C:\\Users\OneDrive\matlab\data\mit_bih\\100_1hour.mat" ECG_all=[] data=sio.loadmat(path)#data读取出来是一个字典 data=data['sig'] x=data[180:1440] x_scale=(x-x.min())/(x.max()-x.min()) fig,ax=plt.subplots(1,2) sns.distplot(x,ax=ax[0]) ax[0].set_title('原始数据',fontproperties=font_set) sns.distplot(x_normal,ax=ax[1]) ax[1].set_title('归一化后数据',fontproperties=font_set) plt.show()

min-max归一化结果

z-score归一化: x ′ = x − μ σ x^{'}=\frac{x-\mu}{\sigma} x′=σx−μ​

将数值范围缩放到0附近,但没有改变数据分布

最常见的标准化方法就是Z标准化,也是SPSS中最为常见的标准化方法,SPSS默认的标准化方法就是z-score标准化,也叫标准差标准化,这种方法涉及原始数据的均值(mean)和标准差(standard deviation)

进过处理的数据符合标准正态分布,即均值为0,标准差为1,注意,一般来说z-score不是归一化,而是标准化,归一化只是标准化的一种

#z-score归一化 x_normal=(x-x.mean())/(x.std()) fig,ax=plt.subplots(1,2) sns.distplot(x,ax=ax[0]) ax[0].set_title('原始数据',fontproperties=font_set) sns.distplot(x_normal,ax=ax[1]) ax[1].set_title('z-score归一化后数据',fontproperties=font_set) plt.show()

z-score归一化

标准化

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

box-cox标准化: x ( λ ) = { x λ − 1 λ if  λ   / = 0 l n ( x ) if  λ = 0 x(\lambda)=\begin{cases}\frac{x^{\lambda}-1}{\lambda};\text{if }\lambda\mathrlap{\,/}{=}0 \\ ln(x) ;\text{if }\lambda=0 \end{cases} x(λ)={λxλ−1​ln(x)​if λ/​=0if λ=0​

katex编辑命令:{https://katex.org/docs/supported.html} 对数据的分布的进行转换,使其符合某种分布(比如正态分布)的一种非线性特征变换 [3]

from scipy import stats x=np.random.exponential(size=1000) x_normal=stats.boxcox(x)[0] fig,ax=plt.subplots(1,2) sns.distplot(x,ax=ax[0]) ax[0].set_title('原始数据',fontproperties=font_set) sns.distplot(x_normal,ax=ax[1]) ax[1].set_title('box-cox标准化后数据',fontproperties=font_set) plt.show()

box-cox标准化结果

参考文章: 1:Python绘图总结(seaborn篇)之数据分布 2:10分钟python图表绘制 | seaborn入门(一):distplot与kdeplot 3:标准化和归一化什么区别? 4:数据标准化/归一化normalization

.js/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3