Matlab歸一化

提起數據的歸一化處理,其實有好多種方法,大多都是根據自己需要的來進行初始化。
根據歸一化後的數據是分佈在0-1之間還是分佈在-1到+1之間,歸一化方法基本可以分成兩類。


第一種方法,某個屬性的最大值max,最小值min,對每個屬性的值x做如下處理
normalizedx=(x-min)/(max-min);
這樣normalizedx就會分佈在0-1之間。這種歸一化方法是線性的歸一化方法
第二種方法,與第一種方法對應的將數據歸一化-1到+1的方法是,在做完第一步處理後,只需要將
normalizedx=normalizedx*2-1;
就會將數據歸一化到-1到1之間,matlab自帶的歸一化處理方法premnmx處理結果完全一模一樣。
premnmx對應的用法是:
[Pn,minp,maxp,Tn,mint,maxt]=premnmx(data(:,1:9)',data(:,10)');
對測試數據做[testPn]=tramnmx(dataTest(:,1:9)',minp,maxp);這樣的處理就可以了。如果在做預測的時候要反歸一化,通過mint,和maxt就可以按照前面說的方法進行反歸一化
matlab中的mapminmax函數和premnmx處理方法一模一樣。
還是也舉一個例子來說一下吧。
對訓練數據處理:    [pn,ps]=mapminmax(P) P訓練數據的輸入數據
                                    [tn, ts]=mapminmax(t) t訓練數據的輸出數據
對測試數據的處理:pnt=mapminmax('apply',pt,ps) pt測試數據
反歸一化:              out=mapminmax('reverse',An,ts) An預測結果數據


第三種方法,第三種方法是通過mapstd進行歸一化處理的,但是處理後的結果比不是分佈在0-1或者-1到1之間的。
舉例說明下:
對訓練數據處理:  [pn,ps]=mapstd(P) P訓練數據的輸入數據
                  [tn, ts]=mapstd(t) t訓練數據的輸出數據
對測試數據的處理:pnt=mapstd('apply',pt,ps) pt測試數據
反歸一化:        out=mapstd('reverse',An,ts) An預測結果數據
其實具體處理的方法還不是很清楚。下篇文章在詳細講述。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章