⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crossvalid.m

📁 这是一个支持向量机的工具
💻 M
字号:
function [opts,E]=crossvalid(ds,Z,nu,kfold,method,task,trueZ,pamopt)
% searching optimal one by k-fold cross-validataion
% method: GcLearn epsilon-SVR or linear regress; task: 'find_nu' or not
% trueZ: 'zcurve'-- testing with Zcurve; 'zvalue'-- with true values of Z

k=0;
random_times=0;
[nl,nx]=size(ds);
bx=setdiff(1:nx,Z);
dcurve=ds;
dcurve(:,nx+1)=ds(:,Z); 

[dtrain,dtest]=datatraintest(ds,random_times,kfold);

for i=nu
 k=k+1;
 
 if task=='find_nu'
  [dcurve(:,1:nx),dx,v,vend]=datageometrize(ds,i,0);
 end
 
 for j=1:kfold                  % 3-fold cross-validataion
   Xlabel=dtrain{j};
   S=dcurve(Xlabel,:);
   Ylabel=dtest{j};
   T=dcurve(Ylabel,:);
   if trueZ=='zvalue'
     Target=T(:,nx+1);           % true data of Z for test
     if k==2 & method=='observe'
       S(:,Z)=S(:,nx+1); end     % training by true data of Z
   elseif trueZ=='zcurve'
       Target=T(:,Z);            % using curve data of Z for test 
   end

   if method=='gclearn'
     v=[v;v(length(v))+1];
     [h,pp,ph,id]=sumcurve(dx,v,vend,'each');
     np=size(pp,1);
     region{1}=[1 1 0 0 np];
     coef=modeloutframe(v,region{1},h,pp,ph,id,Z,'allcoef');
     b=find(coef~=0);
     b=setdiff(b,Z);
     Z_hat=T(:,b)*coef(b)'+coef(Z);
     residual=Target-Z_hat;
     p(j)=(norm(residual)^2)/size(T,1);    
   elseif method=='epsilsv'
     model = svmtrain(S(:,Z), S(:,bx), pamopt);
     [Q,R] = svmpredictnoprint(Target, T(:,bx), model);
     p(j)=R(2);
   end
 end

  if k==1
     opts=i;
     E=mean(p);
  elseif mean(p)<=0.98*E
     opts=i;
     E=mean(p);   
  end

end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -