Bibliothèque de Deep Learning de pointe pour les séries temporelles et les séquences.
tsai
est un package d'apprentissage profond open source construit sur Pytorch et fastai et axé sur les techniques de pointe pour les tâches de séries chronologiques telles que la classification, la régression, la prévision, l'imputation…
tsai
est actuellement en développement actif par timeseriesAI.
Au cours des dernières versions, voici quelques-uns des ajouts les plus significatifs à tsai
:
tsai
:Vous pouvez installer la dernière version stable à partir de pip en utilisant :
pip install tsai
Si vous envisagez de développer tsai vous-même ou si vous souhaitez être à la pointe, vous pouvez utiliser une installation modifiable. Installez d'abord PyTorch, puis :
git clone https : // github . com / timeseriesAI / tsai
pip install - e "tsai[dev]"
Remarque : à partir de tsai 0.3.0, tsai n'installera que des dépendances matérielles. Les autres dépendances logicielles (qui ne sont requises que pour les tâches sélectionnées) ne seront pas installées par défaut (c'est l'approche recommandée. Si vous avez besoin d'une des dépendances qui n'est pas installée, tsai vous demandera de l'installer si nécessaire). Si vous souhaitez toujours installer tsai avec toutes ses dépendances, vous pouvez le faire en exécutant :
pip install tsai [ extras ]
Vous pouvez également installer tsai en utilisant conda (notez que si vous remplacez conda par mamba, le processus d'installation sera beaucoup plus rapide et plus fiable) :
conda install - c timeseriesai tsai
Voici le lien vers la documentation.
Voici une liste de certains des modèles les plus modernes disponibles en tsai
:
ainsi que d’autres modèles personnalisés comme : TransformerModel, LSTMAttention, GRUAttention, …
Pour découvrir le package tsai, nous vous suggérons de commencer avec ce notebook dans Google Colab : 01_Intro_to_Time_Series_Classification Il fournit un aperçu d'une tâche de classification de séries chronologiques.
Nous avons également développé de nombreux autres cahiers didactiques.
Pour utiliser tsai dans vos propres notebooks, la seule chose que vous devez faire après avoir installé le package est d'exécuter ceci :
from tsai . all import *
Ce ne sont là que quelques exemples de la façon dont vous pouvez utiliser tsai
:
Entraînement:
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" )
Inférence:
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 ]])
Entraînement:
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" )
Inférence:
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 ]])
Entraînement:
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" )
Inférence:
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 ]])
Les ROCKET (RocketClassifier, RocketRegressor, MiniRocketClassifier, MiniRocketRegressor, MiniRocketVotingClassifier ou MiniRocketVotingRegressor) sont des modèles quelque peu différents. Ce ne sont pas réellement des modèles d’apprentissage profond (bien qu’ils utilisent des convolutions) et sont utilisés de manière différente.
pip install sktime
ou utilisez :
pip install tsai [ extras ]
Entraînement:
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' )
Inférence:
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 )
Vous pouvez utiliser tsai pour les prévisions dans les scénarios suivants :
Vous devrez : * préparer X (entrée de série chronologique) et la cible y (voir documentation) * sélectionner PatchTST ou l'un des modèles de tsai se terminant par Plus (TSTPlus, InceptionTimePlus, TSiTPlus, etc). Le modèle configurera automatiquement une tête pour produire une sortie ayant la même forme que l'entrée cible y.
Entraînement:
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" )
Inférence:
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])
Cet exemple montre comment créer une prévision univariée en 3 étapes.
Entraînement:
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" )
Inférence:
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])
Le format d'entrée pour tous les modèles de séries chronologiques et modèles d'images dans tsai est le même. Un np.ndarray (ou un objet de type tableau comme zarr, etc.) à 3 dimensions :
[# échantillons x # variables x longueur de la séquence]
Le format d'entrée des modèles tabulaires dans tsai (comme TabModel, TabTransformer et TabFusionTransformer) est une trame de données pandas. Voir exemple.
Nous acceptons les contributions de toutes sortes. Développement d’améliorations, corrections de bugs, documentation, notebooks tutoriels, …
Nous avons créé un guide pour vous aider à commencer à contribuer à tsai. Vous pouvez le lire ici.
Vous souhaitez tirer le meilleur parti de timeseriesAI/tsai dans un cadre professionnel ? Laissez-nous vous aider. Envoyez-nous un e-mail pour en savoir plus : [email protected]
Si vous utilisez tsai dans votre recherche, veuillez utiliser l'entrée BibTeX suivante :
@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}
}