欢迎来到天天文库
浏览记录
ID:41566581
大小:60.63 KB
页数:9页
时间:2019-08-27
《一完整的SVM分类器的程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一完整的SVM分类器的程序求一完整的SVM分类器的程序,matlab编写的。推荐答案检举I2011-1-2118:19这个是非线性svm的:1•命令函数部分:clear;%清屏clc;X=load('data・txt');n=length(X);%总样本数量y=X(:,4);%类别标志X二X(:,1:3);TOL=0.0001;%精度要求C=1;%参数,对损失函数的权重b=0;%初始设置截距bWold=0;%未更新a时的W(a)Wnew=0;%更新a后的W(a)fori=1:50%设置类别标志为1或者-1y(i)=-1;enda=zeros(n,1);%参
2、数afori=1:n%随机初始化a,a属于[0,C]a(i)=0.2;end%为简化计算,减少重复计算进行的计算K=ones(n,n);fori=1:n%求出K矩阵,便于之后的计算forj二1:nK(i,j)=k(X(i,:),X(j,:));endendsum二zeros(n,1);%中间变量,便于之后的计算,sum(k)=sigmaa(i)*y(i)*K(k,i);fork=1:nfori二1:nsum(k)=sum(k)+a(i)*y(i)*K(i,k);endendwhile1%迭代过程%启发式选点nl二1;%初始化,nl,n2代表选择的2个点n2
3、=2;%nl按照笫一个违反KKT条件的点选择whilenl〈二nify(nl)*(sum(nl)+b)==1&&a(nl)>=C&&a(nl)<=0break;endify(nl)*(sum(nl)+b)>1&&a(nl)~二0break;endify(nl)*(sum(nl)+b)<1&&a(nl)~=Cbreak;endnl二nl+1;end%n2按照最大化IE1-E2
4、的原则选取El二0;E2二0;maxDiff二0;%假设的最大误差El=sum(nl)+b-y(nl);%nl的误差fori二1:ntempSum二sum(i)+b-y(i);ifab
5、s(El-tempSum)>maxDiffmaxDiff二abs(El-tempSum);n2二i;E2=tempSum;endend%以下进行更新alold二a(nl);a2old=a(n2);KK二K(nl,nl)+K(n2,n2)-2*K(nl,n2);a2new=a2old+y(n2)*(E1-E2)/KK;%计算新的a2%a2必须满足约束条件S二y(nl)*y(n2);ifS二二-1U=max(0,a2old一alold);V二min(C,C-alold+a2old);elseU二max(0,alold+a2old-C);V=min(C,alol
6、d+a2old);endifa2new>Va2new二V;endifa2new7、j)*K(i,j);endWnew二Wnew+a.(i);endWnew二Wnew一0.5*tempSum;%以下更新b:通过找到某一个支持向量來计算support二1;%支持向量坐标初始化whileabs(a(support))8、;ifi〈二50fprintf('-T);elsefprintf('r);endfprintf(J判别函数值%f分类结果,,sum(i)+b);ifabs(sum(i)+b-1)<0.5fprintf('l,);elseifabs(sum(i)+b+1)〈0.5fprintfC-l');elsefprintfC归类错误');endendend2•名为f的功能函数部分:functiony二k(xl,x2)y二exp(-0.5*norm(xl-x2).八2);end3.数据:0.8871-0.34918.337601.25191.20836.5049、10-1.19251.93381.87900-0.12772.43
7、j)*K(i,j);endWnew二Wnew+a.(i);endWnew二Wnew一0.5*tempSum;%以下更新b:通过找到某一个支持向量來计算support二1;%支持向量坐标初始化whileabs(a(support))8、;ifi〈二50fprintf('-T);elsefprintf('r);endfprintf(J判别函数值%f分类结果,,sum(i)+b);ifabs(sum(i)+b-1)<0.5fprintf('l,);elseifabs(sum(i)+b+1)〈0.5fprintfC-l');elsefprintfC归类错误');endendend2•名为f的功能函数部分:functiony二k(xl,x2)y二exp(-0.5*norm(xl-x2).八2);end3.数据:0.8871-0.34918.337601.25191.20836.5049、10-1.19251.93381.87900-0.12772.43
8、;ifi〈二50fprintf('-T);elsefprintf('r);endfprintf(J判别函数值%f分类结果,,sum(i)+b);ifabs(sum(i)+b-1)<0.5fprintf('l,);elseifabs(sum(i)+b+1)〈0.5fprintfC-l');elsefprintfC归类错误');endendend2•名为f的功能函数部分:functiony二k(xl,x2)y二exp(-0.5*norm(xl-x2).八2);end3.数据:0.8871-0.34918.337601.25191.20836.504
9、10-1.19251.93381.87900-0.12772.43
此文档下载收益归作者所有