最先進的時間序列和序列深度學習庫。
tsai
是基於 Pytorch 和 fastai 構建的開源深度學習包,專注於時間序列任務(如分類、回歸、預測、插補等)的最先進技術...
tsai
目前正在由 timeseriesAI 積極開發。
在最近的幾個版本中,以下是tsai
的一些最重要的新增內容:
tsai
下載的資料集數量:您可以使用以下命令從 pip 安裝最新的穩定版本:
pip install tsai
如果您打算自己開發 tsai,或者想要處於最前沿,您可以使用可編輯安裝。先安裝 PyTorch,然後:
git clone https : // github . com / timeseriesAI / tsai
pip install - e "tsai[dev]"
注意:從 tsai 0.3.0 開始,tsai 將只安裝硬依賴項。預設不會安裝其他軟依賴項(僅選定任務所需)(這是建議的方法。如果您需要任何未安裝的依賴項,tsai 會在必要時要求您安裝)。如果您仍然想安裝 tsai 及其所有依賴項,您可以透過執行以下命令來完成:
pip install tsai [ extras ]
您也可以使用 conda 安裝 tsai(請注意,如果將 conda 替換為 mamba,安裝過程將更快、更可靠):
conda install - c timeseriesai tsai
這是文件的連結。
以下是tsai
提供的一些最先進模型的清單:
加上其他自訂模型,例如:TransformerModel、LSTMAttention、GRUAttention,...
要了解 tsai 包,我們建議您從 Google Colab 中的這個筆記本開始: 01_Intro_to_Time_Series_Classification它提供了時間序列分類任務的概述。
我們還開發了許多其他教程筆記本。
要在您自己的筆記本中使用 tsai,安裝軟體包後您唯一需要做的就是執行以下命令:
from tsai . all import *
這些只是如何使用tsai
的幾個範例:
訓練:
from tsai . basics import *
X , y , splits = get_classification_data ( 'ECG200' , split_data = False )
tfms = [ None , TSClassification ()]
batch_tfms = TSStandardize ()
clf = TSClassifier ( X , y , splits = splits , path = 'models' , arch = "InceptionTimePlus" , tfms = tfms , batch_tfms = batch_tfms , metrics = accuracy , cbs = ShowGraph ())
clf . fit_one_cycle ( 100 , 3e-4 )
clf . export ( "clf.pkl" )
推理:
from tsai . inference import load_learner
clf = load_learner ( "models/clf.pkl" )
probas , target , preds = clf . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
訓練:
from tsai . basics import *
X , y , splits = get_classification_data ( 'LSST' , split_data = False )
tfms = [ None , TSClassification ()]
batch_tfms = TSStandardize ( by_sample = True )
mv_clf = TSClassifier ( X , y , splits = splits , path = 'models' , arch = "InceptionTimePlus" , tfms = tfms , batch_tfms = batch_tfms , metrics = accuracy , cbs = ShowGraph ())
mv_clf . fit_one_cycle ( 10 , 1e-2 )
mv_clf . export ( "mv_clf.pkl" )
推理:
from tsai . inference import load_learner
mv_clf = load_learner ( "models/mv_clf.pkl" )
probas , target , preds = mv_clf . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
訓練:
from tsai . basics import *
X , y , splits = get_regression_data ( 'AppliancesEnergy' , split_data = False )
tfms = [ None , TSRegression ()]
batch_tfms = TSStandardize ( by_sample = True )
reg = TSRegressor ( X , y , splits = splits , path = 'models' , arch = "TSTPlus" , tfms = tfms , batch_tfms = batch_tfms , metrics = rmse , cbs = ShowGraph (), verbose = True )
reg . fit_one_cycle ( 100 , 3e-4 )
reg . export ( "reg.pkl" )
推理:
from tsai . inference import load_learner
reg = load_learner ( "models/reg.pkl" )
raw_preds , target , preds = reg . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
ROCKET(RocketClassifier、RocketRegressor、MiniRocketClassifier、MiniRocketRegressor、MiniRocketVotingClassifier 或 MiniRocketVotingRegressor)是有些不同的模型。它們實際上並不是深度學習模型(儘管它們使用卷積)並且以不同的方式使用。
pip install sktime
或使用:
pip install tsai [ extras ]
訓練:
from sklearn . metrics import mean_squared_error , make_scorer
from tsai . data . external import get_Monash_regression_data
from tsai . models . MINIROCKET import MiniRocketRegressor
X_train , y_train , * _ = get_Monash_regression_data ( 'AppliancesEnergy' )
rmse_scorer = make_scorer ( mean_squared_error , greater_is_better = False )
reg = MiniRocketRegressor ( scoring = rmse_scorer )
reg . fit ( X_train , y_train )
reg . save ( 'MiniRocketRegressor' )
推理:
from sklearn . metrics import mean_squared_error
from tsai . data . external import get_Monash_regression_data
from tsai . models . MINIROCKET import load_minirocket
* _ , X_test , y_test = get_Monash_regression_data ( 'AppliancesEnergy' )
reg = load_minirocket ( 'MiniRocketRegressor' )
y_pred = reg . predict ( X_test )
mean_squared_error ( y_test , y_pred , squared = False )
您可以在以下場景中使用 tsai 進行預測:
您需要: * 準備 X(時間序列輸入)和目標 y(請參閱文件) * 選擇 PatchTST 或以 Plus 結尾的 tsai 模型之一(TSTPlus、InceptionTimePlus、TSiTPlus 等)。此模型將自動配置頭部以產生與目標輸入 y 形狀相同的輸出。
訓練:
from tsai . basics import *
ts = get_forecasting_time_series ( "Sunspots" ). values
X , y = SlidingWindow ( 60 , horizon = 1 )( ts )
splits = TimeSplitter ( 235 )( y )
tfms = [ None , TSForecasting ()]
batch_tfms = TSStandardize ()
fcst = TSForecaster ( X , y , splits = splits , path = 'models' , tfms = tfms , batch_tfms = batch_tfms , bs = 512 , arch = "TSTPlus" , metrics = mae , cbs = ShowGraph ())
fcst . fit_one_cycle ( 50 , 1e-3 )
fcst . export ( "fcst.pkl" )
推理:
from tsai . inference import load_learner
fcst = load_learner ( "models/fcst.pkl" , cpu = False )
raw_preds , target , preds = fcst . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
raw_preds . shape
# torch.Size([235, 1])
此範例展示如何建立提前 3 步的單變量預測。
訓練:
from tsai . basics import *
ts = get_forecasting_time_series ( "Sunspots" ). values
X , y = SlidingWindow ( 60 , horizon = 3 )( ts )
splits = TimeSplitter ( 235 , fcst_horizon = 3 )( y )
tfms = [ None , TSForecasting ()]
batch_tfms = TSStandardize ()
fcst = TSForecaster ( X , y , splits = splits , path = 'models' , tfms = tfms , batch_tfms = batch_tfms , bs = 512 , arch = "TSTPlus" , metrics = mae , cbs = ShowGraph ())
fcst . fit_one_cycle ( 50 , 1e-3 )
fcst . export ( "fcst.pkl" )
推理:
from tsai . inference import load_learner
fcst = load_learner ( "models/fcst.pkl" , cpu = False )
raw_preds , target , preds = fcst . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
raw_preds . shape
# torch.Size([235, 3])
tsai中所有時間序列模型和影像模型的輸入格式都是相同的。具有 3 個維度的 np.ndarray (或類似陣列的對象,如 zarr 等):
[#樣本x#變數x序列長度]
tsai 中表格模型的輸入格式(如 TabModel、TabTransformer 和 TabFusionTransformer)是 pandas 資料框。參見範例。
我們歡迎各種貢獻。開發增強功能、錯誤修復、文件、教學筆記本…
我們創建了一份指南來幫助您開始為 tsai 做出貢獻。您可以在這裡閱讀。
想要在專業環境中充分利用 timeseriesAI/tsai 的優勢嗎?讓我們幫忙。給我們發送電子郵件以了解更多資訊:[email protected]
如果您在研究中使用 tsai,請使用以下 BibTeX 條目:
@Misc{tsai,
author = {Ignacio Oguiza},
title = {tsai - A state-of-the-art deep learning library for time series and sequential data},
howpublished = {Github},
year = {2023},
url = {https://github.com/timeseriesAI/tsai}
}