📄 xval.m
字号:
function [lambdaLH,sig2LH]=xval(X,y,fold,pars,for1,for2)
%partition data
K=length(unique(y));c=K-1;
N=size(X,1);
%put b term in parameter vector
X=[ones(size(X,1),1) X];
randi = randperm(size(X,1));
Npart=floor(N/fold);
pall=zeros(N-Npart,c);
ft = 0;
while ft < fold
for i=1:fold,
vpi{i}=randi((i-1)*Npart+1:i*Npart);
trpi{i}=[randi(i*Npart+1:end) randi(1:(i-1)*Npart)];
ab = y(trpi{i});
sy = length(find(ab==ab(1)));
ab2 = y(vpi{i});
sy2 = length(find(ab2==ab2(1)));
if sy ~= length(y(trpi{i}))&& sy2 ~= length(y(vpi{i}))
ft = ft+1;
else
ft = 0;
break
end
end
end
teller=0;
lh=zeros(fold,1);
acc=lh;
%for1=exp(8:-0.5:-2);
%for2=exp(-4.1:1:10);
lencross=length(for1)*length(for2);
lhavg=lencross;
accavg=lencross;
%hwait = waitbar(0,'xval');
%waitbar(0,hwait,'xval');
alpha=0;
for lambda=for1,
for sig2=for2,
teller=teller+1;
pars.lambda=lambda;
pars.sig2=sig2;
for i=1:fold
[ddd,alpha]=irlssvm(X(trpi{i},:),y(trpi{i}),alpha,pars);
[lh(i),acc(i)]=predictKLR(X(trpi{i},2:end),y(trpi{i}),alpha,X(vpi{i},2:end),y(vpi{i}),pars);
pall=0;alpha=0;
end
s2(teller)=sig2;
l(teller)=lambda;
lhavg(teller)=mean(lh);
accavg(teller)=mean(acc);
% changed by JB P.
%waitbar(teller/lencross,hwait);
%disp(['hyperparameters(lambda,sig2): ' num2str(lambda) ', ' num2str(sig2)]);
%disp(['ACCURACY: ' num2str(accavg(teller)) ', MEAN LIKELIHOOD ' num2str(lhavg(teller))]);
end
end
%close(hwait);
[mlh,Ilh]=max(lhavg);
%[macc,Iacc]=max(accavg);
%disp(['minimum based on likelihood ' num2str(s2(Ilh)) ', ' num2str(l(Ilh))]);
%disp(['minimum based on accuracy ' num2str(s2(Iacc)) ', ' num2str(l(Iacc))]);
%likelihood
sig2LH=s2(Ilh);
lambdaLH=l(Ilh);
% if strcmp(type,'acc')
% %accuracy
% sig2=s2(Iacc);
% lambda=l(Iacc);
% else
% %likelihood
% sig2=s2(Ilh);
% lambda=l(Ilh);
% end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -