资源简介
用于matlab模式识别(分类和回归)的特征变量提取方法,竞争性自适应重加权算法(CARS)是通过自适应重加权采样(ARS)技术选择出PLS模型中回归系数绝对值大的波长点,去掉权重小的波长点,利用交互验证选出RMSECV指最低的子集,可有效寻出最优变量组合。

代码片段和文件信息
function F=carspls(XyAKmethodnum)
%+++ CARS: Competitive Adaptive Reweighted Sampling method for variable selection.
%+++ X: The data matrix of size m x p
%+++ y: The reponse vector of size m x 1
%+++ A: the maximal principle to extract.
%+++ K: the group number for cross validation.
%+++ num: the number of Monte Carlo Sampling runs.
%+++ method: pretreatment method.
%+++ Hongdong Li Dec.15 2008.
%+++ Advisor: Yizeng Liang yizeng_liang@263.net
%+++ lhdcsu@gmail.com
%+++ Ref: Hongdong Li Yizeng Liang Qingsong Xu Dongsheng Cao Key
% wavelengths screening using competitive adaptive reweighted sampling
% method for multivariate calibration Anal Chim Acta 2009 648(1):77-84
tic;
%+++ Initial settings.
if nargin<6;num=50;end;
if nargin<5;method=‘center‘;end;
if nargin<4;K=5;end;
if nargin<3;A=2;end;
%+++ Initial settings.
[MxNx]=size(X);
A=min([Mx Nx A]);
index=1:Nx;
ratio=0.9;
r0=1;
r1=2/Nx;
Vsel=1:Nx;
Q=floor(Mx*ratio);
W=zeros(Nxnum);
Ratio=zeros(1num);
%+++ Parameter of exponentially decreasing function.
b=log(r0/r1)/(num-1); a=r0*exp(b);
%+++ Main Loop
for iter=1:num
perm=randperm(Mx);
Xcal=X(perm(1:Q):); ycal=y(perm(1:Q)); %+++ Monte-Carlo Sampling.
PLS=pls(Xcal(:Vsel)ycalAmethod); %+++ PLS model
w=zeros(Nx1);coef=PLS.coef_origin(1:end-1end);
w(Vsel)=coef;W(:iter)=w;
w=abs(w); %+++ weights
[wsindexw]=sort(-w); %+++ sort weights
ratio=a*exp(-b*(iter+1)); %+++ Ratio of retained variables.
Ratio(iter)=ratio;
K=round(Nx*ratio);
w(indexw(K+1:end))=0; %+++ Eliminate some variables with small coefficients.
Vsel=weightsampling_in(w); %+++ Reweighted Sampling from the pool of retained variables.
Vsel=unique(Vsel);
fprintf(‘The %dth variable sampling finished.\n‘iter); %+++ Screen output.
end
%+++ Cross-Validation to choose an optimal subset;
RMSEP=zeros(1num);
Q2_max=zeros(1num);
Rpc=zeros(1num);
for i=1:num
vsel=find(W(:i)~=0);
CV=plscvfold(X(:vsel)yAKmethod0);
RMSEP(i)=CV.RMSECV;
Q2_max(i)=CV.Q2_max;
Rpc(i)=CV.optPC;
fprintf(‘The %d/%dth subset finished.\n‘inum);
end
[RminindexOPT]=min(RMSEP);
Q2_max=max(Q2_max);
%+++ save results;
time=toc;
%+++ output
F.W=W;
F.time=time;
F.cv=RMSEP;
F.Q2_max=Q2_max;
F.minRMSECV=Rmin;
F.iterOPT=indexOPT;
F.optPC=Rpc(indexOPT);
Ft.ratio=Ratio;
F.vsel=find(W(:indexOPT)~=0)‘;
function sel=weightsampling_in(w)
%Bootstrap sampling
%2007.9.6H.D. Li.
w=w/sum(w);
N1=length(w);
min_sec(1)=0; max_sec(1)=w(1);
for j=2:N1
max_sec(j)=sum(w(1:j));
min_sec(j)=sum(w(1:j-1));
end
% figure;plot(max_sec‘r‘);hold on;plot(min_sec);
for i=1:N1
bb=rand(1);
i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-03-23 20:23 CARS_PLS\
目录 0 2012-03-23 20:23 CARS_PLS\CARS_PLS\
文件 39936 2012-03-23 20:22 CARS_PLS\CARS_PLS\CARS工具包重要函数.doc
文件 1332 2012-03-23 20:22 CARS_PLS\CARS_PLS\license.txt
目录 0 2012-03-23 20:23 CARS_PLS\CARS_PLS\pls\
文件 49218 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\CARS_manual.pdf
文件 46264 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\LOGO_CARS.JPG
文件 1132 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\Manne_bi.m
文件 3383 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\carspls.m
文件 920 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\classplot2.m
文件 448880 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\corn_m51.mat
文件 288 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\csvd奇异值分解.m
文件 506 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\example_nir.m
文件 465 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\expred1.m
文件 736 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\expred2.m
文件 812 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\ks.m
文件 966 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\lsreg.m
文件 2983 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\mcs.m
文件 1217 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\mcuvepls.m
文件 976 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\mwpls.m
文件 3013 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\oscplscv.m
文件 835 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\plotcars.m
文件 592 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\plotmcs.m
文件 1953 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\pls.m
文件 1788 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\pls_nipals.m
文件 2639 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\plscvfold.m
文件 1955 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\plsdcv.m
文件 2977 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\plsmccv.m
文件 1734 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\plsnipals.m
文件 2179 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\plsrdcv.m
文件 4180 2012-03-23 20:22 CARS_PLS\CARS_PLS\pls\plssim.m
............此处省略10个文件信息
- 上一篇:粒子群算法优化RBF网络matlab源码
- 下一篇:siftmatlab算法实现
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论