高光譜數據預處理算法——數據標準化/歸一化

今天,我又開了一欄博客,這裏我將主要介紹高光譜數據處理的相關算法,爲廣大剛剛從事高光譜的學習的同胞們提供一點點幫助,希望大家能夠從中學到一些!!!

下面我將開始介紹一系列高光譜數據預處理算法,在我們採集到高光譜數據之後,其中含有很多噪音,如果直接建模的話,這些噪音會影響建模效果。因此,我們要先進行一定預處理,將其中的噪音去除。常用的預處理算法有標準化/歸一化、移動平均窗口平滑、SG平滑等。今天我將先介紹比較簡答的預處理算法:數據標準化/歸一化。

數據的標準化/歸一化(normalization就是將數據按照比例縮放、平移,使數據落入一個小的特定區間中。

數據標準化/歸一化的作用是消除數據量綱的影響,使數據指標之間具有可比性,對模型的建立至關重要,下面舉一個簡單明瞭的例子:房子的價格受面積與樓層數影響,因此可以根據面積和樓層數建立一個房價的數學模型。但是,我們可以看出房子的面積數值很大,而樓層數數值很小,因此面積對模型的影響大於樓層數。因此,我們要對數據進行標準化和歸一化,統一數據的範圍,消除量綱的一影響。

下面我將介紹幾個常用的標準化/歸一化方法:

①min-max標準化:

其表達是爲:

原始數據
原始數據
min-max標準化數據
min-max標準化數據

②z-score標準化:

其表達式爲:

原始數據
z-score標準化數據

③logistic變換:

變換的作用是將負無窮到正無窮的數據投影到到01範圍內,在支持向量機、神經網絡等機器學習算法中用到,函數的一般形式爲下式,.如圖即爲logistic函數曲線。其表達式爲:

④中心化(centering):

中心化與上述變換有所區別,該過程只對數據進行了平移,沒有進行縮放,一般在主成分提取前進行數據中心化,使提取的主成分能夠較好的應用向量描述。其表達式爲:

原始數據
中心化數據

 以上就是常用的幾種數據標準化過程,下面給出其實現代碼:

function [nx] = normaliz(x)

% Normalize matrix rows dividing by its norm
% [nx] = normaliz(x)
% input:x-->data to normalize
% output:nx-->normalized data
% Auther:等等等等-dena


%min-max normalized
[m n]=size(x);
min_x=min(x);
max_x=max(x);
nx=x;
for i=1:m
    nx(i,:)=(x-min_x)/(max_x-min_x);
end

%%
%z-score normalized
[m n]=size(x);
mean_x=mean(x);
var_x=var(x);
for i=1:m
    nx(i,:)=(x-mean_x)/var_x;
end

%%
%centering
[m,~]=size(x);
mx= mean(x);
nx=(x-mx(ones(m,1),:));

end

當然,除了這幾種常見的標準化,還有很多其他形式,這裏就不介紹了,大家用到的時候可以查相關資料~


Get better every day!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章