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] = mapminmax(X,FP)

3. Y = mapminmax('apply',X,PS)

4. X = mapminmax('reverse',Y,PS)

5. dx_dy = mapminmax('dx_dy',X,Y,PS)


对于1和2的调用形式来说,X是预处理的数据,Ymin和Ymax是期望的每一行的最小值与最大值,FP是一个结构体成员主要是FP.ymin, FP.ymax.这个结构体就可以代替Ymin和Ymax,1和2的处理效果一样,只不过参数的带入形式不同。

代码:

x=[2,3,4,5,6;7,8,9,10,11];

mapminmax(x,0,1)

fp.ymin=0;

fp.ymax=1;

mapminmax(x,fp) 

而对于3式,在模式识别或者统计学里,PS是训练样本的数据的映射,即PS中包含了训练数据的最大值和最小值,这里的X是测试样本,对于测试样本来说,预处理应该和训练样本一致即最大值和最小值应该是训练集的最大值与最小值。假设y是测试样本,一共两个测试样本,则代码如下:

x=[2,3,4,5,6;7,8,9,10,11];

y=[2,3;4,5];

[xx,ps]=mapminmax(x,0,1);

mapminmax('apply',y,ps)

对于4式,是预处理之后的数据进行反转得到原始数据。

x=[2,3,4,5,6;7,8,9,10,11];

y=[2,3;4,5];

[xx,ps]=mapminmax(x,0,1);

yy=mapminmax('apply',y,ps);

mapminmax('reverse',yy,ps)


对于5式,根据给定的矩阵X、标准化矩阵Y及映射PS,获取逆向导数(reverse derivative)。如果给定的X和Y是m行n列的矩阵,那么其结果dx_dy是一个1×n结构体数组,其每个元素又是一个m×n的对角矩阵。这种用法不常用,这里不再举例。

你可能感兴趣的:(Matlab中的数据预处理-归一化(mapminmax)与标准化(mapstd))