📄 myprsvmtrain.m
字号:
function [SV Alpha Thsvm]=MyPRSVMTrain(Traindata,Kerneltype,C,Sigma)
Y=Traindata(:,1);
n=length(Y);
K=kernel(Traindata,Kerneltype,Pexp,Sigma);
H=(Y*Y').*K;
H=H+1e-10*eye(size(H));
f=-ones(n,1);
A=[];
b=[];
Aeq=Y';
beq=0;
lb=zeros(n,1);
ub=C*ones(n,1);
a0=zeros(n,1);
options=optimset; options.LargeScale='off'; options.Display='off';
Alpha=quadprog(H,f,A,b,Aeq,beq,lb,ub,a0,options); %用二次规划函数求解对偶函数的最优解
svsc=find(Alpha>1e-5);
Al=Alpha(svsc);
SV=Traindata(svsc,:);
for i=1:length(svsc)
if(Y(svsc(i))==1)
r=svsc(i);
break;
end
end
for j=1:length(svsc)
if(Y(svsc(j))==-1)
s=svsc(j);
break;
end
end
Starb=Alpha.*Y.*(K(:,r)+K(:,s));
Thsvm=-0.5*sum(Starb);
Alpha=Al;
function K=kernel(Traindata,Kerneltype,Sigma)
[n dim]=size(Traindata);
temp=Traindata(:,2:dim);
switch Kerneltype
case 'linear'
K=temp*temp';
case 'poly'
K=(temp*temp'+1).^2;
case 'gauss'
K=zeros(n,n);
for i=1:n
for j=1:n
t=temp(i,:)-temp(j,:);
K(i,j)=exp((-0.5*(t*t'))/Sigma.^2);
end
end
otherwise
K=0;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -