📄 svmmultival.m
字号:
function [ypred,maxi,ypredMat]=svmmultival(x,xsup,w,b,nbsv,kernel,kerneloption)
[n1,n2]=size(x);
nbclass=length(nbsv);
y=zeros(n1,nbclass);
nbsv=[0 nbsv];
aux=cumsum(nbsv);
for i=1:nbclass
if ~isempty(xsup)
xsupaux=xsup(aux(i)+1:aux(i)+nbsv(i+1),:);
waux=w(aux(i)+1:aux(i)+nbsv(i+1));
baux=b(i);
ypred(:,i)= svmval(x,xsupaux,waux,baux,kernel,kerneloption);
else
if isempty(x) % Kernel matrix is given as a parameter
waux=w(aux(i)+1:aux(i)+nbsv(i+1));
baux=b(i);
kernel='numerical';
xsupaux=[];
pos=aux(i)+1:aux(i)+nbsv(i+1);
kerneloption2.matrix=kerneloption.matrix(:,pos);
ypred(:,i)= svmval(x,xsupaux,waux,baux,kernel,kerneloption2);
end;
end;
end;
%--------------------------------------------------------------
%把待分类点模糊化,
for i=1:nbclass
for j=1:nbclass
if i==j
ind1=find(ypred(:,j)>=1);
ind2=find(ypred(:,j)<1);
ypred1(ind1,j)=1;
ypred1(ind2,j)=ypred(ind2,j);
else
ind1=find(ypred(:,j)<=-1);
ind2=find(ypred(:,j)>-1);
ypred1(ind1,j)=1;
ypred1(ind2,j)=-1*ypred(ind2,j);
end
end
ypred2(:,i)=min(ypred1')';
end
%-----------------------------------------------------------------------
ypredMat=ypred2;
[maxi,ypred]=max(ypred2');
maxi=maxi';
ypred=ypred';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -