高光谱数据读入后进行数据归一化,以下为其他博主整理的归一化的几种方法,原文https://blog.csdn.net/qq_35166974/article/details/87981252,如有不妥请联系删帖
下面我将开始介绍一系列高光谱数据预处理算法,在我们采集到高光谱数据之后,其中含有很多噪音,如果直接建模的话,这些噪音会影响建模效果。因此,我们要先进行一定预处理,将其中的噪音去除。常用的预处理算法有标准化/归一化、移动平均窗口平滑、SG平滑等。今天我将先介绍比较简答的预处理算法:数据标准化/归一化。
数据的标准化/归一化(normalization)就是将数据按照比例缩放、平移,使数据落入一个小的特定区间中。
数据标准化/归一化的作用是消除数据量纲的影响,使数据指标之间具有可比性,对模型的建立至关重要,下面举一个简单明了的例子:房子的价格受面积与楼层数影响,因此可以根据面积和楼层数建立一个房价的数学模型。但是,我们可以看出房子的面积数值很大,而楼层数数值很小,因此面积对模型的影响大于楼层数。因此,我们要对数据进行标准化和归一化,统一数据的范围,消除量纲的一影响。
下面我将介绍几个常用的标准化/归一化方法:
①min-max标准化:
其表达是为:
②z-score标准化:
其表达式为:
③logistic变换:
该变换的作用是将负无穷到正无穷的数据投影到到0、1范围内,在支持向量机、神经网络等机器学习算法中用到,函数的一般形式为下式,.如图即为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:等等等等-ande
%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
当然,除了这几种常见的标准化,还有很多其他形式,这里就不介绍了,大家用到的时候可以查相关资料~