首页 > 其他分享 >DeepMTS深度学习神经网络多元时间序列预测宏观经济数据可视化|附数据代码

DeepMTS深度学习神经网络多元时间序列预测宏观经济数据可视化|附数据代码

时间:2024-05-22 22:45:33浏览次数:27  
标签:预测 模型 神经网络 DeepMTS 可视化 序列 时间 数据

原文链接:https://tecdat.cn/?p=36237

原文出处:拓端数据部落公众号

在数据科学领域,时间序列分析一直是一个至关重要的研究方向,尤其在金融、气象、医学以及许多其他科学和工业领域中,准确的时间序列预测对于制定策略、政策规划以及资源管理都具有极其重要的意义。随着技术的不断进步,传统的时间序列分析方法已经难以满足复杂多变的数据需求。因此,探索更为先进和高效的时间序列预测方法成为了当今研究的重要课题。

近年来,深度学习技术的快速发展为时间序列预测领域带来了新的可能。深度学习以其强大的数据特征学习和复杂模型拟合能力,在图像识别、自然语言处理等领域取得了显著成果。受此启发,研究者们开始尝试将深度学习技术应用于时间序列预测,尤其是多元时间序列预测,以期望能够进一步提高预测精度和模型泛化能力。

在此背景下,本文用Python帮助客户实现名为DeepMTS的深度学习模型,该模型专门设计用于多元时间序列预测。DeepMTS模型结合了深度学习的优势,通过构建多层次的神经网络结构,能够自动学习时间序列数据中的复杂特征和模式,从而实现对多元时间序列的准确预测。

 DeepMTS 数据预处理

为了构建DeepMTS模型,我们首先需要对宏观数据进行预处理。

加载宏观数据集

数据集包含了多个宏观经济指标的时间序列数据。

   


	# 显示数据集的前几行  

	print(mdata.head())

准备日期索引

为了将数据集转换为时间序列格式,我们首先需要创建一个日期索引。我们从yearquarter列中提取信息,并将它们组合成季度日期字符串。

   


	# 将日期索引设置为数据框的索引  

	mdata.index = pd.DatetimeIndex(quarterly)

选择相关变量

在本研究中,我们仅选择几个关键变量进行进一步分析。这些变量包括政府实际支出(realgovt)、联邦基金利率(tbilrate)和消费者物价指数(cpi)。

对数差分转换

为了消除潜在的异方差性和趋势性,我们对选定的变量进行对数差分转换。这可以通过计算每个变量的对数差分(即连续两个时间点之间的对数变化)来实现。

经过上述步骤处理后,我们得到了一个用于进一步分析的时间序列数据集。在后续章节中,我们将使用此数据集来构建和评估DeepMTS模型。

image.png

image.png

202 rows × 3 columns

数据集的划分与DeepMTS模型的训练与预测

在本研究中,我们首先将数据集划分为训练集和测试集,以便对DeepMTS模型进行训练和评估。数据集的划分基于时间序列的顺序,我们保留了前80%的数据作为训练集,后20%的数据作为测试集。

具体地,我们首先获取数据集的行数n,然后使用np.floor(n*0.8)计算训练集的最大索引值max_idx_train。接着,我们使用np.arange函数生成训练集和测试集的索引数组training_indextesting_index。最后,我们根据这些索引从原始数据集中提取出训练集df_train和测试集df_test

接下来,我们配置并训练DeepMTS模型。在此,我们选择ElasticNetCV作为基模型,并设置模型的其他参数,如层数n_layers为3,滞后阶数lags为4,隐藏层特征数n_hidden_features为5,重复次数replications为10,核函数kernel为高斯核,并开启详细输出verbose为1。

通过以上步骤,我们成功地将数据集划分为训练集和测试集,并配置了DeepMTS模型进行训练和预测。这为后续的性能评估和分析提供了基础。

image.png

模型结果的可视化分析

为了更直观地理解DeepMTS模型对各个宏观经济变量的预测效果,我们采用两种不同类型的图表对模型输出进行了可视化。

首先,我们使用了部分依赖图(Partial Dependence Plot,简称PDP,此处用“pi”类型表示)来展示模型对“realgovt”(政府实际支出)、“tbilrate”(联邦基金利率)和“cpi”(消费者物价指数)的预测趋势。通过调用plot()方法并指定type="pi",我们分别绘制了这三个变量的PDP图。这些图表有助于我们理解模型在给定变量上的预测行为,以及这些变量对整体预测结果的影响。

   
plot("realgovt", type_plot="pi")
 

xxx

xxx

xxx

接着,为了更详细地展示模型在每个时间点上的预测效果,我们使用了面条图(Spaghetti Plot,此处用“spaghetti”类型表示)。我们同样对“realgovt”、“tbilrate”和“cpi”这三个变量进行了可视化。面条图能够清晰地展示模型在每个时间点上的预测值与实际值之间的对比,从而帮助我们评估模型的预测性能。

xxx

xxx

image.png

ecosystem-1220667040-thumb-1536x1536.webp

标签:预测,模型,神经网络,DeepMTS,可视化,序列,时间,数据
From: https://www.cnblogs.com/tecdat/p/18207281

相关文章

  • R语言聚类、文本挖掘分析虚假电商评论数据:K-Means(K-均值)、层次聚类、词云可视化|附
    全文链接:http://tecdat.cn/?p=32540原文出处:拓端数据部落公众号聚类分析是一种常见的数据挖掘方法,已经广泛地应用在模式识别、图像处理分析、地理研究以及市场需求分析。本文主要研究聚类分析算法K-means在电商评论数据中的应用,挖掘出虚假的评论数据。本文主要帮助客户研究聚类......
  • R语言电影数据分析:随机森林探索电影受欢迎程度因素、参数调优可视化
    全文链接:https://tecdat.cn/?p=34495原文出处:拓端数据部落公众号是什么让一个电影受欢迎?也许是影片的总收入(影院条目和DVDsellings)。我们选择的变量将是票房(gross)或观众评分(movie_facebook_likes)。众所周知,关于IMDB和番茄的好评与高收益的电影有关。我们的分析旨在回答以下研......
  • Python可视化训练
    Python可视化训练一实验目的l 使学生综合运用图形用户界面设计的概念;l 使学生熟悉使用中间面板,组成层次复杂的GUI界面;l 使学生掌握Python图形绘制和图像处理步骤与方法;l 使学生掌握Python可视化处理的步骤、方法与编程;二实验环境及实验准备l 所需硬件环境为微机;l ......
  • 可视化学习:使用极坐标参数方程和SDF绘制有趣的图案
    前言本文将介绍如何使用极坐标参数方程和上一篇文章提到的距离场SDF来绘制有趣的图案。说到曲线和几何图形的绘制,我们知道图形系统默认支持的是通过直角坐标绘制,但是有些曲线呢,不太容易使用直角坐标系来表示,却可以很方便地使用极坐标来表示,这个时候我们可以选择通过极坐标和直角......
  • 揭秘配电箱新视角:3D漫游可视化技术
    传统的配电箱房间往往给人一种压抑、复杂的感觉。错综复杂的电线、密密麻麻的设备,让人一眼望去就感到头晕目眩。对于非专业人士来说,想要快速了解整个配电系统的运行情况,几乎是不可能的。而且,一旦出现故障,查找问题、进行维修也是一项极其繁琐的工作。 然而随着科技的进步,一种全......
  • 无需重新学习,使用 Kibana 查询/可视化 SLS 数据
    1.场景现在通过SLS的ES兼容能力,可以很方便地实现用Kibana来查询和可视化SLS的数据。对于从ES迁移到SLS的用户可以继续保留原来的Kibana使用习惯。下面来演示如何通过Kibana来访问SLS。2.使用方法部署架构这里蓝色部分是需要客户端部署的组件。Kibana就......
  • BP神经网络实现分类模型
    训练数据生成每个x向量维度为3,y标签使用one-hot编码进行3分类。生成的数据如下:构建BP神经网络模型初始化权重和偏置矩阵如下:训练神经网络绘制梯度下降损失函数曲线图附(如果采用梯度下降更新权重,即权重值发生少量变化后,基于损失值的变化更新权重的方法如下:......
  • NumPy 随机数据分布与 Seaborn 可视化详解
    随机数据分布什么是数据分布?数据分布是指数据集中所有可能值出现的频率,并用概率来表示。它描述了数据取值的可能性。在统计学和数据科学中,数据分布是分析数据的重要基础。NumPy中的随机分布NumPy的random模块提供了多种方法来生成服从不同分布的随机数。生成离散分布随......
  • 借助开源数据可视化平台发展契机,实现办公流程化!
    如果实现流程化办公,那么对于企业而言是优势多多的。因为可以实现降本、增效、提质,帮助企业提升市场份额,低代码技术平台在推动企业实现流程化办公的过程中应用价值普遍提高,开源数据可视化平台可以助力企业开源节流,从而提升市场竞争力,收获更多辉煌价值。大家都了解低代码技术平台吗......
  • 可视化理解constructor、prototype、__proto__形成的指向图
    Person类和person实例首先给出一段js代码:functionPerson(){}constperson=newPerson()根据以下规则:每个实例都有一个__proto__指向其原型对象。每个构造函数都有一个prototype属性指向其实例的原型对象每一个原型都有一个prototype指向其实例的构造函数。于是就......