📄 twoclass.m
字号:
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00];
% 以上语句给出输入、输出值,即训练样本,其中 x表示输入向量,y表示输出值(+1表示一类,-1表示一类),这是一个两类分类问题。
rou=0.3;
n=length(y);
for i=1:n
for j=1:n
d(i,j)=y(i)*y(j)*exp(-(x(i,:)-x(j,:))*(x(i,:)-x(j,:))'/rou);
end
end
% 以上是计算核函数矩阵
H=d;
f(1:n)=-1;
%A(1:n)=0;
%b=1;
A=[];b=[];
Aeq(1:n)=y';
beq=0;
C=5;
LB1(1:n)=0;UB1(1:n)=C;
LB=LB1';UB=UB1';
[X ok how]=quadprog(H,f,A,b,Aeq,beq,LB,UB);
% 以上是对支持向量机的对偶形式进行优化,从而解出参数值alfa,这里存入变量X中。
svm=0;
for i=1:n
if abs(X(i))<=0.000000001
X(i)=0;
svm=svm+1;
end
end
svms1=n-svm
% 以上是求出支持向量的个数,alfa值不为零所对应的样本为支持向量。
k=1;
for i=1:n
if X(i)>0&X(i)<C
xx(k,:)=x(i,:);
yy(k)=y(i);
k=k+1;
end
end
for j=1:k-1
ddd=0;
for i=1:n
ddd=ddd+X(i)*y(i)*exp(-(x(i,:)-xx(j,:))*(x(i,:)-xx(j,:))'/rou);
end
bb(j)=yy(j)-ddd;
end
b=sum(bb)/(k-1);
% 根据KKT条件,求出b的值,一般采用一个支持向量就可以求出b的值,这里为了稳定起见,采用多个支持向量求b值,然后取平均。
test=[4.8715748e-01 -6.0072143e-01 -5.4643040e-01 -2.2689313e-01 -2.6430917e-01
-2.9298795e-01 -1.0390040e-01 2.7049212e-01 -1.9772949e-01 -5.0824934e-01
-3.7967077e-01 1.6241728e+00 -2.7412289e-01 -3.7271133e-01 -4.5946130e-01
-2.0630512e-01 6.7373253e-01 -7.2796874e-01 -2.8522041e-01 -1.3014208e-01
-3.7967077e-01 -8.2299485e-02 -9.2584553e-02 -1.8314766e-01 -6.9157037e-02
2.2710900e-01 -1.5727626e+00 -1.0910454e+00 5.5620896e+00 1.8091822e+00
3.1379183e-01 -1.0327397e+00 -1.0910454e+00 4.2928879e-01 1.8823643e+00
-1.4198647e+00 -2.1190497e-01 -3.6489206e-01 -2.9980223e-01 -1.7893011e-01
9.2057160e-01 -6.6552418e-01 -1.8153834e-03 -2.2689313e-01 -2.7650618e-01
1.8740827e+00 -1.5511617e+00 -1.0002762e+00 1.0271434e+00 6.5010054e-02
-3.8469838e+00 1.7969801e+00 7.3504873e+00 -2.2689313e-01 -4.9605233e-01
6.6052313e-01 -1.4710223e-01 -1.8153834e-03 -1.9772949e-01 3.2114723e-01
3.1379183e-01 -2.9830863e-01 -9.2584553e-02 -2.9980223e-01 -4.4726430e-01
-3.2939473e-02 5.4412704e-01 3.6126129e-01 -1.6856584e-01 -4.1067327e-01
2.7409109e+00 -9.2473515e-01 -9.2584553e-02 9.2507069e-01 1.2481199e+00
-1.0731334e+00 -4.4951503e-01 -5.4643040e-01 -2.4147495e-01 -3.9847626e-01
9.2057160e-01 -1.3999553e+00 -9.2584553e-02 6.7717974e-01 2.1141075e+00
9.2057160e-01 5.4412704e-01 4.5203046e-01 -2.9980223e-01 -2.7650618e-01
-2.0630512e-01 -3.1990955e-01 -9.2584553e-02 -1.9772949e-01 -4.1067327e-01
-3.8469838e+00 3.3306450e+00 3.5381822e+00 -2.2689313e-01 -4.8385532e-01
-3.2939473e-02 -3.9097655e-02 -4.5566123e-01 -2.5605677e-01 -2.5211216e-01
-3.7967077e-01 -6.2232235e-01 -3.6489206e-01 -2.2747640e-02 1.6222021e-02
7.4720595e-01 1.5531058e-01 -9.2584553e-02 -2.1231131e-01 -1.4233909e-01
1.4042618e-01 -2.9830863e-01 -2.7412289e-01 -2.5605677e-01 -3.2566012e-02
1.5273514e+00 -4.7111595e-01 -9.2584553e-02 -1.3940220e-01 2.7235920e-01
-9.8645055e-01 -9.0313424e-01 -1.3633529e+00 -2.2689313e-01 -1.6673310e-01
-2.9298795e-01 3.0651698e-01 -9.2584553e-02 -2.8522041e-01 -3.8627925e-01
4.0047465e-01 -1.6870314e-01 6.3356880e-01 -1.9772949e-01 -3.2529421e-01
-5.5303642e-01 -8.2299485e-02 9.0587631e-01 -2.1231131e-01 -5.2044635e-01
1.3539857e+00 -1.3351525e+00 -7.2796874e-01 8.2299795e-01 2.6507758e+00
-3.6736181e+00 2.8986267e+00 4.9904889e+00 -1.5398402e-01 -5.8143139e-01
-3.5869353e+00 1.0409481e+00 5.3535656e+00 -3.2896587e-01 -5.3264335e-01
1.0072544e+00 7.8173710e-01 -3.6489206e-01 -1.8314766e-01 -4.4726430e-01
-3.2939473e-02 -3.1990955e-01 1.7972295e-01 -2.5605677e-01 -6.9157037e-02
-3.7967077e-01 2.6331515e-01 -7.2796874e-01 -2.9980223e-01 -3.6188524e-01
-5.5303642e-01 4.7306003e-02 -5.4643040e-01 -3.1438405e-01 -4.9605233e-01
3.1379183e-01 -1.9030406e-01 8.8953786e-02 -1.5398402e-01 -3.1309720e-01
-8.1308490e-01 3.0651698e-01 5.4279963e-01 -3.1438405e-01 -5.4484036e-01
-3.7967077e-01 -8.1673058e-01 1.7972295e-01 -2.1231131e-01 3.4554125e-01
-3.7967077e-01 4.5772338e-01 1.2689530e+00 -2.5605677e-01 -5.0824934e-01
-3.7967077e-01 -2.5510680e-01 -3.6489206e-01 -2.5605677e-01 -3.2529421e-01
9.2057160e-01 1.1210875e-01 1.7972295e-01 -2.5605677e-01 -2.8870319e-01
1.3539857e+00 -1.6375653e+00 -9.0950708e-01 1.9895436e+00 6.5046645e-01
-3.7967077e-01 -3.8471229e-01 8.8953786e-02 -1.3940220e-01 -5.6923438e-01
5.7384030e-01 3.4971881e-01 -9.2584553e-02 -2.1231131e-01 1.5038911e-01
-1.1962230e-01 2.2011332e-01 -6.3719957e-01 -1.3940220e-01 -3.8627925e-01
-2.9298795e-01 -1.2271480e+00 -6.3719957e-01 -1.8314766e-01 -3.3749122e-01
7.4720595e-01 5.0092521e-01 -3.6489206e-01 -2.7063859e-01 -2.2771815e-01
-2.9298795e-01 -6.8712509e-01 -3.6489206e-01 -2.4147495e-01 -3.2566012e-02
5.3743351e-02 -7.7352875e-01 -8.1873791e-01 -2.9980223e-01 -3.8627925e-01
3.1379183e-01 3.4971881e-01 -3.6489206e-01 -1.3940220e-01 -1.5453610e-01
-6.3971925e-01 -3.1990955e-01 -3.6489206e-01 -2.9980223e-01 -2.1552114e-01
-1.0731334e+00 1.1273517e+00 -9.2584553e-02 -2.4147495e-01 -5.3264335e-01
7.4720595e-01 1.3370966e-01 1.7972295e-01 -3.1438405e-01 -8.1354046e-02
-1.8532788e+00 1.4297645e+00 2.7212597e+00 -2.9980223e-01 -4.9605233e-01
2.2710900e-01 -8.2299485e-02 8.8953786e-02 -2.4147495e-01 -4.2287028e-01
-1.7665960e+00 3.0066313e+00 3.1751055e+00 -3.4354769e-01 -4.9605233e-01
-6.3971925e-01 -7.0872601e-01 -6.3719957e-01 -2.1231131e-01 -3.4968823e-01
9.2057160e-01 -6.6552418e-01 1.7972295e-01 1.1000525e+00 4.1997959e+00
-1.2464990e+00 2.6331515e-01 7.2433797e-01 -1.8314766e-01 -5.4484036e-01
2.2710900e-01 -7.3032692e-01 -6.3719957e-01 -2.4147495e-01 -2.6430917e-01
1.1806201e+00 -9.2473515e-01 -7.2796874e-01 1.5812526e+00 6.3586664e+00
5.3743351e-02 1.1210875e-01 -2.7412289e-01 -1.8314766e-01 -1.7893011e-01
-3.2939473e-02 2.5705088e-02 -5.4643040e-01 -1.5398402e-01 1.6222021e-02
6.6052313e-01 -4.4951503e-01 8.8953786e-02 -2.7063859e-01 -3.2566012e-02
-9.8645055e-01 1.4729664e+00 2.1766447e+00 -1.6856584e-01 -4.8385532e-01
-3.2939473e-02 -1.4710223e-01 -9.2584553e-02 -2.5605677e-01 2.8419029e-02
6.6052313e-01 5.0092521e-01 -1.8153834e-03 -2.4147495e-01 -3.2566012e-02
1.1806201e+00 -3.8471229e-01 3.6126129e-01 -2.7063859e-01 1.1379809e-01
8.3388877e-01 3.2811789e-01 3.6126129e-01 -9.5656742e-02 -3.1309720e-01
-1.3331818e+00 2.2938011e+00 -9.2584553e-02 -2.1231131e-01 -5.6923438e-01
-1.7665960e+00 2.5746130e+00 4.7181814e+00 -3.1438405e-01 -5.2044635e-01
-8.1308490e-01 -8.1673058e-01 4.5203046e-01 -1.5398402e-01 -4.4763021e-02
-7.2640207e-01 -6.0072143e-01 2.7049212e-01 -2.9980223e-01 -2.3991515e-01
4.0047465e-01 -3.8471229e-01 -2.7412289e-01 -1.8314766e-01 -4.4726430e-01];
% 以上是测试样本的输入。
N=length(test);
for R=1:N
dd=0;
for i=1:n
dd=dd+X(i)*y(i)*exp(-((test(R,:)-x(i,:))*(test(R,:)-x(i,:))')/rou);
end
okb(R)=dd+b;
if (dd+b)>0
shiji(R)=1;
else
shiji(R)=-1;
end
end
% 以上将测试样本代入支持向量机进行分类的结果。
qw=[-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
1.0000000e+00
1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00
1.0000000e+00
1.0000000e+00
-1.0000000e+00
-1.0000000e+00
-1.0000000e+00];
% 以上是测试样本的期望输出。
k=0;
for i=1:N
if shiji(i)==qw(i)
k=k+1;
end
end
k/N
% 以上是将支持向量机的实际输出与期望输出进行比较,计算出测试的正确率。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -