多维时序 | MATLAB实现BP、SVM、LSSVM多变量时间序列预测(考虑历史特征的影响,多指标、多图输出)

news2025/1/10 12:36:56

多维时序 | MATLAB实现BP、SVM、LSSVM多变量时间序列负荷预测(考虑历史特征的影响,多指标、多图输出)

目录

    • 多维时序 | MATLAB实现BP、SVM、LSSVM多变量时间序列负荷预测(考虑历史特征的影响,多指标、多图输出)
      • 预测效果
      • 基本介绍
      • 程序设计
      • 学习总结
      • 参考资料

预测效果

1
2

3
4

基本介绍

多维时序 | MATLAB实现BP、SVM、LSSVM多变量时间序列负荷预测(考虑历史特征的影响,多指标、多图输出)。
1.Matlab实现BP、SVM、LSSVM多变量时间序列预测;
2.运行环境为Matlab2018b;
3.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测;
4.data为数据集,所有文件放在一个文件夹;
5.命令窗口输出R2、MSE、MAE、MAPE和MBE多指标评价;

程序设计

  • 完整程序和数据获取方式1:私信博主;
  • 完整程序和数据获取方式2:同等价值程序兑换;
function cost = crossvalidatelssvm(model,Y, L, omega, estfct,combinefct)
% Estimate the model performance of a model with l-fold crossvalidation
%
%%%%%%%%%%%%%%%%%%%%%
% INTERNAL FUNCTION %
%%%%%%%%%%%%%%%%%%%%%
%
%if size(X,1)~=size(Y,1), error('X and Y have different number of datapoints'); end
nb_data = size(Y,1);
d = size(model.xtrain,2);
% LS-SVMlab
eval('model = initlssvm(model{:});',' ');
model.status = 'changed';

eval('L;','L=min(round(sqrt(size(model.xfull,1))),10);');
eval('estfct;','estfct=''mse'';');
eval('combinefct;','combinefct=''mean'';');

% Y is raw data, non preprocessed
py = Y;
[~,Y] = postlssvm(model,[],Y);

gams = model.gamcsa; try sig2s = model.kernel_parscsa; catch, sig2s = [];end

%initialize: no incremental  memory allocation
costs = zeros(L,length(gams));
block_size = floor(nb_data/L);

% check whether there are more than one gamma or sigma
for j =1:numel(gams)
    if strcmp(model.kernel_type,'RBF_kernel') || strcmp(model.kernel_type,'RBF4_kernel')
        model = changelssvm(changelssvm(model,'gam',gams(j)),'kernel_pars',sig2s(j));
    elseif strcmp(model.kernel_type,'lin_kernel')
        model = changelssvm(model,'gam',gams(j));
    elseif strcmp(model.kernel_type,'poly_kernel')
        model = changelssvm(changelssvm(model,'gam',gams(j)),'kernel_pars',[sig2s(1,j);sig2s(2,j)]);
    else
        model = changelssvm(changelssvm(model,'gam',gams(j)),'kernel_pars',[sig2s(1,j);sig2s(2,j);sig2s(3,j)]);
    end
    
    
    % calculate matrix for LS-SVM once for the entire data
    S = ones(nb_data,1);
    Inb = eye(nb_data);
    K = kernel_matrix2(omega,model.kernel_type,model.kernel_pars,d);
    Atot = K+Inb./model.gam;
    
    % Cholesky factor
    try R = chol(Atot);
        % Solve full system
        q = R\(R'\[py S]);
        p = q(:,2); q = q(:,1);
        s  = 1/sum(p);
        bias  = s*sum(q);
        alpha  = q - p*bias;
        
        % Two expensive steps yet more efficient that using LINSOLVE on each fold
        Ri = R\Inb;
        C = Ri*Ri' - s*(p)*p';
        
    catch %R = cholinc(sparse(Atot),1e-5);
        A = [K+Inb./model.gam S; S' 0];
        C = pinv(A);
        alpha = C*[py;0];
        %bias = alpha(nb_data+1);
        alpha = alpha(1:nb_data);
    end
    
    % start loop over l validations
    for l = 1:L,
        % divide data in validation set and trainings data set
        if l==L,
            %%train = 1:block_size*(l-1); % not used
            validation = block_size*(l-1)+1:nb_data;
        else
            %%train = [1:block_size*(l-1) block_size*l+1:nb_data]; % not used
            validation = block_size*(l-1)+1:block_size*l;
        end
        % Submatrix of C to compute residuals for the l-th fold left out
        Ckk = C(validation,validation);
        % Solution of small linear system (block_size x block_size)
        try % faster
            Rkk = chol(Ckk+eps);
            betak = Rkk\(Rkk'\alpha(validation));
        catch
            betak = Ckk\alpha(validation);
        end
        % latent outputs for validation
        yh = py(validation) - betak;
        [~,yh] = postlssvm(model,[],yh);
        if ~(model.type(1)=='c')
            costs(l,j) = feval(estfct,yh - Y(validation,:));
        else
            costs(l,j) = feval(estfct,Y(validation,:),sign(yh));
        end
    end
end
cost = feval(combinefct, costs);

学习总结

  • 一些基本的思路和步骤来实现多变量时间序列预测。
  1. 数据预处理:首先需要对多变量时间序列数据进行预处理,包括数据清洗、缺失值处理、特征工程等。对于历史特征的影响,可以考虑加入滞后项或差分项等特征。
  2. 数据划分:将数据分为训练集和测试集,一般采用时间序列的划分方式,即前一部分数据作为训练集,后一部分数据作为测试集。
  3. BP神经网络实现:利用MATLAB中的函数实现BP神经网络,通过调整网络的参数和结构来优化训练效果。
  4. SVM实现:利用MATLAB中函数实现SVM模型,通过调整SVM的超参数来优化模型效果。
  5. LSSVM实现:利用MATLAB中的“trainlssvm”函数实现LSSVM模型,同样需要调整超参数来优化模型效果。
  6. 模型评估:通过对测试集的预测结果进行评估,可以使用常见的评估指标如均方误差、平均绝对误差、均方根误差等,来比较不同模型的预测效果。
  • 以上是一个基本的多变量时间序列预测的实现步骤和思路,具体的实现细节需要根据数据和模型的具体情况进行调整。

参考资料

[1] https://blog.csdn.net/kjm13182345320/category_11799242.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/124571691

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

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

相关文章

大规模并行处理架构Doris概述篇

目录 1 Doris概述篇1.1 前言1.2 Doris简介1.3 核心特性1.4 Doris特点1.5 Doris发展历程1.6 对比其他的数据分析框架1.7 开源OLAP引擎对比1.8 使用场景1.9 使用用户 2 Doris原理篇2.1 名称解释2.2 整体架构2.3 元数据结构2.4 数据分发 1 Doris概述篇 1.1 前言 Doris由百度大数据…

BI 商业智能和报表,傻傻分不清楚?一文给你讲透

我们经常所听到的大数据、商业智能BI、数据分析、数据挖掘等我们都统称为数据信息化。数据信息化可以帮助企业全面的了解企业的经营管理,从经验驱动到数据驱动,降低情绪、心理等主观影响,形成以数据为基础的业务决策支撑,提高决策…

C++入门(内容补充)

目录 前言 1.auto关键字 1.1 auto的使用细则 1.2 auto不能推导的场景 2. 基于范围的for循环(C11) 2.1 范围for的使用条件 3.指针空值nullptr(C11) 3.1 C98中的指针空值 前言 之前给大家更新了一系列关于C的基础语法,那么今天小编再给大家进行部分内容的补充…

【C++】线程库

文章目录 线程库(thread)线程安全锁实现两个线程交替打印1-100 线程库(thread) 在C11之前,涉及到多线程问题,都是和平台相关的,比如Windows和Linux下各有自己的接口,这使得代码的可…

python函数的递归调用

引入 函数既可以嵌套定义也可以嵌套调用。嵌套定义指的是在定义一个函数时在该函数内部定义另一个函数;嵌套调用指的是在调用一个函数的过程中函数内部有调用另一个函数。而函数的递归调用指的是在调用一个函数的过程中又直接或者间接的调用该函数本身。 函数递归…

Python入门(三)变量和简单数据类型(二)

变量和简单数据类型(二) 1.数1.1 整数操作1.2 浮点数操作1.3 整数和浮点数1.4 数中的下划线1.5 同时给多个变量赋值1.6 常量 2.注释2.1 如何编写注释2.2 编写什么样的注释 作者:Xiou 1.数 数在编程中是经常使用的一种数据类型,可…

【目标检测论文阅读笔记】Dynamic Head: Unifying Object Detection Heads with Attentions

Abstract 在目标检测中结合定位和分类的复杂性导致了方法的蓬勃发展。以前的工作试图提高各种目标检测头的性能,但未能提出统一的观点。在本文中,我们提出了一种新颖的动态头部框架 来统一目标检测头部和注意力。通过在用于尺度感知的特征级别之间、用于…

嵌入式Linux:FrameBuffer 和 DRM/KMS(一)

文章目录 前言: Linux 的两种显示方案FrameBufferDRM1、GEM2、KMS 参考:RK3399 探索之旅 / Display 子系统 / 基础概念 参考:DRM架构介绍(一) 前言: Linux 的两种显示方案 包括: FBDEV: Framebuffer Device DRM/KM…

【MediaSoup c#】 worker的创建

js rust 不太熟,c# 似乎还好懂一些。学习media soup 的各个组件及大体使用方式学习其设计理念。MediasoupServer 管理worker列表 worker的表达是通过 IWorker 抽象类 拥有一个observer 实例 (EventEmitter): /// <summary>/// Observer instance./// </summary&g…

顺序表和链表优缺点以及区别

顺序表和链表的区别 顺序表优点缺点 链表优点缺点 顺序表和链表不同点 顺序表 优点 1.尾插尾删效率高 2.支持随机访问 3/相比于链&#xff0c;cpu高速缓存命中率更高 缺点 1.在头部和中部插入删除效率底 2.需要大片连续空间&#xff0c;改变容量不方便 链表 优点 1.不需要…

【嵌入式Linux驱动】驱动开发调试相关的关系记录

https://www.processon.com/mindmap/64537772b546c76a2f37bd2f

MySQL概述 -- 数据模型SQL简介DDL数据库操作

一. 数据模型 介绍完了Mysql数据库的安装配置之后&#xff0c;接下来我们再来聊一聊Mysql当中的数据模型。学完了这一小节之后&#xff0c;我们就能够知道在Mysql数据库当中到底是如何来存储和管理数据的。 在介绍 Mysql的数据模型之前&#xff0c;需要先了解一个概念&#x…

SPSS如何进行对应分析之案例实训?

文章目录 0.引言1.对应分析2.多重对应分析 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对对应分析进行阐述。 1.对应分析 &#…

混合策略改进的金枪鱼群优化算法(HTSO)-附代码

混合策略改进的金枪鱼群优化算法(HTSO) 文章目录 混合策略改进的金枪鱼群优化算法(HTSO)1.金枪鱼群优化算法2. 改进金枪鱼群优化算法2.1 Circle混沌映射初始化种群Circle2.2 Levy flight改进螺旋式觅食 3.实验结果4.参考文献5.Matlab代码6.Python代码 摘要&#xff1a;针对金枪…

操作系统考试复习——第三章 进程调度和实时调度

进程调度的方式分为&#xff1a;抢占式和非抢占式 采用非抢占式时&#xff0c;一旦把处理机分配给某进程后&#xff0c;就让他一直运行下去&#xff0c;决不会因为时钟中断或其他任何原因去抢占当前正在运行进程的处理机。直至该进程完成或因为某件事情堵塞&#xff0c;才把处…

MMediting1.X进行视频超分训练和测试(BasicVsr++)

因为MMediting更新了版本&#xff0c;整体的变化比较大&#xff0c;导致之前的一些介绍操作的帖子不太适合新手入门&#xff0c;这里以作者自己对BasicVsr模型进行测试和训练的过程&#xff0c;写一下具体的操作过程。 &#xff08;1&#xff09;找到模型     首先在config…

JavaScript判断是否为NaN

&#xff08;旅行是最劳顿&#xff0c;最麻烦&#xff0c;叫人本相必现的时候。经过长期苦旅行而彼此不讨厌的人&#xff0c;才可以结交作朋友。——钱钟书&#xff09; 为什么NaN在js值得一提 相信你在实际开发中&#xff0c;经常遇到一下场景 const pasNumber parseInt(un…

财报解读:照明行业景气上行,欧普照明已步入增长“快车道”

2023年&#xff0c;随着文旅景观照明复苏&#xff0c;教室照明市场蓬勃发展&#xff0c;双碳战略下照明数字化系统加速建设&#xff0c;照明企业迎来行业曙光。近日&#xff0c;A股绿色照明龙头企业欧普照明股份有限公司&#xff08;下称“欧普照明”&#xff0c;股票代码60351…

刷题记录˃ʍ˂

一、1033. 移动石子直到连续 思路 这道题是一道数学题&#xff0c;它一共分为三种可能 第一种可能为三个石子本来就是连续的时候 第二种可能为最少步数为1的时候&#xff0c;相邻石子不能大于一格 第三种可能为最少步数为2的时候&#xff0c;这时相邻石子大于一格 那么第二…

华为MPLS跨域C1方式RR场景(数据经过RR)实验配置

目录 配置BGP邻居的建立 配置MPLS LDP 配置RR之间的MP-BGP邻居 根据图配置接口的IP地址和IGP协议 配置BGP邻居的建立 PE1和RR1建立IBGP邻居、RR1和ASBR1建立IBGP邻居&#xff08;RR1作为反射器&#xff09; PE1和RR1建立MP-IBGP邻居&#xff08;RR1传给PE1的Vpnv4路由要求更…