darts 时序预测入门

Python时间序列处理库Dart从入门到实战干货! Dart是一个,用于对时间序列进行用户友好的预测和异常检测。它包含了各种各样的模型,从经典的ARIMA到深度神经网络。预测模型都可以以相同的方式使用,使用fit()和predict()函数,类似于scikit-learn。该库还使回测模型、组合多个模型的预测以及考虑外部数据变得容易。Dart支持单变量和多变量时间序列和模型。基于机器学习的模型可以在包含多个时间序列的潜在大型数据集上进行训练,其中一些模型为概率预测提供了丰富的支持。Dart还提供了广泛的异常检测功能。 阅读详情

darts是一个强大而易用的Python时间序列建模工具包。在github上目前拥有超过7k颗stars。

它主要支持以下任务:

  • 时间序列预测 (包含 ARIMA, LightGBM模型, TCN, N-BEATS, TFT, DLinear, TiDE等等)

  • 时序异常检测 (包括 分位数检测 等等)

  • 时间序列滤波 (包括 卡尔曼滤波,高斯过程滤波)

本文演示使用darts构建N-BEATS模型对 牛奶月销量数据进行预测~

公众号算法美食屋后台回复关键词:源码,获取本文notebook源码和数据集~

!pip install darts

一,  准备数据

首先,你需要准备时间序列数据。如果数据有缺失,需要进行数据填充。

这里示范的是一个每月牛奶销量数据集。

import numpy as np 
import pandas as pd 
from matplotlib import pyplot as plt


import darts
from darts import TimeSeries
from darts.dataprocessing.transformers import MissingValuesFiller
from darts.dataprocessing.transformers import Scaler 




# 1,读取数据集
df = pd.read_csv('month_milk.csv')
df.columns = ['ds','y']
df = df.sort_values(by='ds')
#df['y'] = df['y'].interpolate(method='linear')




# 2,填充数据集
ts_raw = TimeSeries.from_dataframe(df,time_col='ds',value_cols=['y'])
#df = ts_raw.pd_dataframe() #timeseries转成dataframe
fig, ax1 = plt.subplots(1, 1, figsize=(10,5))
ts_raw.plot(color='brown',ax = ax1)
ax1.set_title('before fill')


#from darts.utils.missing_values import fill_missing_values
#ts = fill_missing_values(ts_raw)


filler = MissingValuesFiller()
ts = filler.transform(ts_raw)


fig, ax2 = plt.subplots(1, 1, figsize=(10,5))
ts.plot(color='cyan', ax = ax2)
ax2.set_title('after fill')


# 3,分割数据集
ts_train, ts_test= ts.split_after(pd.Timestamp("1973-01-01")) 
fig, ax3 = plt.subplots(1,1,figsize=(10,5))
ts_train.plot(color='blue',label='train',ax=ax3)
ts_test.plot(color='red',label='test',ax=ax3)
ax3.set_title('after split');




# 4,缩放数据集
scaler = Scaler()
ts_train_scaled = scaler.fit_transform(ts_train)
ts_test_scaled = scaler.transform(ts_test)
ts_scaled = scaler.transform(ts)

2724e31a0807564598b405d1427fbf05.png

0a0854fc32b002bd5207824d4847c037.png

f98d248ece22c91ccd55587a1c1c9941.png

二, 定义模型

接下来,定义一个时间序列模型。Darts支持多种模型。

包括统计模型(ARIMA, FFT, ExponentialSmoothing等)

机器学习模型(Prophet,LightGBM等)

神经网络模型(RNN类型,Transformer类型,CNN类型,MLP类型)。

此处我们使用 NBeats模型。

import warnings
warnings.filterwarnings("ignore")
import logging
logging.disable(logging.CRITICAL)
import wandb
wandb.login()
from darts.models import NBEATSModel 
import pytorch_lightning as pl 
from darts.utils.callbacks import TFMProgressBar
from pytorch_lightning.loggers import WandbLogger


wandb_logger = WandbLogger(project='MILK')
progress_bar = TFMProgressBar(enable_train_bar_only=True)
early_stopper = pl.callbacks.EarlyStopping(monitor="val_loss",patience=10,
        min_delta=1e-5,mode="min")
pl_trainer_kwargs = dict(max_epochs=100, 
     accelerator='cpu',
     callbacks = [progress_bar,early_stopper],
     logger = wandb_logger
) 


settings = dict(
    input_chunk_length=10,
    output_chunk_length=3,
    generic_architecture=True,
    num_stacks=10,
    num_blocks=1,
    num_layers=4,
    layer_widths=512,
    save_checkpoints=True,
    
    batch_size=800,
    random_state=42,
    model_name='nbeats',
    force_reset=True
)


settings['pl_trainer_kwargs'] = pl_trainer_kwargs


model = NBEATSModel(**settings)

三,训练模型

model.fit(series = ts_train_scaled, val_series= ts_train_scaled)
model = model.load_from_checkpoint(model_name=model.model_name,best=True)

四,评估模型

# 历史数据逐段回测,使用真实历史数据作为特征,不做滚动预测
ts_test_forecast = model.historical_forecasts(
    series=ts_scaled,
    start=ts_test_scaled.start_time(),
    forecast_horizon=3,
    stride=3,
    last_points_only=False,
    retrain=False,
    verbose=True,
)
from darts import concatenate
ts_test_forecast  = scaler.inverse_transform(concatenate(ts_test_forecast))
ts_test_true = ts[ts_test_forecast.time_index]
test_score = r2_score(ts_test_true, ts_test_preds)
import matplotlib.pyplot  as plt 
plt.figure(figsize=(8, 5))
ts_test_true.plot(label="y",color='blue')
ts_test_forecast.plot(label='yhat-forecast',color='cyan')
plt.title(
    "yhat-forecast R2-score: {}".format(test_score)
)
plt.legend()

9a18ae60157acae54c79a44dda143c4a.png

五,使用模型

#滚动预测,使用预测的数据作为后面预测步骤的特征 
# (注意:当预测步数 n 小于等于模型的output_chunk_length,无需滚动)
ts_preds = model.predict(n = len(ts_test_scaled),series = ts_train_scaled, num_samples=1)
ts_test_preds  = scaler.inverse_transform(ts_preds)
from darts.metrics import r2_score 
test_score = r2_score(ts_test_true, ts_test_preds)
import matplotlib.pyplot  as plt 
plt.figure(figsize=(8, 5))
ts_test_true.plot(label="y",color='blue')
ts_test_forecast.plot(label="yhat-forecast",color='cyan')
ts_test_preds.plot(label='yhat',color='red')
plt.title(
    "yhat R2-score: {}".format(test_score)
)
plt.legend()

0dd218379c73417198932b8ab071c98c.png

六,保存模型

model.save('nbeats')
model_loaded = NBEATSModel.load('nbeats') #重新加载

4872ae24e820f45e89741844e10f1021.png

干货!Python时间序列处理库Dart从入门到实战 Dart是一个Python库,用于对时间序列进行用户友好的预测和异常检测。它包含了各种各样的模型,从经典的ARIMA到深度神经网络。预测模型都可以以相同的方式使用,使用fit()和predict()函数,类似于scikit-learn。该库还使回测模型、组合多个模型的预测以及考虑外部数据变得容易。Dart支持单变量和多变量时间序列和模型。基于机器学习的模型可以在包含多个时间序列的潜在大型数据集上进行训练,其中一些模型为概率预测提供了丰富的支持。Dart还提供了广泛的异常检测功能。 阅读详情

相关推荐

MATLAB实现基于DARTS-Transformer 可微神经结构搜索(DARTS)结合 Transformer 编码器进行多变量时间序列预测的详细项目实例

本项目基于MATLAB平台,创新性地将可微神经架构搜索(DARTS)技术与Transformer编码器相结合,构建了一个自动化多变量时间序列预测框架。主要特点包括: 采用DARTS技术实现神经网络架构的自动搜索与优化,显著降低人工设计成本 结合Transformer的自注意力机制,有效捕捉多变量时间序列中的复杂依赖关系 端到端联合训练架构参数和模型权重,平衡预测精度与计算效率 模块化设计支持灵活扩展,包含数据预处理、模型训练、评估和部署全流程 项目适用于智能制造、能源管理、金融预测等多个领域,能够自动适应不

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 931

Python Darts库:高效的时间序列预测

更多Python学习内容:ipengtao.com时间序列预测在金融市场预测、销售预测和流量预测等领域中具有广泛应用。Python的Darts库提供了一种全面且高效的方法来进行时间序列预测。它不仅支持多种经典和现代的预测模型,还提供了一系列工具来简化数据处理和模型评估。本文将详细介绍Darts库的功能、安装与配置、基本和高级用法,以及如何在实际项目中应用它。Darts库简介Darts是一个开源的P...

GitHub_miao的博客 1503

Pywinauto与Inspect.exe完美搭配:解决Windows应用UI自动化中的元素定位难题

本文详细介绍了如何将Pywinauto与Inspect.exe结合,以解决Windows应用UI自动化中的核心难题——元素定位。通过实战指南,阐述了如何利用Inspect.exe在UIA模式下精准侦察控件属性,并将这些信息转化为Pywinauto的稳健定位策略,从而高效自动化WPF、WinForms等现代框架构建的复杂桌面应用。

weixin_29297127的博客 520

工具系列:时间序列预测工具Dart介绍_多时间序列、预训练模型和协变量

请注意,在下面的代码中,我们使用了36的时间跨度来调用“predict()”,这比模型内部的“output_chunk_length”(12)要长。如上所述,“TCNModel”、“NBEATSModel”、“BlockRNNModel”、“TransformerModel”使用过去的协变量(如果尝试使用“future_covariates”,它们将抱怨)。这些是"外部数据"的时间序列,我们可能不一定有兴趣预测它们,但我们仍然希望将它们作为我们模型的输入,因为它们可能包含有价值的信息。

数智笔记 2232

Origin科研绘图——桑基图

是一种用于展示“流动”(flow)关系的可视化图表,常用于呈现能量流、物质流、资金流、信息流等在不同节点之间的传递和分配情况。它最大的特点是用“宽度可变的流线”来直观表示数量大小——流线越宽,代表流量越大,因此特别适合理解复杂系统中资源从哪里来、到哪里去、以及不同路径所占比例。为该流程对应的数量。只需将各个流程逐项填写在 A、B、C 三列即可,流程的排列顺序并非关键,确保起点、终点及对应数值准确才是最重要的。与柱状图、饼图不同,桑基图不仅展示“多少”,还展示“从哪到哪”。至此,本期教程就结束啦。

weixin_41301530的博客 1397

大智慧L2实时api接口的逐笔委托功能执行代码分享

用过l2行情接口的投资者应该都了解大部分的接口都是有逐笔委托功能的,那么大智慧L2实时api接口也有着很强大的逐笔委托功能,投资者可以通过这个逐笔委托功能可以看到一个股票的每天出现的全部委托指令,那么在这个逐笔委托功能里包含了委托价格、委托时间、委托量和委托方向四个要素!那么接下来小编就分享一下大智慧L2实时api接口的逐笔委托功能执行代码!那么在这里提个醒:投资者可以在大智慧L2实时api接口进行设置过滤,在逐笔委托列表里,就仅仅只会显示超过设置委托量或委托额的委托单,而不再显示小单。

Qq_2037696191的博客 3734

用 Python 的 Darts 库玩转时间序列预测:从入门到实战

Darts是一个 Python 时间序列分析和预测库,由 Unit8 公司开发,目标是提供一个统一、简单的接口来使用包括经典统计模型、机器学习模型和深度学习模型在内的各种时间序列方法。“从 ARIMA 到 Transformer,只用几行代码。”——这是 Darts 的宗旨。单变量与多变量预测单步与多步预测(Recursive, Direct, Mixed)时间序列的平滑、差分、归一化等预处理工具。

萧鼎的博客 1472

数字IC设计随笔之二(VCS、DVE|Verdi单步调试)

VCS+Verdi单步调试

ic疾风传 1万+

darts 时序预测库 3 步上手:从安装到出第一条预测曲线

**darts** 是一个 Python 时序预测与异常检测库:把 ARIMA、指数平滑、Prophet、LSTM、Transformer 等几十种模型统一成 `fit()` + `predict()` 两个调用,用法接近 scikit-learn。本文面向第一次接触 darts 的人——不要求你懂模型原理,只要求你会装 Python 包。读完照做,大约 10 分钟,你能在自己的机器上跑通一条完整

gitblog_00981的博客 235

数据分析必问:Pandas面试题及参考答案

DataFrame是Pandas库中的一个核心数据结构,它类似于Excel中的表格,可以存储不同类型的数据。在Pandas中,抽样操作通常很简单,但是需要根据数据的特点和分析的需求来选择合适的抽样方法。数据标准化和归一化是数据预处理中常用的技术,目的是将数据调整到一个合适的范围内,以消除不同特征量纲和数值范围的差异,从而保证模型训练的有效性。CSV文件是一种文本文件,其中的数据以逗号分隔。不平衡数据集指的是数据集中各类别样本的数量差异较大的情况,这可能导致模型训练出现偏差,影响模型的泛化能力。

大模型大数据攻城狮的专栏 3011

【系统安全】Windows内核权限提升漏洞(CVE-2024-30088)

CVE-2024-30088是Windows内核提权漏洞,由越南安全研究员@Bùi Quang Hiếu详细分析。漏洞发生在AuthzBasepCopyoutInternalSecurityAttributes函数中,该函数在复制SecurityAttributesList时会使用用户提供的指针,在校验及复制期间存在时间差,导致存在TOCTOU漏洞。

李同學AI安全 1325

用 Python 轻松实现时间序列预测:Darts 时序融合Transformer Temporal Fusion Transformer

Darts 是一个 Python 库,用于对时间序列进行用户友好型预测和异常检测。它包含多种模型,从 ARIMA 等经典模型到深度神经网络。

船长Q的博客 1319

AI产品经理面试宝典第94天:RAG知识库构建与预处理策略面试指南

本文深入解析RAG知识库构建的核心挑战与预处理策略,涵盖文档格式转换、问答对生成及自动化测试全流程,为AI产品经理提供面试必备的实战方法论与避坑指南,助你精准应对技术深度类问题。

打造全国最全的AI Agent开发知识领域的博客 314

用 Python 轻松实现时间序列预测:Darts Torch 预测模型 Torch Forecasting Models

Darts 是一个 Python 库,用于对时间序列进行用户友好型预测和异常检测。它包含多种模型,从 ARIMA 等经典模型到深度神经网络。

船长Q的博客 1984

2026滑块验证码终极实战:缺口检测算法+人机轨迹模拟,识别率从60%飙升至95%全方案

**摘要:2026年AIGC技术发展导致传统验证码失效,滑块验证码成为主流防护手段。本文深入分析了传统方案识别率低的原因,并提出多级检测融合和行为拟合优化方案。通过图像预处理优化、三级缺口检测引擎(差分图像法、Hu矩轮廓匹配、YOLOv8n模型兜底)将识别率提升至99.2%。同时针对轨迹模拟环节,设计了包含抖动特征、时间随机性和个体差异的行为模型,使通过率从12%提升至87%。该方案解决了传统方法在缺口定位精度和轨迹真实性方面的核心痛点,为应对新一代验证码风控提供了完整的技术框架。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1902

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度学习时序预测中激活函数的终极指南:Darts库实战案例解析

在深度学习时序预测领域,激活函数的选择直接影响模型性能和预测精度。Darts作为一个用户友好的时序预测和异常检测Python库,为开发者提供了丰富的深度学习模型选择。本文将深入探讨Darts库中各种深度学习模型的激活函数应用,帮助您在实际项目中做出更明智的选择。 ## 为什么激活函数在时序预测中如此重要? 激活函数是神经网络的核心组件,它决定了神经元如何响应输入信号。在时序预测任务中,不同的激

gitblog_00177的博客 704

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

darts(python时序预测库的安装方法)+conda环境和库的建立

目录 1 darts(时序预测库) 库安装.... 1 1.1官方安装方法... 1 1.2我的安装过程... 1 2 conda的环境管理... 2 2.1查看版本号... 2 2.2切换python不同版本的环境和创建新环境... 2 2.3 conda和相关包的更新... 2 3conda的包管理.... 3 1 darts(时序预测库) 库安装 1.1官方安装方法 创建一个darts的环境 conda create --name darts python=3.7 ..

qq_42194429的博客 2666

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

用 Python 轻松实现时间序列预测:Darts 协变量 Covariates

Darts 是一个 Python 库,用于对时间序列进行用户友好型预测和异常检测。它包含多种模型,从 ARIMA 等经典模型到深度神经网络。

船长Q的博客 1397

探索darts:从RNN到TiDE,7种时序预测模型的终极对比指南

darts是一个专为时间序列预测和异常检测设计的Python库,提供了友好的用户界面和强大的预测能力。无论是新手还是专业用户,都能通过darts轻松构建准确的时间序列预测模型。本文将深入比较darts中的多种预测模型,帮助你快速找到最适合自己项目的解决方案。 ## 为什么选择darts进行时间序列预测? 时间序列数据无处不在,从股票价格到气象数据,从销售记录到服务器性能指标。准确预测未来趋势对

gitblog_00539的博客 509

推荐项目:DARTS - 用于时间序列预测的深度神经网络

推荐项目:DARTS - 用于时间序列预测的深度神经网络 去发现同类优质开源项目:https://gitcode.com/ DARTS(Deep Autoregressive Time Series)是一个基于深度神经网络的时间序列预测模型。它由 Unit8 公司的研究团队开发,并在 GitHub 上开源。DARTS 具有以下特点: 自回归模型:DARTS 是一个自回归模型,它能够利用过去的观测...

gitblog_00014的博客 670

用 Python 轻松实现时间序列预测:Darts 多时间序列、预训练模型和协变量 Multiple Time Series, Pre-trained Models and Covariates

Darts 是一个 Python 库,用于对时间序列进行用户友好型预测和异常检测。它包含多种模型,从 ARIMA 等经典模型到深度神经网络。

船长Q的博客 7373

如何利用Darts协变量功能提升时间序列预测精度:从入门到实战

Darts是一个用户友好的Python时间序列预测与异常检测库,提供了强大的协变量功能来提升预测准确性。本文将全面解析Darts协变量的核心概念、使用方法和实战技巧,帮助你轻松掌握这一强大工具。 ## 什么是协变量?时间序列预测的秘密武器 🚀 在时间序列预测中,除了我们要预测的目标序列外,通常还有其他相关变量会影响预测结果。这些变量被称为协变量(Covariates),它们可以显著提升预测模

gitblog_00569的博客 805

深度解析:Darts协变量机制如何重塑时间序列预测

在时间序列预测领域,传统模型往往仅关注目标变量本身的历史模式,而忽略了影响序列走势的关键外部因素。Darts库通过引入协变量(Covariates)机制,为预测模型注入了强大的上下文理解能力,彻底改变了时间序列预测的技术范式。 ## 问题诊断:传统预测模型的局限性 传统时间序列预测模型面临的核心挑战在于无法有效整合外部驱动因素。以零售销量预测为例,仅基于历史销量数据难以准确捕捉促销活动、节假日

gitblog_00879的博客 781

Darts时间序列预测架构深度解析与性能优化实战

Darts是一个面向Python开发者的专业时间序列预测和异常检测库,为技术决策者和中级开发者提供了完整的预测解决方案。本文将从技术架构深度解析、性能优化实战指南、部署与生产环境适配、扩展性与生态集成、技术演进与未来展望五个维度,全面剖析Darts的核心技术实现和最佳实践。 ## 技术架构深度解析:模块化设计原理 Darts采用分层模块化架构,将时间序列预测的复杂流程分解为多个独立且协同工作的

gitblog_00688的博客 670

Temporal Convolutional Networks and Forecasting(TCN进行时序预测使用Darts库,中文版+链接)

下面图片显示不全,附上文章链接

qq_42194429的博客 3176

【Python】darts包(Python时序预测库的安装方法)+conda环境和库的建立

【Python】darts包(Python时序预测库的安装方法)+conda环境和库的建立

wzk4869的博客 2616
上一篇: 30分钟吃掉pytorch转onnx及推理
下一篇: 腾讯元宝,有点东西~
算法美食屋
博客等级 码龄9年 2万+粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值