Hochmoderne Deep-Learning-Bibliothek für Zeitreihen und Sequenzen.
tsai
ist ein Open-Source-Deep-Learning-Paket, das auf Pytorch und Fastai aufbaut und sich auf modernste Techniken für Zeitreihenaufgaben wie Klassifizierung, Regression, Prognose, Imputation usw. konzentriert.
tsai
wird derzeit von timeseriesAI aktiv weiterentwickelt.
Im Laufe der letzten paar Veröffentlichungen sind hier einige der wichtigsten Ergänzungen zu tsai
:
tsai
herunterladen können:Sie können die neueste stabile Version von pip installieren, indem Sie Folgendes verwenden:
pip install tsai
Wenn Sie planen, Tsai selbst zu entwickeln oder auf dem neuesten Stand sein möchten, können Sie eine bearbeitbare Installation verwenden. Installieren Sie zuerst PyTorch und dann:
git clone https : // github . com / timeseriesAI / tsai
pip install - e "tsai[dev]"
Hinweis: Ab Tsai 0.3.0 installiert Tsai nur harte Abhängigkeiten. Andere Soft-Abhängigkeiten (die nur für ausgewählte Aufgaben erforderlich sind) werden standardmäßig nicht installiert (dies ist die empfohlene Vorgehensweise. Wenn Sie eine der Abhängigkeiten benötigen, die nicht installiert ist, werden Sie von tsai bei Bedarf aufgefordert, diese zu installieren). Wenn Sie tsai dennoch mit all seinen Abhängigkeiten installieren möchten, können Sie dies tun, indem Sie Folgendes ausführen:
pip install tsai [ extras ]
Sie können Tsai auch mit Conda installieren (beachten Sie, dass der Installationsprozess viel schneller und zuverlässiger ist, wenn Sie Conda durch Mamba ersetzen):
conda install - c timeseriesai tsai
Hier ist der Link zur Dokumentation.
Hier ist eine Liste mit einigen der hochmodernen Modelle, die in tsai
erhältlich sind:
plus andere benutzerdefinierte Modelle wie: TransformerModel, LSTMAttention, GRUAttention, …
Um das Tsai-Paket kennenzulernen, empfehlen wir Ihnen, mit diesem Notizbuch in Google Colab zu beginnen: 01_Intro_to_Time_Series_Classification. Es bietet einen Überblick über eine Zeitreihenklassifizierungsaufgabe.
Wir haben auch viele andere Tutorial-Notizbücher entwickelt.
Um tsai in Ihren eigenen Notebooks zu verwenden, müssen Sie nach der Installation des Pakets nur Folgendes ausführen:
from tsai . all import *
Dies sind nur einige Beispiele dafür, wie Sie tsai
verwenden können:
Ausbildung:
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" )
Schlussfolgerung:
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 ]])
Ausbildung:
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" )
Schlussfolgerung:
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 ]])
Ausbildung:
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" )
Schlussfolgerung:
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 ]])
Bei den ROCKETs (RocketClassifier, RocketRegressor, MiniRocketClassifier, MiniRocketRegressor, MiniRocketVotingClassifier oder MiniRocketVotingRegressor) handelt es sich um etwas unterschiedliche Modelle. Sie sind eigentlich keine Deep-Learning-Modelle (obwohl sie Faltungen verwenden) und werden auf andere Weise verwendet.
pip install sktime
oder verwenden Sie:
pip install tsai [ extras ]
Ausbildung:
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' )
Schlussfolgerung:
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 )
Sie können Tsai für Prognosen in den folgenden Szenarien verwenden:
Sie müssen: * X (Zeitreiheneingabe) und das Ziel y vorbereiten (siehe Dokumentation) * PatchTST oder eines der Tsai-Modelle auswählen, die auf Plus enden (TSTPlus, InceptionTimePlus, TSiTPlus usw.). Das Modell konfiguriert einen Kopf automatisch so, dass er eine Ausgabe mit derselben Form wie die Zieleingabe y liefert.
Ausbildung:
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" )
Schlussfolgerung:
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])
Dieses Beispiel zeigt, wie eine univariate Prognose mit drei Schritten Vorsprung erstellt wird.
Ausbildung:
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" )
Schlussfolgerung:
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])
Das Eingabeformat für alle Zeitreihenmodelle und Bildmodelle in Tsai ist dasselbe. Ein np.ndarray (oder ein Array-ähnliches Objekt wie Zarr usw.) mit drei Dimensionen:
[# Proben x # Variablen x Sequenzlänge]
Das Eingabeformat für tabellarische Modelle in Tsai (wie TabModel, TabTransformer und TabFusionTransformer) ist ein Pandas-Datenrahmen. Siehe Beispiel.
Wir freuen uns über Beiträge aller Art. Entwicklung von Erweiterungen, Fehlerbehebungen, Dokumentationen, Tutorial-Notebooks, …
Wir haben einen Leitfaden erstellt, der Ihnen den Einstieg ins Tsai erleichtern soll. Sie können es hier lesen.
Möchten Sie in einem professionellen Umfeld das Beste aus timeseriesAI/tsai herausholen? Lassen Sie uns helfen. Senden Sie uns eine E-Mail, um mehr zu erfahren: [email protected]
Wenn Sie tsai in Ihrer Recherche verwenden, verwenden Sie bitte den folgenden BibTeX-Eintrag:
@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}
}