亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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多線程方法詳解

    python多線程方法詳解

    大家好,本篇文章主要講的是python多線程方法詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python 標(biāo)準(zhǔn)庫time時間的訪問和轉(zhuǎn)換問題小結(jié)

    Python 標(biāo)準(zhǔn)庫time時間的訪問和轉(zhuǎn)換問題小結(jié)

    time 模塊為 Python 提供了處理時間和日期的多種功能,適用于多種與時間相關(guān)的場景,包括獲取當(dāng)前時間、格式化時間、暫停程序執(zhí)行、計算程序運行時長等,這篇文章主要介紹了Python 標(biāo)準(zhǔn)庫time時間的訪問和轉(zhuǎn)換,需要的朋友可以參考下
    2025-01-01
  • 六個實用Pandas數(shù)據(jù)處理代碼

    六個實用Pandas數(shù)據(jù)處理代碼

    這篇文章主要介紹了六個實用Pandas數(shù)據(jù)處理代碼,文章圍繞主題相相關(guān)內(nèi)容,具有一定的參考價價值,需要的小伙伴可以參考一下
    2022-05-05
  • 基于python中的TCP及UDP(詳解)

    基于python中的TCP及UDP(詳解)

    下面小編就為大家?guī)硪黄趐ython中的TCP及UDP(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望對大家有所幫助
    2017-11-11
  • Python多線程同步Lock、RLock、Semaphore、Event實例

    Python多線程同步Lock、RLock、Semaphore、Event實例

    這篇文章主要介紹了Python多線程同步Lock、RLock、Semaphore、Event實例,Lock & RLock 用來確保多線程多共享資源的訪問,Semaphore用來確保一定資源多線程訪問時的上限,Event是最簡單的線程間通信的方式,需要的朋友可以參考下
    2014-11-11
  • 基于Python創(chuàng)建可定制的HTTP服務(wù)器

    基于Python創(chuàng)建可定制的HTTP服務(wù)器

    這篇文章主要為大家演示一下如何使用?http.server?模塊來實現(xiàn)一個能夠發(fā)布網(wǎng)頁的應(yīng)用服務(wù)器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-05-05
  • python實現(xiàn)12306搶票及自動郵件發(fā)送提醒付款功能

    python實現(xiàn)12306搶票及自動郵件發(fā)送提醒付款功能

    本文給大家分享python實現(xiàn)12306搶票及自動郵件發(fā)送提醒付款功能,文章沒有給大家貼出完整代碼,只是技術(shù)交流,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-03-03
  • 淺談pycharm下找不到sqlalchemy的問題

    淺談pycharm下找不到sqlalchemy的問題

    今天小編就為大家分享一篇淺談pycharm下找不到sqlalchemy的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python利用Selenium實現(xiàn)彈出框的處理

    Python利用Selenium實現(xiàn)彈出框的處理

    經(jīng)常出現(xiàn)在網(wǎng)頁上的基于JavaScript實現(xiàn)的彈出框有三種,分別是?alert、confirm、prompt?。本文主要是學(xué)習(xí)如何利用selenium處理這三種彈出框,感興趣的可以了解一下
    2022-06-06
  • python爬蟲獲取小區(qū)經(jīng)緯度以及結(jié)構(gòu)化地址

    python爬蟲獲取小區(qū)經(jīng)緯度以及結(jié)構(gòu)化地址

    這篇文章主要為大家詳細(xì)介紹了python爬蟲獲取小區(qū)經(jīng)緯度,以及結(jié)構(gòu)化的地址,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論