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

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

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

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

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

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

目錄

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

一、什么是 Darts?

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

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

核心功能包括:

  • 單變量與多變量預(yù)測
  • 單步與多步預(yù)測(Recursive, Direct, Mixed)
  • 時間序列的平滑、差分、歸一化等預(yù)處理工具
  • 集成多個主流模型(ARIMA、Prophet、LSTM、NBEATS、Transformer、XGBoost)
  • 模型組合與集成
  • 時間序列回測與評估
  • 與 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ù)據(jù)結(jié)構(gòu)與預(yù)處理

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

創(chuàng)建一個簡單序列:

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)計模型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)練與評估

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

train, val = series.split_before(0.8)

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

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

評估結(jié)果

from darts.metrics import mape

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

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

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

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

多變量輸入:

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

多步預(yù)測策略:

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

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

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

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

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)練集與測試集劃分

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ù)測與評估

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

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

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

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

八、與其他時間序列庫對比

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

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

? 優(yōu)勢:

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

? 局限性:

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

十、總結(jié)與展望

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    pytorch自動求梯度autograd的實現(xiàn)

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

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

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

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

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

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

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

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

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

    Python實現(xiàn)GUI計算器(附源碼)

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

最新評論

天峻县| 南溪县| 洪泽县| 镇远县| 怀仁县| 手机| 沂源县| 台中县| 嘉祥县| 嘉禾县| 黔南| 军事| 百色市| 枣庄市| 古交市| 沙湾县| 呼伦贝尔市| 樟树市| 香格里拉县| 遵化市| 哈巴河县| 天水市| 双辽市| 淮安市| 边坝县| 琼结县| 禄丰县| 南澳县| 二连浩特市| 嵊泗县| 东乡族自治县| 清水河县| 通化市| 珲春市| 阿克陶县| 如皋市| 曲阳县| 祁东县| 通道| 塔城市| 五常市|