【SVM预测】基于人工蜂群算法优化支持向量机SVM实现数据预测附Matlab代码 1 简介为确定合理的底板防水煤岩柱尺寸,减少底板突水安全事故的发生,利用支持向量机(SVM)与人工蜂群算法(ABCA)综合研究底板破坏深度问题.由于SVM训练参数惩罚因子C和核函数宽度g的选择对预测精度的影响显著,采用ABCA优化该训练参数的选择过程,建立基于SVM的底板破坏深度预测模型.选取采深,煤层倾角,采厚,工作面斜长,底板抗破坏能力和是否有切穿断层或破碎带作为影响底板破坏深度的主要影响指标,利用现场实测的30组数据作为样本对该模型进行训练和预测.结果表明:该预测模型的平均相对误差为12.5%,平均绝对误差为0.986m,均方误差为0.005,平方相关系数为0.980,较其他预测模型具有更强的泛化能力和更高的预测精度.2 部分代码tic % 计时%% 清空环境准备数据clearclcclose allload wndspd % 示例数据为风速时间序列数据共144个样本% 训练/测试数据准备用前3天预测后一天,用前100天的数据做训练train_input(1,:)wndspd(1:97);train_input(2,:)wndspd(2:98);train_input(3,:)wndspd(3:99);train_output[wndspd(4:100)];test_input(1,:)wndspd(101:end-3);test_input(2,:)wndspd(102:end-2);test_input(3,:)wndspd(103:end-1);test_output[wndspd(104:end)];% 数据归一化处理[input_train,rule1]mapminmax(train_input);[output_train,rule2]mapminmax(train_output);input_testmapminmax(apply,test_input,rule1);output_testmapminmax(apply,test_output,rule2);%% %%%%%%%%%%%%%用ABC算法优化SVR中的参数c和g开始%%%%%%%%%%%%%%%%%%%%%% 参数初始化NP20; % 蜂群规模FoodNumberNP/2; % 蜜源解数量limit100; % 当有蜜源连续没被更新的次数超过limit时该蜜源将被重新初始化maxCycle10; % 最大迭代次数% 待优化参数信息D2; % 待优化参数个数次数为c和g两个ubones(1,D)*100; % 参数取值上界此处将c和g的上界设为100lbones(1,D)*(0.01); % 参数取值下界此处将c和g的下界设为0.01runtime2; % 可用于设置多次运行让ABC算法运行runtime次以考察程序的稳健性BestGlobalMinsones(1,runtime); % 全局最小值初始化这里的优化目标为SVR预测结果中的平均平方误差MSE初始化为最差值1BestGlobalParamszeros(runtime,D); % 用于存放ABC算法优化得到的最优参数​% 如果连续没有更新的次数大于限定次数则由侦查蜂重新初始化该蜜源if (trial(ind)limit)Bas(ind)0;sol(ub-lb).*rand(1,D)lb;ObjValSolfobj(sol,input_train,output_train,input_test,output_test);FitnessSolcalculateFitness(ObjValSol);Foods(ind,:)sol;Fitness(ind)FitnessSol;ObjVal(ind)ObjValSol;enditeriter1;end % 一次ABC算法完结BestGlobalMins(r)GlobalMin; % 记录本次ABC算法的最优目标函数值BestGlobalParams(r,:)GlobalParams; % 记录本次ABC算法的最优参数end % end of runs%% %%%%%%%%%%%%%用ABC算法优化SVR中的参数c和g结束%%%%%%%%%%%%%%%%%%%%%% 打印参数选择结果这里输出的是最后一次ABC算法寻优得到的参数bestcGlobalParams(1);bestgGlobalParams(2);disp(打印选择结果);strsprintf(Best c %gBest g %g,bestc,bestg);disp(str)%% 利用回归预测分析最佳的参数进行SVM网络训练cmd_cs_svr[-s 3 -t 2, -c ,num2str(bestc), -g ,num2str(bestg)];model_cs_svrsvmtrain(output_train,input_train,cmd_cs_svr); % SVM模型训练%% SVM网络回归预测[output_test_pre,acc]svmpredict(output_test,input_test,model_cs_svr); % SVM模型预测及其精度test_premapminmax(reverse,output_test_pre,rule2);test_pre test_pre;err_prewndspd(104:end)-test_pre;figure(Name,测试数据残差图)set(gcf,unit,centimeters,position,[0.5,5,30,5])plot(err_pre,*-);legend(预测残差实际-预测);figure(Name,原始-预测图)plot(test_pre,*r-);hold on;plot(wndspd(104:end),bo-);legend(预测,原始)set(gcf,unit,centimeters,position,[0.5,13,30,5])result[wndspd(104:end),test_pre];MAEmymae(wndspd(104:end),test_pre)MSEmymse(wndspd(104:end),test_pre)MAPEmymape(wndspd(104:end),test_pre)%% 显示程序运行时间toc3 仿真结果4 参考文献[1]朱志洁, 张宏伟, 王春明. 基于人工蜂群算法优化支持向量机的 采场底板破坏深度预测[J]. 重庆大学学报自然科学版, 2015, 38(6):7.博主简介擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真相关matlab代码问题可私信交流。部分理论引用网络文献若有侵权联系博主删除。