📄 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。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -