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

📄 svmmultivaloneagainstone.m

📁 些程序是对多类分类的另一种处理方法
💻 M
字号:
function [ypred,vote,ypred1]=svmmultivaloneagainstone(x,xsup,w,b,nbsv,kernel,kerneloption)


n1=size(kerneloption.matrix,1);
nbclass=(1+ sqrt(1+4*2*length(nbsv)))/2;
vote=zeros(n1,nbclass);
%------------------------
%mohu=zeros(n1,nbclass);
mohu=[];
fvote=[];
%------------------------
nbsv=[0 nbsv];
aux=cumsum(nbsv);
k=1;
for i=1:nbclass-1;
    for j=i+1:nbclass;
       % if nargin < 8;
            if isempty(xsup) & strcmp(kernel,'numerical') & isfield(kerneloption,'matrix')
                kerneloptionm.matrix=kerneloption.matrix(:,aux(k)+1:aux(k)+nbsv(k+1));
                kernelparam=1;
                xapp=[];
            end;            
        %end;
        waux=w(aux(k)+1:aux(k)+nbsv(k+1));
        baux=b(k);
        %  ypred= svmval([],[],waux,baux,kernel,kerneloptionm);
        ps=kerneloptionm.matrix;
        ypred=ps*waux+baux;%最优分类面Dij(x)=ypred;
        indi=find(ypred>=0);
        indj=find(ypred<0);
        vote(indi,i)=vote(indi,i)+1;
        vote(indj,j)=vote(indj,j)+1;  
        k=k+1;
    end;
end;
%------------------------------------------------------------
%构造模糊函数解决不可分区域
k=1;
m=find(vote(:,1)==vote(:,2)&vote(:,2)==vote(:,3));
  for i=1:nbclass-1;
    for j=i+1:nbclass;
       % if nargin < 8;
            if isempty(xsup) & strcmp(kernel,'numerical') & isfield(kerneloption,'matrix')
                kerneloptionm.matrix=kerneloption.matrix(:,aux(k)+1:aux(k)+nbsv(k+1));
                kernelparam=1;
                xapp=[];
            end;            
        %end;
        waux=w(aux(k)+1:aux(k)+nbsv(k+1));
        baux=b(k);
        %  ypred= svmval([],[],waux,baux,kernel,kerneloptionm);
        ps=kerneloptionm.matrix(m,:);
        ypred1=ps*waux+baux;%最优分类面Dij(x)=ypred;
        indexi=find(ypred1>=1);
        indexj=find(ypred1<1);
        mohu(indexi,k)=1;
        mohu(indexj,k)=ypred1(indexj);
       % mohu=[mohu,mohu1'];
       
       k=k+1;
    end;
end;
if (mohu==0)
    [maxi,ypred1]=max(vote');
else
fvote(:,1)=min(mohu(:,1:2)')';
fvote(:,2)=min([mohu(:,1),mohu(:,3)]')';
fvote(:,3)=min(mohu(:,2:3)')';
end;
vote(m,:)=fvote;
%------------------------------------------------------------
[maxi,ypred2]=max(vote');
%ypred=ypred2'+ypred1';
ypred=ypred2';

⌨️ 快捷键说明

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