轉自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)