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


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

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

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

對於模式識別或者其他統計學來說,訓練數據和測試數據應該是每一列是一個樣本,每一行是多個樣本的同一維,即對於一個M*N的矩陣來說,樣本的維度是M,一共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)

對於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是測試樣本,對於測試樣本來說,預處理應該和訓練樣本一致,即測試樣本的最大值和最小值應該是訓練集的最大值與最小值。假設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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM