20+时序模型,一款时间序列建模神器:GluonTS

时间序列数据是以时间为索引的数据点的集合,它存在于各个领域和行业,零售行业的商品销售时间序列,来自监控设备、应用程序或云资源的指标,或者物联网传感器生成的测量时间序列等等,都是时间序列数据的例子。

与时间序列有关的最常见机器学习任务,包括_预测、平滑处理、侦测(例如界外值、异常点或变化点侦测)以及分类等。

今天,我们介绍的这款工具为 Gluon Time Series (GluonTS),它是一个专门为概率时间序列建模而设计的工具包,GluonTS 简化了时间序列模型的开发和实验,用于预测或异常检测等常见任务。

技术提升

本文由技术群粉丝分享,项目源码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

方式①、添加微信号:mlc2060,备注:来自CSDN +技术交流
方式②、微信搜索公众号:机器学习社区,后台回复:加群

GluonTS特点

借助 GluonTS,用户可以利用包含有用抽象的预构建块来构建时间序列模型。GluonTS 还利用这些构建块构建了流行模型的参考实现,这些参考实现既可以作为模型探索的出发点,也可以用于模型的比较。

此外,GluonTS 中包含了多种工具,让研究人员不再需要重复实施数据处理、回测、模型比较和评估的方法。

安装

pip install gluonts 
# as gluonts relies on mxnet 
# install MXnet using
pip pip install mxnet

入门

我们已经看到使用 TensorFlow 和 PyTorch 进行时间序列预测,但它们带有大量代码并且需要对框架非常熟练。 GluonTS 提供用于运行时间序列预测的简单且即时的代码,这里是运行 GluonTS 以使用 DeepAR 预测 Twitter 数量的示例代码。

from gluonts.dataset import common
from gluonts.model import deepar
from gluonts.trainer import Trainer
import pandas as pd

#读取数据
url = "https://raw.githubusercontent.com/numenta/NAB/master/data/realTweets/Twitter_volume_AMZN.csv"
df = pd.read_csv(url, header=0, index_col=0)
data = common.ListDataset([{
    "start": df.index[0],
    "target": df.value[:"2015-04-05 00:00:00"]
}], freq="5min")
                          
#初始化deepAR模型
trainer = Trainer(epochs=10)
estimator = deepar.DeepAREstimator(
    freq="5min", prediction_length=12, trainer=trainer)
predictor = estimator.train(training_data=data)

# 得到预测结果
prediction = next(predictor.predict(data))
print(prediction.mean)
prediction.plot(output_file='graph.png')

下面是 AMZN 股票代码的推文量预测的案例

GluonTS模型

在这里插入图片描述

参考链接:

https://analyticsindiamag.com/gluonts-pytorchts-for-time-series-forecasting/

https://github.com/awslabs/gluon-ts

### 使用 GluonTS 进行单步时间序列预测 GluonTS 是一个用于构建和评估时间序列模型的开源 Python ,支持多种先进的机器学习方法,其中包括 DeepAR 模型。DeepAR 是一种基于循环神经网络 (RNN) 的概率预测模型,特别适合处理具有不确定性的时间序列数据。 以下是使用 GluonTS 实现单步时间序列预测的一个完整示例: #### 数据准备 为了训练和测试模型,通常需要将原始时间序列数据划分为训练集和验证集。假设我们有一个简单的合成时间序列数据集作为输入[^1]。 ```python import pandas as pd from gluonts.dataset.common import ListDataset from gluonts.model.deepar import DeepAREstimator from gluonts.trainer import Trainer # 创建简单的时间序列数据 data = [ {"start": "2023-01-01", "target": [i % 7 for i in range(1, 101)]}, ] # 将数据转换为 GluonTS 所需的数据结构 train_ds = ListDataset(data, freq="D") # 频率为每日 ``` #### 定义模型并训练 定义 `DeepAREstimator` 并配置其超参数。这里设置预测长度为 1(即单步预测),并指定其他必要的参数。 ```python estimator = DeepAREstimator( prediction_length=1, context_length=28, freq="D", trainer=Trainer(epochs=10), ) predictor = estimator.train(train_ds) ``` #### 单步预测 完成模型训练后,可以利用该模型对未来一步进行预测。下面展示如何提取预测结果并与真实值对比。 ```python from gluonts.evaluation import make_evaluation_predictions forecast_it, ts_it = make_evaluation_predictions(dataset=train_ds, predictor=predictor, num_samples=100) forecasts = list(forecast_it) tss = list(ts_it) # 输出第一个样本的预测均值 print(forecasts[0].mean) ``` 上述代码片段展示了如何通过 GluonTS 和 DeepAR 模型实现单步时间序列预测的过程。注意,在实际应用中可能还需要进一步调整模型参数以适应特定场景的需求。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值