1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56Tmpdw
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
支持向量机(support vector machines, SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学习算法中,神经网络等其他机器学习模型已经能很好完成二分类、多分类,学习和研究SVM,理解SVM背后丰富算法知识,对以后研究其他算法大有裨益;在实现SVM过程中,会综合利用之前介绍的一维搜索、KKT条件、惩罚函数等相关知识。本篇首先通过详解SVM原理,后介绍如何利用python从零实现SVM算法。
4.部分源码
if SEL == 1
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%通过ACO搜索最优的2个参数
%% 输入参数列表
%迭代次数
K = 20;
%蚁群规模
N = 10;
%信息素蒸发系数
Rho = 0.8;
%信息素增加强度
Q = 0.75;
%蚂蚁爬行速度
Lambda= 0.4;
%决策变量的下界,M×1的向量
LB =[1000,0.002,1];
%决策变量的上界,M×1的向量
UB =[20000,0.02,2];
%% 第一步:初始化
M = length(LB);%决策变量的个数
%蚁群位置初始化
X = zeros(M,N);
for i=1:M
x=unifrnd(LB(i),UB(i),1,N);
X(i,:)=x;
end
%输出变量初始化
BESTX = cell(K,1);%细胞结构,每一个元素是M×1向量,记录每一代的最优个体
BESTY = zeros(K,1);%K×1矩阵,记录每一代的最优个体的评价函数值
k = 1;%迭代计数器初始化
Tau = ones(1,N);%信息素初始化
Y = zeros(1,N);%适应值初始化
%% 第二步:迭代过程
while k<=K
k
YY=zeros(1,N);
for n=1:N
x = X(:,n);
J = func_fitness(X_train,X_test,T_train,T_test,x(1),x(2),x(3));
YY(n) = J;
end
maxYY = max(YY);
temppos = find(YY==maxYY);
POS = temppos(1);
%蚂蚁随机探路
for n=1:N
x = X(:,n);
J = func_fitness(X_train,X_test,T_train,T_test,x(1),x(2),x(3));
Fx = J;
mx = x + Lambda*rand*x;
J = func_fitness(X_train,X_test,T_train,T_test,mx(1),mx(2),mx(3));
Fmx = J;
if Fmx<Fx
X(:,n)=mx;
Y(n)=Fmx;
else
X(:,n)=x;
Y(n)=Fx;
end
end
%朝信息素最大的地方移动
for n=1:N
rng(n*k);
if n~=POS & rand <= 1-k/K
.............................................................
end
end
indy = find(Y==0);
Y(indy) = 1;
%更新信息素并记录
Tau = Tau*(1-Rho);
maxY = max(Y);
minY = min(Y);
DeltaTau = Q*(maxY-Y)/(maxY-minY)/1e1;
p = 0.05*Tau;
Tau = (1-p).*Tau + DeltaTau;
minY = min(Y);
pos4 = find(Y==minY);
BESTX{k} = X(:,pos4(1));
%更新移动速度
if k <= 1
e1 = minY;
Lambda = Lambda;
else
Lambda = Lambda + 0.15*(minY-e1);
e1 = minY;
end
k=k+1;
end
C0 = BESTX{end}(1);
gamma0 = BESTX{end}(2);
tt0 = BESTX{end}(3);
save ACO.mat C0 gamma0 tt0
end
if SEL == 2
load ACO.mat
%调用四个最优的参数
C = C0;
gamma = gamma0;
tt = tt0;
cmd = ['-s 3',[' -t ', num2str(ceil(tt))],[' -c ', num2str(C)],[' -g ',num2str(gamma)],' -p 0.00001'];
model = svmtrain(T_train,X_train,cmd);
[yIn,input1ps] = mapminmax(In');
[Predict1,error1] = svmpredict(Out,yIn',model);
05_052_m