1. 【Python时序预测系列】基于LSTM实现多变量时间序列预测(案例+源码)
此文章探索基于LSTM在Python环境下,实现多变量时间序列预测的实践。重点在于单站点多变量单步预测,以股票价格预测为案例。
首先,数据集被导入,包含5203条记录。数据按照8:2的比例划分为训练集与测试集,其中训练集有4162条数据,测试集有1041条数据。
为了进行预测,数据集需要进行归一化处理。接着,使用滑动窗口技术构建LSTM数据集。窗口大小设为30,这样前30天的数据作为特征,预测第31天的某单一变量。训练集构建后,数据量减少至4132个样本,而测试集则有1011个样本,旨在预测4163-5203区间内的数据。
LSTM模型在训练集上进行建立与调整,然后用于预测。预测结果展示在测试集上,对比真实值与预测值,以评估模型表现。
为了验证模型在新数据集上的预测能力,作者提供了一段代码,演示如何在新的数据集上应用已训练的模型进行预测。
作者拥有丰富的学术与工作经验,专注于数据算法研究,致力于以通俗易懂的方式分享Python、数据分析、机器学习等领域的知识。关注公众号“数据杂坛”,获取相关数据集与源代码,持续学习并分享。
2. 时间序列预测Prophet模型及Python实现
Prophet模型是Facebook开发的,用于时间序列预测的灵活框架。该模型将时间序列分解为趋势、季节性、假日效应和噪声四个主要成分,以实现精准预测。模型提供加法和乘法两种模型。在加法模型中,预测值为趋势、季节性和假期效应的总和。乘法模型中,预测值是趋势、季节性和假期效应的乘积。两种模型适用于不同类型的时间序列,通常加法模型适用于与数据规模无关的趋势和季节性,如气温、降雨量;而乘法模型适用于与数据规模相关的趋势和季节性,如商品销售量、股票价格。
Prophet库的默认参数包括:时间戳为ds,时间序列值为y。数据预处理通常包括修改DataFrame的列名,使其符合ds和y的标准。数据通常需要进行归一化操作。初始化模型后,进行拟合并预测时间序列。预测结果通常通过绘图展示。周期性分解可用于分析特定周期模式。
提供两个代码示例,第一个示例采用线性形式的增长趋势,第二个示例将增长趋势更改为logistic形式,上限为3,以此展示模型预测时的增长动态。
Prophet库的优点包括:灵活性高,适用于多种时间序列预测;易于使用,参数调整简单;预测结果直观。缺点可能包括:对数据的依赖性较高,可能需要较多数据以获得准确预测;模型复杂度可能影响预测性能。使用时需要注意模型的适应性,选择合适的模型类型,以及对数据的适当预处理。