ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【预测模型】基于布谷鸟算法改进SVM实现预测matlab代码

2021-10-30 13:02:44  阅读:224  来源: 互联网

标签:SVM 预测 predict tsx ts TS matlab TSX 归一化


1 简介

支持向量机(Support Vector Machine,SVM) 是 Vapnik 等人于 1995 年提出的一种基于统计学习理论的新型机器学习方法,它能较好地解决小样本、非线性等实际问题,已成为智能技术领域研究的热点,目前已广泛应用于状态评估、故障诊断、模式识别、化工建模等诸多领域。 支持向量机是由线性可分时的最优分类超平面不断发展来的,其本质是在训练样本数据中找出用于构造最优分类超平面的支持向量,在数学上可归结为求解一个二次优化问题。对于非线性分类情况下的分类问题,支持向量机的总体思路是首先利用一个非线性变换把输入空间数据映射到一个高维的特征向量空间,然后在该特征空间中构造出最优分类超平面,进行线性分类,最后映射回到原空间后就成了输入空间中的非线性分类。

2 部分代码

%% 数据的提取和预处理                            

% 载入测试数据上证指数(1990.12.19-2009.08.19)
% 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数
% 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额.
clear
clc
load chapter_sh.mat;

% 提取数据
[m,n] = size(sh);
ts = sh(2:m,1);    % 选取2到4579个交易日内每日的开盘指数作为因变量
tsx =sh(1:m-1,:); %选取1到4578个交易日

% 数据预处理,将原始数据进行归一化
ts = ts';
tsx = tsx';

% mapminmax为matlab自带的映射函数
% 对ts进行归一化
[TS,TSps] = mapminmax(ts,1,2);%归一化在区间[1 2]
% 对TSX进行转置,以符合libsvm工具箱的数据格式要求
TS = TS';

% mapminmax为matlab自带的映射函数
% 对tsx进行归一化
[TSX,TSXps] = mapminmax(tsx,1,2);%归一化在区间[1 2]
% 对TSX进行转置,以符合libsvm工具箱的数据格式要求
TSX = TSX';

Tol=1.0e-5;  
n=25;%鸟巢个数
% Discovery rate of alien eggs/solutions
pa=0.25;

                                                         %为最大迭代次数限制
%% Simple bounds of the search domain
% Lower bounds
nd=2; 
Lb=0.01*ones(1,nd); 
% Upper bounds
Ub=100*ones(1,nd);                                                              %随机产生初始解
% Random initial solutions
for i=1:n,      
nest(i,:)=Lb+(Ub-Lb).*rand(size(Lb));
end
%得到当前的最优解
% Get the current best
for i=1:n
   fitness(i)=fun(nest(i,:));
end

N_iter=0;                                                                   %开始迭代
%% Starting iterations
for iter=1:1 %while (fmin>Tol),

bestc=bestnest(1);
bestg=bestnest(2);

cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.01'];
model = svmtrain(TS,TSX,cmd);

%% SVM网络回归预测
[predict,mse,~] = svmpredict(TS,TSX,model);%课本138页没有prob_estimates
predict = mapminmax('reverse',predict',TSps); %反归一化
predict = predict';
error=predict-ts';
errorn=sum(abs(error));
figure;     
hold on;
plot(ts,'-o');
plot(predict,'r-^');
legend('原始数据','回归预测数据');
hold off;
title('原始数据和回归预测数据对比','FontSize',12);
xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);
ylabel('开盘数','FontSize',12);
grid on;
img =gcf;  %获取当前画图的句柄
print(img, '-dpng', '-r600', './img.png')         %即可得到对应格式和期望dpi的图像

3 仿真结果

4 参考文献

[1]路璐, and 程良伦. "改进布谷鸟搜索算法优化SVM的网络流量预测模型." 计算机应用与软件 01(2015):124-127.

 

标签:SVM,预测,predict,tsx,ts,TS,matlab,TSX,归一化
来源: https://blog.csdn.net/m0_60703264/article/details/121049463

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有