【合集】Python時(shí)間序列分析庫(kù)

本文基于知乎作者Carrot Wait的文章,綜合其它網(wǎng)絡(luò)博主的意見(jiàn)而成。包括知乎用戶(hù)【nr5iT5】、CSDN用戶(hù)【程序媛了了】、知乎用戶(hù)【李東】等。

原文鏈接https://zhuanlan.zhihu.com/p/690397917

本文旨在綜述當(dāng)前時(shí)間序列分析領(lǐng)域內(nèi)幾種重要的Python庫(kù),包括Prophet、tslearn、sktime、tsfresh、Darts、和Kats,tsfel以及PyFlux。這些庫(kù)各具特色,覆蓋了從統(tǒng)計(jì)建模、機(jī)器學(xué)習(xí)方法到自動(dòng)化特征提取等多個(gè)方面,適用于不同的應(yīng)用場(chǎng)景和需求。(按GitHub☆排名)

Prophet

Prophet是Facebook開(kāi)發(fā)的一個(gè)時(shí)間序列預(yù)測(cè)工具,旨在處理具有強(qiáng)季節(jié)性影響的時(shí)間序列數(shù)據(jù)。它基于一個(gè)加法模型,適用于年度、周度、日度的季節(jié)性變化,以及假日效應(yīng),能夠自動(dòng)處理缺失數(shù)據(jù)和趨勢(shì)變化。
基本算法模型:
y(t)= g(t)+ s(t)+h(t)+\epsilon
模型整體由三部分組成:
g(t):growth(增長(zhǎng)趨勢(shì))
s(t):seasonality(李節(jié)趨勢(shì))
h(t):holidays(節(jié)假日對(duì)預(yù)測(cè)值的影響)

  • 主要功能:自動(dòng)預(yù)測(cè)、處理季節(jié)性效應(yīng)、調(diào)整趨勢(shì)變化、對(duì)抗異常值和缺失數(shù)據(jù)。

  • 優(yōu)勢(shì):速度快、準(zhǔn)確度高、完全自動(dòng)化、易于調(diào)整預(yù)測(cè)、支持R和Python。

  • 劣勢(shì):可能不適用于非季節(jié)性強(qiáng)烈的時(shí)間序列、對(duì)新用戶(hù)而言參數(shù)調(diào)整可能有挑戰(zhàn)、模型透明度較低(作為黑盒模型)。

網(wǎng)站:Prophet | Forecasting at scale. (facebook.github.io)
源碼地址:https://github.com/facebook/prophet
GitHub☆:17.7k

Tsfresh

tsfresh 是一個(gè)自動(dòng)化提取大量時(shí)間序列特征的Python庫(kù)。它專(zhuān)門(mén)設(shè)計(jì)來(lái)識(shí)別時(shí)間序列中哪些特征對(duì)于回歸或分類(lèi)任務(wù)是有意義的,從而減少手動(dòng)特征工程的工作量。其主要功能包括自動(dòng)計(jì)算多種時(shí)間序列特征、評(píng)估這些特征對(duì)模型的重要性,并支持與scikit-learn兼容的轉(zhuǎn)換器。tsfresh 的優(yōu)勢(shì)在于能夠自動(dòng)識(shí)別和提取有用的特征,幫助提高模型性能,特別適合于需要處理大量時(shí)間序列數(shù)據(jù)的場(chǎng)景。然而,自動(dòng)提取的大量特征可能需要進(jìn)一步篩選來(lái)確定最相關(guān)的特征集。 tsfresh本身是不能用于實(shí)現(xiàn)時(shí)序預(yù)測(cè)或者時(shí)序分類(lèi)等任務(wù)的,但可以基于其特征提取的結(jié)果完成后續(xù)的操作 。

網(wǎng)站:tsfresh — tsfresh 0.20.2.post0.dev4+g3da2360 documentation
源碼地址:https://github.com/blue-yonder/tsfresh
GitHub☆:8.1k

Sktime

sktime 是一個(gè)專(zhuān)為時(shí)間序列分析而構(gòu)建的Python庫(kù),提供了一系列工具和算法來(lái)處理、分析和預(yù)測(cè)時(shí)間序列數(shù)據(jù)。

雖然sktime與tslearn類(lèi)似,同樣 延續(xù)了sklearn的API風(fēng)格(例如模型訓(xùn)練用fit、預(yù)測(cè)用predict,評(píng)分用score等等),但在功能上sktime卻并沒(méi)有太多sklearn中的元素,例如對(duì)于時(shí)序預(yù)測(cè)任務(wù),sktime中主要提供的是經(jīng)典的統(tǒng)計(jì)學(xué)模型系列(ARIMA,ETS,以及比較火熱的prophet等),同時(shí)也提供了模型Ensemble能力和AutoML功能(可便于模型自動(dòng)調(diào)參和優(yōu)化)。

與此同時(shí),sktime也集結(jié)了一些深度學(xué)習(xí)的模型,包括Transformer等,這也為sktime提供了更強(qiáng)的競(jìng)爭(zhēng)力。

主要功能

  • 時(shí)間序列預(yù)測(cè):支持多種預(yù)測(cè)模型,包括經(jīng)典統(tǒng)計(jì)方法和機(jī)器學(xué)習(xí)算法。
  • 時(shí)間序列分類(lèi)與聚類(lèi):提供了用于時(shí)間序列分類(lèi)和聚類(lèi)的工具和算法。
  • 特征提取:能夠從時(shí)間序列數(shù)據(jù)中自動(dòng)提取特征。
  • 轉(zhuǎn)換和組合模型:支持對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行預(yù)處理、降維以及模型組合等操作。

網(wǎng)址:Welcome to sktime — sktime documentation
源碼地址:https://github.com/sktime/sktime
GitHub☆:7.4k

Darts

Darts是一個(gè)用戶(hù)友好的用于時(shí)間序列預(yù)測(cè)Python庫(kù),它提供了從ARIMA到深度神經(jīng)網(wǎng)絡(luò)等多種模型。這些預(yù)測(cè)模型都可以用相同的方式使用,類(lèi)似于scikit-learn的fit()和predict()函數(shù)。Darts還簡(jiǎn)化了模型的回測(cè),多模型預(yù)測(cè)的結(jié)合,以及考慮外部數(shù)據(jù)的能力。它支持單變量和多變量時(shí)間序列,并且基于機(jī)器學(xué)習(xí)的模型可以在包含多個(gè)時(shí)間序列的大數(shù)據(jù)集上訓(xùn)練,某些模型還提供了豐富的概率預(yù)測(cè)支持。此外,Darts還提供了廣泛的異常檢測(cè)功能。

Darts庫(kù)具有以下突出特點(diǎn):

  • 多種時(shí)間序列預(yù)測(cè)模型:Darts支持傳統(tǒng)的ARIMA、Exponential Smoothing和Prophet模型,同時(shí)也包括現(xiàn)代的深度學(xué)習(xí)模型,如RNN、LSTM、TCN等。這使用戶(hù)能夠選擇最適合其數(shù)據(jù)的模型來(lái)進(jìn)行預(yù)測(cè)。
  • 模型評(píng)估和選擇:Darts提供了一套豐富的性能評(píng)估工具,用于比較和選擇最佳的時(shí)間序列模型。用戶(hù)可以使用均方誤差、均方根誤差、平均絕對(duì)誤差等指標(biāo)來(lái)評(píng)估模型性能。
  • 可視化分析:Darts具備豐富的可視化工具,幫助用戶(hù)探索時(shí)間席列數(shù)據(jù),可視化預(yù)測(cè)結(jié)果,以及進(jìn)行模型診斷。這對(duì)于理解數(shù)據(jù)和模型行為非常有幫助。
  • 特征工程:Darts庫(kù)支持在時(shí)間序列上進(jìn)行特征工程,包括滾動(dòng)窗口統(tǒng)計(jì)、差分、平滑等。這些技術(shù)可以用于提取有用的特征,以提高模型性能。

網(wǎng)址:Time Series Made Easy in Python — darts documentation
源碼地址:https://github.com/unit8co/darts
GitHub☆:7.3k

Kats

Kats是Facebook推出的一個(gè)時(shí)間序列分析工具包,提供了一個(gè)輕量級(jí)、易于使用且通用的框架來(lái)執(zhí)行時(shí)間序列分析。它的主要功能包括預(yù)測(cè)、檢測(cè)、特征提取/嵌入和多變量分析。優(yōu)勢(shì)在于它集成了10多種預(yù)測(cè)模型、模式檢測(cè)功能、65種具有清晰統(tǒng)計(jì)定義的特征提取,以及時(shí)間序列模擬器等實(shí)用工具。然而,作為一個(gè)相對(duì)較新的庫(kù),Kats可能在文檔完整性、社區(qū)支持和成熟度方面不如一些長(zhǎng)期存在的庫(kù)。
目前支持以下 10 種基本預(yù)測(cè)模型:Linear、Quadratic、ARIMA、SARIMA、Holt-Winters、Prophet、AR-Net、LSTM、Theta、VAR

網(wǎng)址:Kats | Kats (facebookresearch.github.io)
源碼地址:https://github.com/facebookresearch/kats
GitHub☆:4.7k

Tslearn

tslearn 是一個(gè)專(zhuān)門(mén)針對(duì)時(shí)間序列數(shù)據(jù)設(shè)計(jì)的Python機(jī)器學(xué)習(xí)庫(kù)。它旨在提供一個(gè)易于使用和靈活的工具,以支持時(shí)間序列數(shù)據(jù)的分析和預(yù)測(cè)。tslearn 提供了一系列的機(jī)器學(xué)習(xí)方法,這些方法專(zhuān)門(mén)針對(duì)時(shí)間序列數(shù)據(jù)的特性進(jìn)行了優(yōu)化。由于提供了多種算法和參數(shù),用戶(hù)需要根據(jù)具體的應(yīng)用場(chǎng)景做出選擇,這可能需要較深的機(jī)器學(xué)習(xí)和時(shí)間序列分析知識(shí)。但對(duì)于熟悉 scikit-learn 的用戶(hù),tslearn 的學(xué)習(xí)曲線(xiàn)非常平緩。

主要功能

  • 時(shí)間序列聚類(lèi):tslearn 提供了多種時(shí)間序列聚類(lèi)算法,如 k-均值聚類(lèi)、基于 DTW 的聚類(lèi)等。
  • 時(shí)間序列分類(lèi):支持多種時(shí)間序列分類(lèi)方法,包括 k-最近鄰(k-NN)分類(lèi)器、支持向量機(jī)(SVM)等。
  • 時(shí)間序列回歸:可以使用 tslearn 進(jìn)行時(shí)間序列回歸分析。算法包括KNN,TimeSeriesSVR,MLP(多層感知器)。
  • 形狀分析:提供了基于 DTW 的時(shí)間序列形狀相似度分析工具。
  • 數(shù)據(jù)預(yù)處理:包括時(shí)間序列縮放、時(shí)間序列重采樣等預(yù)處理工具。

網(wǎng)址:tslearn’s documentation — tslearn 0.6.3 documentation
源碼地址:https://github.com/tslearn-team/tslearn
GitHub☆:2.8k

Pyflux

PyFlux是一個(gè)開(kāi)源Python庫(kù),專(zhuān)為時(shí)間序列分析和預(yù)測(cè)設(shè)計(jì)。它提供了廣泛的統(tǒng)計(jì)模型庫(kù),讓用戶(hù)能夠輕松地進(jìn)行時(shí)間序列數(shù)據(jù)的建模、分析和預(yù)測(cè)。PyFlux的設(shè)計(jì)理念是提供一個(gè)易于使用、靈活且功能強(qiáng)大的時(shí)間序列建模工具。但與一些其他庫(kù)(如Facebook的Prophet或者statsmodels)相比,PyFlux的維護(hù)和更新可能不那么頻繁,這可能導(dǎo)致文檔或功能的滯后。對(duì)于非常大的數(shù)據(jù)集,PyFlux的性能可能不如一些更優(yōu)化的庫(kù),如在處理大規(guī)模時(shí)間序列數(shù)據(jù)時(shí)可能會(huì)遇到速度和效率的問(wèn)題。
包含的模型有:ARIMA,ARIMAX、DAR(Dynamic AR) models、Dynamic Linear regression models、Beta-t-EGARCH models、Beta-t-EGARCH in-mean models、Beta-t-EGARCH in-mean regression models、Beta-t-EGARCH long memory models、Beta Skew-t GARCH models、Beta Skew-t in-mean GARCH models、GARCH models、GAS(Generalized Autoregressive Score) models、GAS local level models、GAS local linear trend models、GAS ranking models、GAS regression models、GASX models、GP-NARX models、Gaussian Local Level models

網(wǎng)址:Introduction — PyFlux 0.4.7 documentation
源碼地址:https://github.com/RJT1990/pyflux
GitHub☆:2.1k

Tsfel

TSFEL (Time Series Feature Extraction Library)是一個(gè)用于時(shí)間序列數(shù)據(jù)的特征提取的Python包。它允許用戶(hù)在不需要大量編程工作的情況下,對(duì)時(shí)間序列進(jìn)行探索性的特征提取。TSFEL能自動(dòng)提取超過(guò)60種不同的統(tǒng)計(jì)、時(shí)域和頻域特征。它的主要功能包括直觀快速的部署、計(jì)算復(fù)雜度評(píng)估、詳細(xì)的文檔說(shuō)明,以及易于擴(kuò)展新特征的能力。其優(yōu)勢(shì)在于能快速地從時(shí)間序列數(shù)據(jù)中提取豐富的特征,且對(duì)于數(shù)據(jù)科學(xué)家來(lái)說(shuō)使用方便。不過(guò),作為一個(gè)自動(dòng)化的特征提取庫(kù),可能會(huì)提取一些在特定情境下不太相關(guān)的特征,因此在使用這些特征進(jìn)行模型訓(xùn)練之前,可能需要進(jìn)一步的特征選擇或降維處理。
似乎更側(cè)重于時(shí)間序列的特征提取。

網(wǎng)址:Welcome to TSFEL documentation!tsfel.readthedocs.io/en/latest/
源碼地址:https://github.com/fraunhoferportugal/tsfel
GitHub☆:855

一些總結(jié)

  • tsfresh定位于時(shí)序數(shù)據(jù)的特征工程,可方便地快速完成特征提取、特征選擇與轉(zhuǎn)換等操作;
  • tslearn堪稱(chēng)是sklearn機(jī)器學(xué)習(xí)庫(kù)的時(shí)序版,本質(zhì)上可看做是將sklearn中的主要功能對(duì)時(shí)序數(shù)據(jù)進(jìn)行了定制化開(kāi)發(fā)和適配,使其更容易使用,同時(shí)也整合與其他主流工具包的相互轉(zhuǎn)換;
  • sktime也延續(xù)了sklearn的API風(fēng)格,但在功能上則并不拘泥于sklearn中的功能元素,集成的主要是時(shí)序數(shù)據(jù)特有的模型,并加入了一些最新的功能模塊,例如Meta提出的時(shí)序預(yù)測(cè)模型Prophet以及深度學(xué)習(xí)相關(guān)模型等。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容