1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y52cm59r
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
支持向量机(support vector machines, SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学习算法中,神经网络等其他机器学习模型已经能很好完成二分类、多分类,学习和研究SVM,理解SVM背后丰富算法知识,对以后研究其他算法大有裨益;在实现SVM过程中,会综合利用之前介绍的一维搜索、KKT条件、惩罚函数等相关知识。本篇首先通过详解SVM原理,后介绍如何利用python从零实现SVM算法。
4.部分源码
ParticleScope=[0.1,150;
0.1,10];
ParticleSize=2;
SwarmSize=20;
LoopCount=10;
opt=zeros(LoopCount,3);
MeanAdapt=zeros(1,LoopCount);
OnLine=zeros(1,LoopCount);
OffLine=zeros(1,LoopCount);
%控制显示2维以下粒子维数的寻找最优的过程
% DrawObjGraphic(ParticleSize,ParticleScope,AdaptFunc(XX,YY));
[ParSwarm,OptSwarm]=InitSwarm(SwarmSize,ParticleSize,ParticleScope);
%开始更新算法的调用
for k=1:LoopCount
%显示迭代的次数:
disp('----------------------------------------------------------')
TempStr=sprintf('第 %g次迭代',k);
disp(TempStr);
disp('----------------------------------------------------------')
%在测试函数图形上绘制初始化群的位置
%if 2==ParticleSize
% for ParSwarmRow=1:SwarmSize
% stem3(ParSwarm(ParSwarmRow,1),ParSwarm(ParSwarmRow,2),ParSwarm(ParSwarmRow,5),'r.','markersize',8);
%end
%end
%暂停让抓图
% disp('开始迭代,按任意键:')
%pause
%调用一步迭代的算法
[ParSwarm,OptSwarm]=BaseStepPso(ParSwarm,OptSwarm,ParticleScope,0.9,0.4,LoopCount,k);
% if 2==ParticleSize
% for ParSwarmRow=1:SwarmSize
% stem3(ParSwarm(ParSwarmRow,1),ParSwarm(ParSwarmRow,2),ParSwarm(ParSwarmRow,5),'r.','markersize',8);
% end
%end
t=OptSwarm(SwarmSize+1,1);
u=OptSwarm(SwarmSize+1,2);
YResult=AdaptFunc(t,u);
str=sprintf('%g步迭代的最优目标函数值%g',k,YResult);
disp(str);
%记录每一步的平均适应度
MeanAdapt(1,k)=mean(ParSwarm(:,2*ParticleSize+1));
end
%for循环结束标志
%记录最小与最大的平均适应度
MinMaxMeanAdapt=[min(MeanAdapt),max(MeanAdapt)];
%计算离线与在线性能
for k=1:LoopCount
OnLine(1,k)=sum(MeanAdapt(1,1:k))/k;
OffLine(1,k)=max(MeanAdapt(1,1:k));
end
for k=1:LoopCount
OffLine(1,k)=sum(OffLine(1,1:k))/k;
end
A185