使用KS算法和SPXY算法进行样本分类(MATLAB)

您所在的位置:网站首页 分组检测方法的优缺点 使用KS算法和SPXY算法进行样本分类(MATLAB)

使用KS算法和SPXY算法进行样本分类(MATLAB)

2024-07-10 17:37| 来源: 网络整理| 查看: 265

使用KS算法和SPXY算法进行样本分类

当我们进行建模分析时,在建模过程中训练集样本的选取是非常重要的,下面我将简单介绍一下其中用的较多的KS算法和SPXY算法。

Kennard-Stone算法原理(KS算法)

KS算法原理:把所有的样本都看作训练集候选样本,依次从中挑选样本进训练集。首先选择欧氏距离最远的两个样本进入训练集,其后通过计算剩下的每一个样品到训练集内每一个已知样品的欧式距离,找到拥有最大最小距离的待选样本放入训练集,以此类推,直到达到所要求的样本数目。该方法的优点是能保证训练集中的样本按照空间距离分布均匀。缺点是需要进行数据转换和计算样本两两空间距离,计算量大。

欧式距离:欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。

欧氏距离计算公式

Xp和Xq表示两个不同的样本,N表示样本的光谱波点数量。

SPXY算法原理

SPXY算法原理:它是在KS算法基础上发展而来的,SPXY在样品间距离计算时将x变量和y变量同时考虑在内。 距离计算

但是在使用这个算法的时候大家可能会想SPXY中的X和Y分别代表什么含义,下面通过一个例子,希望能给大家带来帮助。 例子:北京农业质量标准与检测技术研究中心的王世芳等人与2019年3月在《光谱学与光谱分析》上发表了一篇名叫《SPXY算法的西瓜可溶性固形物近红外光谱检测》的文章。在文章中,采用光谱-理化值共生距离(SPXY)算法对西瓜不同检测部位的样品集进行划分,以可溶性固形物含量为y变量,光谱为x 变量,利用两种变量同时计算样品间距离以保证最大程度表征样本分布,有效地覆盖多维向量空间,增加样本间的差异性和代表性,提高模型稳定性。

代码

我是使用matlab2014a软件,所以下面附上KS算法和SPXY算法的matlab程序。 KS代码

function [XSelected,XRest,vSelectedRowIndex]=ks(X,Num) % ks selects the samples XSelected which uniformly distributed in the exprimental data X's space % Input % X:the matrix of the sample spectra % Num:the number of the sample spectra you want select % Output % XSelected:the sample spectras was selected from the X % XRest:the sample spectras remain int the X after select % vSelectedRowIndex:the row index of the selected sample in the X matrix % Programmer: zhimin zhang @ central south university on oct 28 ,2007 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % start of the kennard-stone step one %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% X=xlsread('X.xlsx');%obtain the data [nR,nC]=size(X); % obtain the size of the X matrix mDistance=zeros(nR,nR); %dim a matrix for the distance storage vAll of Sample=1:nR; for i=1:nR-1 vRX=X(i,:); % 获取X的一行数据 for j=i+1:nR vRX1=X(j,:); % 获得X中的另一行数据 mDistance(i,j)=norm(vRX-vRX1); % 计算欧氏距离 end end [vMax,vIndex Of mDistance]=max(mDistance); [nMax,nIndex of vMax]=max(vMax); vSelectedSample(1)=nIndex of vMax; vSelectedSample(2)=vIndex Of mDistance(nIndex of vMax); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % end of the kennard-stone step one %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % start of the kennard-stone step two %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for i=3:Num vNotSelectedSample=setdiff(vAll of Sample,vSelectedSample); vMinDistance=zeros(1,nR-i + 1); for j=1:(nR-i+1) nIndex of NotSelected=vNotSelectedSample(j); vDistanceNew = zeros(1,i-1); for k=1:(i-1) nIndex of Selected=vSelectedSample(k); if(nIndex of Selected


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3