【SVM预测】基于布谷鸟算法优化支持向量机SVM实现数据预测附matlab代码
1 简介支持向量机 (Support Vector Machines, SVM) 是一种应用广泛的机器学习方法, 具有理论知识清晰完备,适应性和泛化能力良好的优点, 核心思想是在特征空间中寻找到一个最优超平面将两类样本尽可能大的分开, 能够较好的处理小样本、非线性和克服“维数灾难”问题, 并且表现出优秀的分类能力和泛化能力而被广泛应用于分类和回归等领域. 但是 SVM 对核函数的参数选取对分类效果影响很大, 不合适的参数可能使得分类器性能大大降低. 针对 SVM 核参数的选取问题, 目前尚没有统一有效的方法. 传统的参数选择方法如实验法、网格搜索法等由于耗时过长和不必要的验证流程等缺点, 更常用的方法是群智能算法如蚁群算法、遗传算法和粒子群算法等优化支持向量机核参数.粒子群算法由于算法结构简单、寻优能力相对较好, 近年来选择粒子群算法优化 SVM 参数成为研究热点之一.。2 部分代码clear;clc;close all;%% load Data;dataxlsread(SVM训练数据-改.xls,负荷明细数据,B3:B6602);% 6600/24275天%上一天24个数据作为输入 预测下一天的24个数据for i1:274X(i,:)data((i-1)241:i24);Y(i,:)data(i241:(i1)24);end% 归一化[inputn,inputps]mapminmax(X,0,1);Xinputn;[outputn,outputps]mapminmax(Y,0,1);Youtputn;%% 划分数据集rand(state,0)rrandperm(size(X,1));ntrain size(X,1)*0.5 ; % 50%的为训练集 剩下为测试集Xtrain X(r(1:ntrain),:); % 训练集输入Ytrain Y(r(1:ntrain),:); % 训练集输出Xtest X(r(ntrain1:end),:); % 测试集输入Ytest Y(r(ntrain1:end),:); % 测试集输出%% 没优化的24输出msvm% 随机产生惩罚参数与核参数C 1000*rand;%惩罚参数par 1000*rand;%核参数ker rbf;tol 1e-20;Ypredtest_pso Ktest*Beta;% 误差pso_mse_testsum(sum((Ypredtest_pso-Ytest).^2))/(size(Ytest,1)*size(Ytest,2))% 反归一化yuce_psomapminmax(reverse,Ypredtest_pso,outputps);yuce_psoyuce_pso;%% 画图figureplot(trace)xlabel(迭代次数)ylabel(适应度值)title(psosvm适应度曲线寻优曲线)%画出测试集中最后一天的数据由于是随机划分的因此并不是代表12月份最后一天img gcf; %获取当前画图的句柄print(img, -dpng, -r600, ./img3.png)figure;hold on;grid on;axis([0 23 -inf inf]);t0:1:23;plot(t,yuce(end,:),-r*)plot(t,zhenshi(end,:),-ks)legend(预测值,真实值)title(优化前);xlabel(时刻);ylabel(负荷)img gcf; %获取当前画图的句柄print(img, -dpng, -r600, ./img2.png)figure;hold on;grid on;axis([0 23 -inf inf]);t0:1:23;plot(t,yuce_pso(end,:),-r*)plot(t,zhenshi(end,:),-ks)legend(预测值,真实值)title(优化后);xlabel(时刻);ylabel(负荷)img gcf; %获取当前画图的句柄print(img, -dpng, -r600, ./img1.png)%合并出一个图figure;hold on;grid on;t0:1:23;axis([0 23 -inf inf])plot(t,yuce(end,:),-bp)plot(t,yuce_pso(end,:),-r*)plot(t,zhenshi(end,:),-ks)legend(svm预测值,psosvm预测值,真实值)title(优化前后);xlabel(时刻);ylabel(负荷)img gcf; %获取当前画图的句柄print(img, -dpng, -r600, ./img.png) %即可得到对应格式和期望dpi的图像save data_svm_psosvm3 仿真结果4 参考文献[1]康操, and 刘洋. 基于改进的PSO算法LS—SVM模型的短期电力负荷预测模型的研究. 经济技术协作信息 12(2015):1.博主简介擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真相关matlab代码问题可私信交流。部分理论引用网络文献若有侵权联系博主删除。