⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twoclass.m

📁 用于将不规则的数据分成两类 适用于各种经济模型 分类效果好
💻 M
📖 第 1 页 / 共 2 页
字号:
  -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 + -