最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的Darts庫實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)

 更新時(shí)間:2025年09月10日 11:36:28   作者:蕭鼎  
Darts一個(gè)集統(tǒng)計(jì)、機(jī)器學(xué)習(xí)與深度學(xué)習(xí)模型于一體的Python時(shí)間序列預(yù)測(cè)庫,本文主要介紹了Python的Darts庫實(shí)現(xiàn)時(shí)間序列預(yù)測(cè),感興趣的可以了解一下

在人工智能和數(shù)據(jù)分析領(lǐng)域,時(shí)間序列預(yù)測(cè) 是一個(gè)極其重要的分支,它貫穿了金融、能源、醫(yī)療、交通、零售等多個(gè)行業(yè)。從預(yù)測(cè)股票價(jià)格、能源消耗,到銷售量、疾病傳播趨勢(shì),時(shí)間序列建模已成為數(shù)據(jù)科學(xué)家必須掌握的核心技能。

而在 Python 生態(tài)中,有一個(gè)優(yōu)雅且功能強(qiáng)大的時(shí)間序列預(yù)測(cè)庫正在迅速流行起來,它就是——Darts。

本文將深入解析 Darts 庫的設(shè)計(jì)理念、核心組件、使用方法和典型應(yīng)用案例,幫助你快速掌握這一工具并將其用于實(shí)際項(xiàng)目中。

目錄

  1. 什么是 Darts?
  2. 安裝與基本配置
  3. 時(shí)間序列數(shù)據(jù)結(jié)構(gòu)與預(yù)處理
  4. 多種模型接口:ARIMA、Prophet、RNN、Transformer 等
  5. 模型訓(xùn)練與評(píng)估
  6. 多變量、多步預(yù)測(cè)與反向驗(yàn)證
  7. 實(shí)戰(zhàn)案例:預(yù)測(cè)電力消耗曲線
  8. 與其他時(shí)間序列工具對(duì)比
  9. 優(yōu)勢(shì)與局限性
  10. 總結(jié)與展望

一、什么是 Darts?

Darts 是一個(gè) Python 時(shí)間序列分析和預(yù)測(cè)庫,由 Unit8 公司開發(fā),目標(biāo)是提供一個(gè)統(tǒng)一、簡(jiǎn)單的接口來使用包括經(jīng)典統(tǒng)計(jì)模型、機(jī)器學(xué)習(xí)模型和深度學(xué)習(xí)模型在內(nèi)的各種時(shí)間序列方法。

“從 ARIMA 到 Transformer,只用幾行代碼。”——這是 Darts 的宗旨。

核心功能包括:

  • 單變量與多變量預(yù)測(cè)
  • 單步與多步預(yù)測(cè)(Recursive, Direct, Mixed)
  • 時(shí)間序列的平滑、差分、歸一化等預(yù)處理工具
  • 集成多個(gè)主流模型(ARIMA、Prophet、LSTM、NBEATS、Transformer、XGBoost)
  • 模型組合與集成
  • 時(shí)間序列回測(cè)與評(píng)估
  • 與 pandas/Numpy 深度集成,極易上手

二、安裝與基本配置

安裝 Darts

pip install u8darts[all]  # 安裝所有依賴,包括深度學(xué)習(xí)模型

或者只安裝核心功能:

pip install u8darts

注意:建議使用 Python 3.8+ 環(huán)境,并提前安裝 PyTorch、lightgbm、xgboost 等依賴包。

導(dǎo)入基礎(chǔ)模塊

from darts import TimeSeries
from darts.models import NBEATSModel, ExponentialSmoothing
from darts.metrics import mape

三、時(shí)間序列數(shù)據(jù)結(jié)構(gòu)與預(yù)處理

在 Darts 中,核心數(shù)據(jù)結(jié)構(gòu)是 TimeSeries 對(duì)象,類似于 pandas DataFrame 但為時(shí)間序列優(yōu)化。

創(chuàng)建一個(gè)簡(jiǎn)單序列:

import pandas as pd
from darts import TimeSeries

df = pd.read_csv("air_passengers.csv", parse_dates=["Month"])
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")

常見預(yù)處理操作:

# 插值填補(bǔ)缺失值
series = series.interpolate()

# 平滑處理
smoothed = series.rolling(window=12)

# 歸一化
from darts.dataprocessing.transformers import Scaler
scaler = Scaler()
normalized = scaler.fit_transform(series)

四、多種模型接口:從經(jīng)典到深度學(xué)習(xí)

Darts 內(nèi)置多種模型,統(tǒng)一 API:

模型類別模型名稱
統(tǒng)計(jì)模型ARIMA, ExponentialSmoothing, Theta, KalmanFilter
ML 模型RegressionModel (支持 XGBoost, LightGBM)
DL 模型RNN, LSTM, NBEATS, Transformer, TCN, BlockRNN
外部模型Prophet, TBATS

示例:使用 ARIMA

from darts.models import ARIMA

model = ARIMA()
model.fit(series[:-36])
forecast = model.predict(36)

使用深度模型(如 N-BEATS)

model = NBEATSModel(input_chunk_length=36, output_chunk_length=12, n_epochs=100)
model.fit(series[:-36])
forecast = model.predict(36)

五、模型訓(xùn)練與評(píng)估

劃分訓(xùn)練集與測(cè)試集

train, val = series.split_before(0.8)

訓(xùn)練與預(yù)測(cè)

model = ExponentialSmoothing()
model.fit(train)
pred = model.predict(len(val))

評(píng)估結(jié)果

from darts.metrics import mape

error = mape(val, pred)
print(f"MAPE: {error:.2f}%")

還可以使用 RMSE、MASE、sMAPE 等指標(biāo)。

六、多變量、多步預(yù)測(cè)與回測(cè)

Darts 非常適合多變量預(yù)測(cè)和多步預(yù)測(cè),適合多特征建模。

多變量輸入:

# 將多個(gè) TimeSeries 合并為 multivariate series
combined = TimeSeries.from_dataframe(df, time_col="Date", value_cols=["Temp", "Humidity", "PowerLoad"])

多步預(yù)測(cè)策略:

  • Direct:為每一個(gè)未來時(shí)間點(diǎn)訓(xùn)練一個(gè)獨(dú)立模型;
  • Recursive:一個(gè)模型遞歸預(yù)測(cè);
  • Mixed:結(jié)合兩者優(yōu)點(diǎn)。

Darts 的模型大部分支持這三種策略,自動(dòng)處理長(zhǎng)序列預(yù)測(cè)問題。

七、實(shí)戰(zhàn)案例:電力負(fù)荷預(yù)測(cè)

我們以電力系統(tǒng)的負(fù)荷曲線為例,預(yù)測(cè)未來一周的電力需求。

Step 1:加載數(shù)據(jù)

df = pd.read_csv("power_load.csv", parse_dates=["timestamp"])
series = TimeSeries.from_dataframe(df, "timestamp", "load_kw")

Step 2:訓(xùn)練集與測(cè)試集劃分

train, val = series.split_before(pd.Timestamp("2023-06-01"))

Step 3:建立模型并訓(xùn)練

model = TransformerModel(input_chunk_length=48, output_chunk_length=24, n_epochs=150)
model.fit(train)

Step 4:預(yù)測(cè)與評(píng)估

forecast = model.predict(n=72)
mape_score = mape(val[:72], forecast)

Step 5:可視化結(jié)果

series.plot(label="Actual")
forecast.plot(label="Forecast")

結(jié)果曲線可以明顯看出模型預(yù)測(cè)能力強(qiáng),且具有平滑性。

八、與其他時(shí)間序列庫對(duì)比

特性DartsProphetstatsmodelsgluontssktime
多模型統(tǒng)一接口?????
多步預(yù)測(cè)支持?????
深度學(xué)習(xí)支持?????
多變量支持?部分???
易用性??????????????

九、優(yōu)勢(shì)與局限性分析

? 優(yōu)勢(shì):

  • 統(tǒng)一 API:無論是 ARIMA 還是 LSTM,一套接口調(diào)用;
  • 模型豐富:融合統(tǒng)計(jì)與深度模型,適配各種數(shù)據(jù);
  • 可擴(kuò)展性強(qiáng):支持定制模型、集成多個(gè)模型;
  • 支持 PyTorch 后端:深度模型訓(xùn)練快速;
  • 強(qiáng)大的時(shí)間序列處理模塊:平滑、差分、補(bǔ)全、歸一化一步到位;
  • 回測(cè)與模型選擇模塊完善:可以實(shí)現(xiàn)自動(dòng)模型選擇。

? 局限性:

  • 模型訓(xùn)練速度相較 scikit-learn 稍慢;
  • 深度學(xué)習(xí)模型訓(xùn)練需 GPU 否則效率低;
  • 在大規(guī)模部署場(chǎng)景下還需與其它工具配合(如 Apache Kafka);
  • 學(xué)習(xí)曲線相對(duì) Prophet、statsmodels 略高。

十、總結(jié)與展望

Darts 是當(dāng)前 Python 時(shí)間序列預(yù)測(cè)領(lǐng)域功能最全、結(jié)構(gòu)最優(yōu)雅的庫之一,適合數(shù)據(jù)科學(xué)家、研究人員與開發(fā)者快速構(gòu)建預(yù)測(cè)系統(tǒng)。

無論你是做傳統(tǒng)的財(cái)務(wù)指標(biāo)預(yù)測(cè),還是深度學(xué)習(xí)驅(qū)動(dòng)的能源需求預(yù)測(cè),Darts 都提供了強(qiáng)大而靈活的工具鏈。隨著其社區(qū)持續(xù)擴(kuò)展,未來有望成為時(shí)間序列領(lǐng)域的“scikit-learn”。

到此這篇關(guān)于Python的Darts庫實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)的文章就介紹到這了,更多相關(guān)Python Darts庫時(shí)間序列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python腳本將絕對(duì)url替換為相對(duì)url的教程

    使用Python腳本將絕對(duì)url替換為相對(duì)url的教程

    這篇文章主要介紹了使用Python腳本將絕對(duì)url替換為相對(duì)url的教程,腳本代碼非常簡(jiǎn)單,需要的朋友可以參考下
    2015-04-04
  • python執(zhí)行shell并獲取結(jié)果的詳細(xì)示例

    python執(zhí)行shell并獲取結(jié)果的詳細(xì)示例

    在Python中執(zhí)行Shell命令并獲取其結(jié)果,通??梢允褂胹ubprocess模塊,這個(gè)模塊允許我們啟動(dòng)新的進(jìn)程,連接到它們的輸入/輸出/錯(cuò)誤管道,并獲取它們的返回碼,下面是一個(gè)詳細(xì)的示例,展示了如何使用subprocess.run()函數(shù)來執(zhí)行Shell命令并獲取其輸出,需要的朋友可以參考下
    2024-07-07
  • Flask實(shí)現(xiàn)swagger在線文檔與接口測(cè)試流程詳解

    Flask實(shí)現(xiàn)swagger在線文檔與接口測(cè)試流程詳解

    Flask是一個(gè)使用Python編寫的輕量級(jí)Web應(yīng)用框架。其WSGI工具箱采用 Werkzeug,模板引擎則使用Jinja2。Flask使用 BSD 授權(quán)。Flask也被稱為“microframework”,因?yàn)樗褂煤?jiǎn)單的核心,用 extension 增加其他功能,本篇帶你用Flask實(shí)現(xiàn)swagger在線文檔與接口測(cè)試
    2022-07-07
  • 利用Python繪制端午節(jié)祝福動(dòng)畫

    利用Python繪制端午節(jié)祝福動(dòng)畫

    這篇文章主要介紹了如何利用Python繪制一個(gè)端午節(jié)的祝福動(dòng)畫,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2023-06-06
  • pytorch自動(dòng)求梯度autograd的實(shí)現(xiàn)

    pytorch自動(dòng)求梯度autograd的實(shí)現(xiàn)

    autograd是一個(gè)自動(dòng)微分引擎,它可以自動(dòng)計(jì)算張量的梯度,本文主要介紹了pytorch自動(dòng)求梯度autograd的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • 基于Python實(shí)現(xiàn)圖片批量加水印的方法

    基于Python實(shí)現(xiàn)圖片批量加水印的方法

    我們經(jīng)常有有這樣的經(jīng)歷:辛辛苦苦制作的原創(chuàng)圖片、精心拍攝的作品、耗費(fèi)心血設(shè)計(jì)的宣傳圖,剛發(fā)布到網(wǎng)上,沒過多久,就發(fā)現(xiàn)被別人盜用維 權(quán)耗時(shí)耗力,讓人沮喪,今天,我們將深入Python圖片處理的世界,手把手教你如何基于Python實(shí)現(xiàn)圖片批量加水印,需要的朋友可以參考下
    2025-11-11
  • Python畫圖時(shí)如何調(diào)用本地字體

    Python畫圖時(shí)如何調(diào)用本地字體

    這篇文章主要為大家介紹在通過Python繪制圖畫時(shí)如何調(diào)用本地的字體,從而解決中文亂碼的問題。感興趣的小伙伴快來跟隨小編學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • python使用opencv resize圖像不進(jìn)行插值的操作

    python使用opencv resize圖像不進(jìn)行插值的操作

    這篇文章主要介紹了python使用opencv resize圖像不進(jìn)行插值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python增強(qiáng)賦值和共享引用注意事項(xiàng)小結(jié)

    Python增強(qiáng)賦值和共享引用注意事項(xiàng)小結(jié)

    這篇文章主要給大家介紹了關(guān)于Python增強(qiáng)賦值和共享引用注意事項(xiàng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python實(shí)現(xiàn)GUI計(jì)算器(附源碼)

    Python實(shí)現(xiàn)GUI計(jì)算器(附源碼)

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)GUI計(jì)算器,可執(zhí)行復(fù)雜運(yùn)算,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-11-11

最新評(píng)論

恩施市| 吉木萨尔县| 玛多县| 定南县| 贵州省| 陆川县| 信宜市| 秭归县| 定安县| 澎湖县| 盱眙县| 漳平市| 太保市| 漯河市| 明光市| 肇州县| 岗巴县| 中方县| 华池县| 巴林左旗| 德阳市| 穆棱市| 徐水县| 思南县| 嫩江县| 金沙县| 南开区| 竹北市| 广南县| 藁城市| 康平县| 永嘉县| 廉江市| 丹寨县| 鄢陵县| 辉南县| 大新县| 南江县| 高雄县| 灵武市| 依安县|