www.pudn.com > huiguiclass.rar > huiguiclass.m


clear 
t=-1:0.05:1; 
y=sin(t); 
n1=length(y); 
randn('seed',1245678375); 
for i=1:10 
    y(i)=y(i)+normrnd(0,0.1); 
end 
for i=1:n1 
    y(i)=y(i)+normrnd(0,0.8); 
end 
% 以上是sin函数的输入、输出,也就是训练样本。 
 
q=40; 
rou=1.5; 
n=length(y); 
for i=1:n 
   for j=1:n 
      d(i,j)=exp(-(x(i)-x(j))*(x(i)-x(j))'/rou); 
   end 
end 
% 计算核函数矩阵。 
mu(1:12)=0.0016; 
e=0.0001; 
c1=e-y; 
c2=e+y; 
c=c1; 
c(n+1:2*n)=c2; 
f=c; 
H=d; 
H(1:n,n+1:2*n)=-d; 
H(n+1:2*n,1:n)=-d; 
H(n+1:2*n,n+1:2*n)=d; 
A=[]; 
b=[]; 
Aeq(1:n)=1; 
Aeq(n+1:2*n)=-1; 
beq=0; 
LB(1:2*n)=0;UB(1:2*n)=mu.*q; 
[X ok how]=quadprog(H,f,A,b,Aeq,beq,LB,UB); 
% 以上是求解回归型支持向量机的对偶问题,把求出的alfa值存入向量X中。 
 
k=1; 
for i=1:n  
   if X(i)>0.0001&X(i)<(q-0.0001) 
      xx(k)=x(i); 
      yy(k)=y(i); 
      k=k+1; 
   end 
end 
 
 
   dd=0; 
   for i=1:n 
      dd=dd+(X(i)-X(i+n))*exp(-((xx(1)-x(i))*(xx(1)-x(i))')/rou); 
   end 
   b=yy(1)-e-dd; 
 
% 以上是根据KKT条件求参数b的值。 
 
 
aa=1.35;   % 此数可以在[0,pi/2]之间任意选取。 
ok=0; 
for i=1:n 
   ok=ok+(X(i)-X(i+n))*exp(-((aa-x(i))*(aa-x(i))')/rou); 
end 
jie=ok+b 
% 取自变量值为1.35时,代入训练好的支持向量机中,得出预测值为jie。