SVM1.zip

  • PUDN用户
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2015-12-23 11:44
    上传日期
上传的是支持向量机的程序和使用例子,使用的高斯核编的function 自己写的源程序
SVM1.zip
  • svm1_ceshi.m
    299B
  • svm1.m
    1.2KB
内容介绍
function [y2,xlwc]=svm1(x1,y1,x2) % x1为输入的测试样本 y1为对应标签 x2为测试样本 % 输出y2为测试样本给出的标签 xlwc为误差 %核函数为多项式核 n=size(x1,1); for i=1:n for j=1:n % H(i,j)=y1(i)*y1(j)*exp(-(x1(i,:)-x1(j,:))*(x1(i,:)-x1(j,:))'); H(i,j)=y1(i)*y1(j)*((-(x1(i,:)-x1(j,:))*(x1(i,:)-x1(j,:))')+1); end end f = -1*ones(n,1); lb=zeros(n,1); ub=ones(n,1); A = []; b = []; Aeq=y1'; beq=0; a0=zeros(n,1); [a,fval,eXitflag,output,lambda]=quadprog(H,f,A,b,Aeq,beq,lb,ub,a0); as=find(a>10^(-8)); %求偏置b bq=sum(a.*y1.*((-dot(x1'-repmat(x1(as(1),:),n,1)',x1'-repmat(x1(as(1),:),n,1)')')+1),1); b=y1(as(1))-bq; for i=1:n % 高斯核 y11(i,1)=sign(sum(a.*y1.*exp(-dot(x1'-repmat(x1(i,:),n,1)',x1'-repmat(x1(i,:),n,1)')'),1)+b); y11(i,1)=sign(sum(a.*y1.*((-dot(x1'-repmat(x1(i,:),n,1)',x1'-repmat(x1(i,:),n,1)')')+1),1)+b);%多项式核 end n2=size(x2,1); for i=1:n2 y2(i,1)=sign(sum(a.*y1.*((-dot(x1'-repmat(x2(i,:),n,1)',x1'-repmat(x2(i,:),n,1)')')+1),1)+b);%多项式核 % 高斯核 y2(i,1)=sign(sum(a.*y1.*exp(-dot(x1'-repmat(x2(i,:),n,1)',x1'-repmat(x2(i,:),n,1)')'),1)+b); end e=y1-y11; y2 xlwc=length(find(e~=0))/n
评论
    相关推荐