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

📄 xval.m

📁 The goal of SPID is to provide the user with tools capable to simulate, preprocess, process and clas
💻 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 + -