数据归一化mapminmax

#数据归一化
1、为什么要归一化?
把有量纲表达式变为无量纲表达式,数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。归一化主要是为了数据处理方便提出来的,把数据映射到 0 ~ 1 范围之内处理,更加便捷快速,是一种经过变换,化为无量纲的表达式,成为纯量。这样既保证了运算的便捷,又能凸现出物理量的本质含义。归一化的重要作用就是消除物理量取值与量纲差异的影响,为所有的物理量树立一个统一的标尺,在这个标尺下考虑试验数据的变化规律。归一化主要是消除量纲的影响

知乎上关于归一化给出了另一种解释
感觉这里举个小例子会更好一点,后期加上。
2、按样本归一化还是按特征归一化?
train_data=
[ 1 3 7
2 4 8]
每一列代表一个样本,每一行代表样本的一个特征。
首先,我认为数据应该按特征归一化,也就是按行归一化 。

3、训练样本和测试样本应该一起归一化还是各自归一化?
对于做回归来说,我感觉训练样本的输入和测试样本的输入应该放在一起归一化,训练样本的输出和测试样本的输出放在一块归一化。
因为样本的一行属于同一属性的,应该把所有输入放在一块归一化。
如果先对训练样本归一化,比如
rain_data=
[ 1 3 7
2 4 8]
再按照输入样本归一化的最大最小信息对测试样本进行归一化,显然,测试样本的9,10不属于1-7范围内,这样是不合理的。
test_data =
9 10
6 2
4、matlab函数对数据进行归一化、
一、基本用法
[y,ps] = mapminmax(x,ymin,ymax) % 这里如果不指定 ymin,ymax,则ymin默认为-1,ymax默认为1,如果对x归一化到0,1范围内,则[y,ps] = mapminmax(x,0,1)
mapminmax(data) 默认归一化范围为[-1,1],且对每一行做归一化。一定记住是对行进行归一化!!!
ps中记录的样本矩阵x中的信息,包括它记录了x的行数、x中各行的最大值与最小值等信息。
运行matlab代码:
x=[2,3,4,5,6;
7,8,9,10,11
6, 5, 4 ,5 ,7 ];
[xx,ps]=mapminmax(x,0,1);
运行后:
在这里插入图片描述
其实mapminmax是对x的各行进行y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;
y就是上面表格中各行的数值,即x按上面算法运算后的结果。
ps中记录的x运算前后的信息。xrows 表示x的行数,xmax表示x的各行的最大值,xmin表示x各行对应的最小值xrange表示x的各行的数值范围,yrows表示上面表格的行数,ymax指y的最大值。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/JGL121314/article/details/108740286