# SVM二分类的MATLAB实现

• T3_641060
了解作者
• 3.1KB
文件大小
• zip
文件格式
• 0
收藏次数
• VIP专享
资源类型
• 0
下载次数
• 2022-04-04 03:49
上传日期

SVM.zip
• SVM
• qiujie1_guihua.m
890B
• qiujie2_semi_infinite.m
2.7KB
• SVM_main.m
1.7KB
• jiaochazhen.m
434B

%多核学习问题 %半无穷线性规划semi-infinite linear programming function [w,b]=semi_infinite(attribute,class,c,xx,yy) n=size(attribute); %这样写长了不免用for循环,怎么改成矩阵表示？？？？？？？ p=4; r=ones(1,p+1); %%%%%%%%%%%%%%%%%%%%%%多项式核 K1=1+attribute*attribute'; K2=(1+attribute*attribute').^2; K3=(1+attribute*attribute').^3; K4=(1+attribute*attribute').^4; %%%%%%%%%%%%%%%%%%%%%%%高斯核 % KK=zeros(n(1),n(1)); % for i=1:n(1) % for j=1:n(1) % KK(i,j)=normest(attribute(i,:)-attribute(j,:)); % end % end % K1=exp(-(KK/(2*1))); % K2=exp(-(KK/(2*2))); % K3=exp(-(KK/(2*3))); % K4=exp(-(KK/(2*4))); %%%%%%%%%%%%%%%%%%%%%%%%%混合 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Y=sparse(class*class'); H=(r(1)*K1+r(2)*K2+r(3)*K3+r(4)*K4).*Y;%n*n矩阵 f1=-ones(size(class)); A1=[-eye(n(1));eye(n(1))]; b1=[zeros(n(1),1);c*ones(n(1),1)]; Aeq1=class'; beq1=0; a=quadprog(H,f1,A1,b1,Aeq1,beq1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%可以用上下两式求出的最小值进行下面的计算吗？ f2=[zeros(p,1);1]; A2=-[[eye(p),zeros(p,1)];[1/2*(a.*class)'*K1*(a.*class),1/2*(a.*class)'*K2*(a.*class),1/2*(a.*class)'*K3*(a.*class),1/2*(a.*class)'*K4*(a.*class),1]]; b2=[zeros(p,1);a'*ones(n(1),1)]; Aeq2=[ones(1,p),0];beq2=1; r=linprog(f2,A2,b2,Aeq2,beq2); theta2=r(p+1);theta1=theta2+1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% while (abs(theta2-theta1)>=exp(-2)) H=(r(1)*K1+r(2)*(K2)+r(3)*K3+r(4)*K4).*Y; a=quadprog(H,f1,A1,b1,Aeq1,beq1); A2=[A2;-[1/2*(a.*class)'*K1*(a.*class),1/2*(a.*class)'*K2*(a.*class),1/2*(a.*class)'*K3*(a.*class),1/2*(a.*class)'*K4*(a.*class),1]]; b2=[b2;a'*ones(n(1),1)]; r=linprog(f2,A2,b2,Aeq2,beq2); theta1=theta2;theta2=r(p+1); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% index=find(a>0.000001); alpha=a(index); y=class(index); x=attribute(index,:); w=x'*(alpha.*y);%w为n(2)*1维 %b的计算方法：全部取均值 bb=y-((alpha.*y)'*(r(1)*K1(index,index)+r(2)*K2(index,index)+r(3)*K3(index,index)+r(4)*K4(index,index)))'; b1=mean(bb); %%%%%%%%%%%%%%%%%%%%训练误差 h=(a.*class)'*(r(1)*K1+r(2)*K2+r(3)*K3+r(4)*K4)+b1; n(1)-sum(eq(class',sign(h))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %检测结果 KK1=1+attribute*xx'; KK2=(1+attribute*xx').^2; KK3=(1+attribute*xx').^3; KK4=(1+attribute*xx').^4; %%%%%%%%%%%%%%%%%%%%%%%高斯核 % KKK=zeros(n(1),length(xx)); % for i=1:n(1) % for j=1:length(xx) % KKK(i,j)=normest(attribute(i,:)-xx(j,:)); % end % end % KK1=exp(-(KKK/(2*1))); % KK2=exp(-(KKK/(2*2))); % KK3=exp(-(KKK/(2*3))); % KK4=exp(-(KKK/(2*4))); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hh=(a.*class)'*(r(1)*KK1+r(2)*KK2+r(3)*KK3+r(4)*KK4)+b1; 20-sum(eq(yy',sign(hh))) figure;plot([h(1:40),hh(1:10),h(41:80),hh(11:20)]);

相关推荐
• 神经网络分类matlab程序
使用matlab编写的神经网络分类程序，方便实用 使用matlab编写的神经网络分类程序，方便实用 使用matlab编写的神经网络分类程序，方便实用 使用matlab编写的神经网络分类程序，方便实用
• 分类MATLAB程序
十几个程序，谱聚类的完整例子，有详细的例子，绝对物有所值，包括花朵分类，核函数等，MATLAB程序，下载绝对值得！包括研究生写论文，也是值得参考
• 模式分类matlab实现
duda给出的模式分类一书的matlab实现.
• SVM文本分类MatLAB源代码
SVM文本分类MatLAB源代码 为m-file格式
• 多层ELM进行MNIST手写字符分类MATLAB代码
多层ELM进行MNIST手写字符分类MATLAB代码，直接运行.m程序，如果现实内存溢出，请改小隐藏节点个数。
• Fisher分类MATLAB算法.rar
手写数字识别Fisher分类MATLAB算法。内有程序，8个数字样本的训练样本。数字的特征提取部分解压后请见project report.ppt.
• 高维多标签分类matlab
高维多标签分类matlab knn，svm，随机森林等算法 784维数据 分为10类
• svm多分类matlab程序
svm多分类matlab程序,包括一对一、一对余等二叉树分类算法
• 神经网络分类matlab程序
使用matlab编写的神经网络分类程序，方便实用
• 朴素贝叶斯分类matlab实现
分类算法是统计学分类方法，它是一类利用概率统计知识进行分类的算法。在许多场合，朴素贝叶斯(Naïve Bayes，NB)分类算法可以与决策树和神经网络分类算法相媲美，该算法能运用到大型数据库中，且方法简单、分类...