Pustaka Pembelajaran Mendalam yang canggih untuk Rangkaian Waktu dan Urutan.
tsai
adalah paket pembelajaran mendalam sumber terbuka yang dibangun di atas Pytorch & fastai yang berfokus pada teknik canggih untuk tugas deret waktu seperti klasifikasi, regresi, perkiraan, imputasi…
tsai
saat ini sedang dalam pengembangan aktif oleh timeseriesAI.
Selama beberapa rilis terakhir, berikut adalah beberapa tambahan paling signifikan pada tsai
:
tsai
:Anda dapat menginstal versi stabil terbaru dari pip menggunakan:
pip install tsai
Jika Anda berencana mengembangkan tsai sendiri, atau ingin menjadi yang terdepan, Anda dapat menggunakan instalasi yang dapat diedit. Pertama instal PyTorch, lalu:
git clone https : // github . com / timeseriesAI / tsai
pip install - e "tsai[dev]"
Catatan: memulai dengan tsai 0.3.0 tsai hanya akan menginstal dependensi keras. Dependensi lunak lainnya (yang hanya diperlukan untuk tugas-tugas tertentu) tidak akan diinstal secara default (ini adalah pendekatan yang disarankan. Jika Anda memerlukan dependensi apa pun yang tidak diinstal, tsai akan meminta Anda untuk menginstalnya bila diperlukan). Jika Anda masih ingin menginstal tsai dengan semua dependensinya, Anda dapat melakukannya dengan menjalankan:
pip install tsai [ extras ]
Anda juga dapat menginstal tsai menggunakan conda (perhatikan bahwa jika Anda mengganti conda dengan mamba, proses instalasi akan jauh lebih cepat dan lebih dapat diandalkan):
conda install - c timeseriesai tsai
Berikut tautan ke dokumentasinya.
Berikut daftar beberapa model tercanggih yang tersedia di tsai
:
ditambah model khusus lainnya seperti: TransformerModel, LSTMAttention, GRUAttention, …
Untuk mengenal paket tsai, kami sarankan Anda memulai dengan buku catatan ini di Google Colab: 01_Intro_to_Time_Series_Classification Ini memberikan ikhtisar tugas klasifikasi deret waktu.
Kami juga telah mengembangkan banyak buku catatan tutorial lainnya.
Untuk menggunakan tsai di buku catatan Anda sendiri, satu-satunya hal yang perlu Anda lakukan setelah menginstal paket adalah menjalankan ini:
from tsai . all import *
Ini hanyalah beberapa contoh bagaimana Anda dapat menggunakan tsai
:
Pelatihan:
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" )
Kesimpulan:
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 ]])
Pelatihan:
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" )
Kesimpulan:
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 ]])
Pelatihan:
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" )
Kesimpulan:
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 atau MiniRocketVotingRegressor) adalah model yang agak berbeda. Ini sebenarnya bukan model pembelajaran mendalam (walaupun menggunakan konvolusi) dan digunakan dengan cara yang berbeda.
pip install sktime
atau gunakan:
pip install tsai [ extras ]
Pelatihan:
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' )
Kesimpulan:
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 )
Anda dapat menggunakan tsai untuk perkiraan dalam skenario berikut:
Anda harus: * menyiapkan X (input deret waktu) dan target y (lihat dokumentasi) * memilih PatchTST atau salah satu model tsai yang diakhiri dengan Plus (TSTPlus, InceptionTimePlus, TSiTPlus, dll). Model akan mengonfigurasi head secara otomatis untuk menghasilkan keluaran dengan bentuk yang sama dengan masukan target y.
Pelatihan:
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" )
Kesimpulan:
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])
Contoh ini menunjukkan cara membuat perkiraan univariat 3 langkah ke depan.
Pelatihan:
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" )
Kesimpulan:
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])
Format input untuk semua model deret waktu dan model gambar di tsai adalah sama. Sebuah np.ndarray (atau objek mirip array seperti zarr, dll) dengan 3 dimensi:
[# sampel x # variabel x panjang urutan]
Format masukan untuk model tabel di tsai (seperti TabModel, TabTransformer, dan TabFusionTransformer) adalah kerangka data pandas. Lihat contoh.
Kami menyambut baik kontribusi dalam bentuk apa pun. Pengembangan penyempurnaan, perbaikan bug, dokumentasi, buku catatan tutorial,…
Kami telah membuat panduan untuk membantu Anda mulai berkontribusi pada tsai. Anda dapat membacanya di sini.
Ingin memanfaatkan rangkaian waktuAI/tsai secara maksimal dalam lingkungan profesional? Mari kita bantu. Kirimkan email kepada kami untuk mempelajari lebih lanjut: [email protected]
Jika Anda menggunakan tsai dalam penelitian Anda, harap gunakan entri BibTeX berikut:
@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}
}