时序预测 | MATLAB实现PSO-SVM粒子群优化支持向量机时间序列预测

news2024/12/23 19:04:07

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

⛄ 内容介绍

为提高基于支持向量机(SVM)的时间序列预测方法的泛化能力与预测精度,研究了一种基于粒子群优化(PSO)的LSSVM.该方法以交叉验证误差为评价准则,利用PSO对多个具有不同超参数的SVM进行基于迭代进化的优化选择,并以交叉验证误差最小的SVM作为最终优化后的SVM.时间序列预测实例表明,经PSO优化后的SVM的预测精度高于未经优化的LSSVM与传统时间序列预测方法的预测精度.

⛄ 部分代码

% 支持向量机用于收盘价预测,首先是未优化的,其次是优化后的

%% 清空环境

tic;clc;clear;close all;format compact

%% 加载数据

data=xlsread('EUA五分钟.xlsx','G2:G30763'); save data data

load data

% 归一化

[a,inputns]=mapminmax(data',0,1);%归一化函数要求输入为行向量

data_trans=data_process(5,a);%% 对时间序列预测建立滚动序列,即用1到m个数据预测第m+1个数据,然后用2到m+1个数据预测第m+2个数据

input=data_trans(:,1:end-1);

output=data_trans(:,end);

%% 数据集 前75%训练 后25%预测

m=round(size(data_trans,1)*0.75);

Pn_train=input(1:m,:);

Tn_train=output(1:m,:);

Pn_test=input(m+1:end,:);

Tn_test=output(m+1:end,:);

%% 1.没有优化的SVM

bestc=0.001;bestg=10;%c和g随机赋值 表示没有优化的SVM

t=0;%t=0为线性核函数,1-多项式。2rbf核函数

cmd = ['-s 3 -t ',num2str(t),' -c ', num2str(bestc),' -g ',num2str(bestg),' -p 0.01 -d 1'];  

    

model = svmtrain(Tn_train,Pn_train,cmd);%训练

[predict,~]= svmpredict(Tn_test,Pn_test,model);%测试

% 反归一化,为后面的结果计算做准备

predict0=mapminmax('reverse',predict',inputns);%测试实际输出反归一化

T_test=mapminmax('reverse',Tn_test',inputns);%测试集期望输出反归一化

T_train=mapminmax('reverse',Tn_train',inputns);%训练集期望输出反归一化

figure

plot(predict0,'r-')

hold on;grid on

plot(T_test,'b-')

xlabel('样本编号')

ylabel('收盘价/元')

if t==0

    title('线性核SVM预测')

elseif t==1

    title('多项式核SVM预测')

else

    title('RBF核SVM预测')

end

legend('实际输出','期望输出')

figure

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

    title('线性核SVM预测的误差')

elseif t==1

    title('多项式核SVM预测的误差')

else

    title('RBF核SVM预测的误差')

end

grid on

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './img6.png') 

figure

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

    title('线性核SVM预测的误差')

elseif t==1

    title('多项式核SVM预测的误差')

else

    title('RBF核SVM预测的误差')

end

grid on

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './img5.png')   

figure

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

    title('线性核SVM预测的误差')

elseif t==1

    title('多项式核SVM预测的误差')

else

    title('RBF核SVM预测的误差')

end

grid on

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './img4.png')           %即可得到对应格式和期望dpi的图像

figure')

% ylabel('适应度值/log10(函数值)')

% img =gcf;  %获取当前画图的句柄

% print(img, '-dpng', '-r600', './img4.png')         %即可得到对应格式和期望dpi的图像

% %% 结果分析

disp('最优惩罚参数与核参数为:')

bestc

bestg​

disp('优化前的均方误差')

mse_svm=mse(predict0-T_test)

disp('优化前的平均相对误差')

mre_svm=sum(abs(predict0-T_test)./T_test)/length(T_test)

disp('优化前的平均绝对误差')

abs_svm=mean(abs(predict0-T_test))

disp('优化前的归一化均方误差')

a=sum((predict0-T_test).^2)/length(T_test);

b=sum((predict0-mean(predict0)).^2)/(length(T_test)-1);

one_svm=a/b

disp('优化后的训练集均方根误差')

rmse_svm0=sqrt(mse(predict_tr-T_train))

disp('优化后的测试集均方根误差')

rmse_svm=sqrt(mse(predict1-T_test))

disp('优化后的均方误差')

mse_pso_svm=mse(predict1-T_test)

disp('优化后的平均相对误差')

mre_pso_svm=sum(abs(predict1-T_test)./T_test)/length(T_test)

disp('优化后的平均绝对误差')

abs_pso_svm=mean(abs(predict1-T_test))

disp('优化后的归一化均方误差')

a1=sum((predict1-T_test).^2)/length(T_test);

b1=sum((predict1-mean(predict1)).^2)/(length(T_test)-1);

one_pso_svm=a1/b

toc %结束计时

⛄ 运行结果

⛄ 参考文献

[1]朱伟李楠石超峰. 基于粒子群算法优化支持向量机的铁路客运量预测模型[J]. 商丘师范学院学报, 2013, 000(012):33-35.

[2]张弦, 王宏力. 基于粒子群优化的最小二乘支持向量机在时间序列预测中的应用[J]. 中国机械工程, 2011, 22(21):5.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode刷题日记之链表II

1.四数相加II 题目描述 解题思路 1.定义一个哈希Map,其中key存放两数之和,value存放两数和出现的次数。 2.遍历统计出nums1和nums元数相加和出现的次数(ab)。 3.遍历nums3和nums4,并求和(cd),统计出(0-(cd))在Map中出现的次数。 4.返回(0-(…

央企招聘:中国人民银行2023年度招聘启事

2023年中国外汇交易中心 博士后科研工作站招聘公告 中国外汇交易中心暨全国银行间同业拆借中心(以下简称“交易中心”)于1994年成立,是中国人民银行直属事业单位,为银行间外汇、货币、债券及其衍生产品提供交易、发行、基准及一线…

如何通过.exe文件控制一台电脑

CVE-2022-21999漏洞 如何实现发送一个.exe文件偷偷控制他人的电脑?这个想法很刑的,所以我只是说明我的实现方式,具体操作建议仅用于hvv等专业领域,请勿以身试法。 首先我们分析一下.exe文件的实际应用场景---windows系统的电脑&am…

11、setoolkit工具 构造钓鱼网站、powershell注入

靶机:192.168.11.105攻击机kail:192.168.11.1061.在kali中启动setoolkitsetoolkit2.利用SET构建钓鱼网站1)选择1 Social-Engineering Attacks (社会工程学攻击)2)选择2 Website Attack Vectors &#xff…

Spring Boot 概念、创建和运行 · Spring Boot 的优点 · 启动第一个 Spring Boot · Spring Boot 的注意事项

一、什么是 Spring Boot二、Spring Boot 优点三、Spring Boot 项目创建四、项目目录介绍和运行4.1 运行项目4.2 输出 Hello World五、注意事项5.1 包路径错误5.2 小结:约定大于配置六、总结一、什么是 Spring Boot Spring 的诞生是为了简化 Java 程序的开发的&…

GAMES101-现代计算机图形学入门-闫令琪 课程笔记 - 汇总(上)

一些前言与感慨: 学了再多的AI,终究还是没有办法拒绝计算机图形学的魅力。当初就不该一招不慎,踏入AI的坑。 可惜当年在学校里学计算机图形学的时候,还没有闫令琪这么好的课程,当时学得一知半解,云里雾里…

极市直播回放第106期丨阿里达摩院:兼顾速度与精度的高效目标检测框架DAMO-YOLO

阿里巴巴达摩院智能计算实验室团队设计并开源了一款兼顾速度与精度的目标检测框架DAMO-YOLO,其性能超越了目前的一众YOLO系列方法,在实现精度SOTA的同时,保持了很高的推理速度。DAMO-YOLO是在YOLO框架基础上引入了MAE-NAS、efficient-RepGFPN…

cas:1628790-40-8|脂溶性Cyanine7-COOH|CY7-Carboxylic Acid

cas:1628790-40-8|脂溶性Cyanine7-COOH|CY7-Carboxylic Acid 名称:脂溶性Cyanine7-COOH|CY7-Carboxylic Acid cas:1628790-40-8 英文同义词: Cy7;Colpro;Prothil;R-13615;Cy7-COOH;CY7ACID;Cy7NHS;AY-62022;Cy7,>97%;Sulfo-Cyanine7 中文名称:磺基-CY7羧酸 …

【小甲鱼C语言】课后笔记第一章第四节——数据类型

目录 1、数据类型 2、short 和 long 3. sizeof 运算符 4. signed 和 unsigned 5、课后习题(编程题) 1、数据类型 在 C 语言里,所谓的数据类型就是坑的大小。我们说变量就是在内存里边挖一个坑,然后给这个坑命名。那么数据类型…

U盘格式化后能恢复数据吗?U盘删除的数据还能恢复吗

U盘格式化后能恢复数据吗?通常情况下,我们U盘里的数据丢失后,它们并没有立即消失,它们只是被系统做了一个标记,将数据存储的位置标记成可写入的状态,只有当新数据写入的时候,这个存储位置才会被…

USB转UART的桥接控制器 国产DPU02能不能软硬件兼容替换CP2102?

DPU02是一个高度集成的USB转UART的桥接控制器,可将RS-232设计更新为USB设计,并简化PCB组件空间。 该DPU02包括了一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带有完整调制解调控制信号的异步串行数据总线(UART)控制器…

自动驾驶车辆安全保证机制-Mobileye的RSS模型

自动驾驶汽车(AV)将如何与人类司机安全地共享道路? 成功实现自动驾驶未来的最大威胁之一是对自动驾驶汽车安全驾驶的含义缺乏共识。只有当行业、政府和公众有一个共同的方式来理解和评估自动驾驶汽车(AV)的驾驶技能和安全,他们才会被信任,可以安全地与人类驾驶的车辆一起…

Go1.19.3 数组与切片原理简析

数组 Go语言数组,声明有如下几种方式: var arr1 [10]intarr1[0] 10000var arr2 [10]int{0:0,2:2}var arr3 [...]int{1,2,3}其中arr1只是进行声明,数组在声明时,内存空间已经被开辟过,所以可以赋值。arr2是声明的同…

javafx 编写管理页面 增删改查

注册界面&#xff1a;用户通过输入页面信息&#xff0c;点击注册&#xff0c;将数据存入数据库中。 <Tab text"用户注册"> <content> <AnchorPane minHeight"0.0" minWidth"0.0" prefHeight"761.0" prefWidth"819…

Vue的四个常用选项

文章目录前言一、四大选项简介二、filters&#xff08;过滤器&#xff09;三、computed&#xff08;计算属性&#xff09;四、methods&#xff08;方法&#xff09;五、watch&#xff08;观察&#xff09;总结:前言 本文讲解了vue.js中的四个常用选项&#xff0c;4个参数选项&…

数据结构——归并排序

坚持看完&#xff0c;结尾有思维导图总结 这里写目录标题归并排序的思路归并算法的图解具体程序对性质的分析归并排序的非递归版本总结归并排序的思路 首先第一个问题是&#xff0c;什么是归并排序&#xff1f; 官方的说法: 归并排序&#xff08;MERGE-SORT&#xff09;是建立…

pikachu靶场-7 不安全的文件下载和上传

不安全的文件下载和上传 不安全的文件下载 文件下载&#xff08;unsafedownload&#xff09;漏洞概述 很多网站都会提供文件下载功能&#xff0c;即用户可以通过点击下载链接&#xff0c;下载到链接所对应的文件。 但是&#xff0c;如果文件下载功能设计不当&#xff0c;则…

基于51单片机的数字频率计设计

仿真原理图&#xff1a; 程序运行图&#xff1a; 部分程序&#xff1a; #define LED_GLOBAL 1 #include "led.h" /******************************************************************************************* *函数名称&#xff1a;delay_us(uint us) *函数…

15.JavaScript 02

文章目录一、DOM简单学习&#xff1a;为了满足案例要求1、DOM知识点简单学习2、事件简单学习3、案例1&#xff1a;电灯开关二、BOM1、概念2、组成3、Window&#xff1a;窗口对象1. Window窗口对象知识点2. 案例2&#xff1a;轮播图4、Location&#xff1a;地址栏对象1. Locatio…

手写Spring5(资源加载Spring.xml解析和注册Bean对象)

文章目录目标设计思路项目结构一、实现1、资源加载接口定义和实现获取ClassPath下的文件信息获取指定文件路径的方式读取文件信息获取HTTP的方式读取云服务的文件2、包装资源加载器定义和实现-策略模式的体现包装资源加载器实现3、Bean定义读取接口4、Bean定义抽象类实现5、解析…