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

📄 svmmulticlassoneagainstone.m

📁 应用于matlab支持向量机svm的工具箱
💻 M
字号:
function [xsup,w,b,nbsv,classifier,pos,obj]=svmmulticlassoneagainstone(x,y,nbclass,c,epsilon,kernel,kerneloption,verbose,warmstart);
%[xsup,w,b,nbsv,classifier,posSigma]=svmmulticlassoneagainstone(x,y,nbclass,c,epsilon,kernel,kerneloption,verbose);
%
%
%
% SVM Multi Classes Classification One against Others algorithm
%
% y is the target vector which contains integer from 1 to nbclass.
%
% This subroutine use the svmclass function
%
% the differences lies in the output nbsv which is a vector
% containing the number of support vector for each machine
% learning.
% For xsup, w, b, the output of each ML are concatenated
% in line.
%
% classifier gives which class against which one
%


%
% See svmclass, svmmultival
%
%


% 29/07/2000 Alain Rakotomamonjy


if nargin < 8
    verbose=0;
end;


xsup=[];  % 3D matrices can not be used as numebr of SV changes
w=[];
b=[];
pos=[];
SigmaOut=[];
span=1;
classifier=[];
nbsv=zeros(1,nbclass);
nbsuppvector=zeros(1,nbclass);
k=1;
if isempty(x) & strcmp(kernel,'numerical') & isfield(kerneloption,'matrix')
    Kaux=kerneloption.matrix;
    kernelparam=1;
    xapp=[];
else
    kernelparam=0;
end;
obj=0;
for i=1:nbclass-1
    for j=i+1:nbclass
        indi=find(y==i);
        indj=find(y==j);
        yone=[ones(length(indi),1);-ones(length(indj),1)];
        if ~isempty(x)
            xapp=[x(indi,:); x(indj,:)];
        end;
        if exist('warmstart') & isfield(warmstart,'nbsv');
            nbsvinit=cumsum([0 warmstart.nbsv]);
            alphainit=zeros(size(yone));
                    aux=[indi;indj];
            posaux=find(ismember(aux,warmstart.pos(nbsvinit(k)+1:nbsvinit(k+1))));
            alphainit(posaux)= abs(warmstart.alpsup(nbsvinit(k)+1:nbsvinit(k+1)));
        else
            alphainit=[];
        end;
        if kernelparam==1;
            if size(indi,1)==1 && size(indi,2)>1
                kerneloption.matrix=Kaux([indi indj],[indi indj]);
            else
                kerneloption.matrix=Kaux([indi  ;indj],[indi; indj]);
            end
        end;

        [xsupaux,waux,baux,posaux,timeaux,alphaaux,objaux]=svmclass(xapp,yone,c,epsilon,kernel,kerneloption,verbose,span,alphainit);

        [n1,n2]=size(waux);
        nbsv(k)=n1;
        classifier(k,:)=[i j];
        xsup=[xsup;xsupaux];
        w=[w;waux];
        b=[b;baux];
        aux=[indi;indj];
        pos=[pos;aux(posaux)];
        obj=obj+objaux;
        k=k+1;
    end;
end;

⌨️ 快捷键说明

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