MATLAB數據預處理-歸一化-mapminmax

轉自https://blog.csdn.net/hqh45/article/details/42965481網絡

在新版MATLAB中,使用BP神經網絡的premnmx函數會出現Warning: PREMNMX is an obsolete function. 的提示app

在新版MATLAB中,把舊函數premnmx 、postmnmx 、tramnmx換成新函數mapminmax函數

對於模式識別或者其餘統計學來講,訓練數據和測試數據應該是每一列是一個樣本,每一行是多個樣本的同一維,即對於一個M*N的矩陣來講,樣本的維度是M,一共N列N個樣本。post

其主要調用形式有:測試

1. [Y,PS] = mapminmax(X,YMIN,YMAX)spa

2. [Y,PS] = mapminmax(X,FP).net

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

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

對於1和2的調用形式來講,X是預處理的數據,Ymin和Ymax是指望的每一行的最小值與最大值,FP是一個結構體成員主要是FP.ymin, FP.ymax.這個結構體就能夠代替Ymin和Ymax,1和2的處理效果同樣,只不過參數的帶入形式不一樣。rem

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是測試樣本,對於測試樣原本說,預處理應該和訓練樣本一致,即測試樣本的最大值和最小值應該是訓練集的最大值與最小值。假設x是訓練樣本,y是測試樣本,則代碼以下:

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)

但對於訓練樣本和測試樣本,通常是將二者合起來一塊兒歸一化,例如要將train,test一塊兒歸一化:

[mtrain,ntrain]=size(train);
[mtest,ntest]=size(test);
dataset=[train;test];
[dataset_scale,ps]=mapminmax(dataset',0,1);
train=dataset_scale(1:mtrain,:);
test=dataset_scale((mtrain+1):(mtrain+mtest),:);

 

對於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);
y=mapminmax('reverse',yy,ps)
相關文章
相關標籤/搜索