مكتبة التعلم العميق الحديثة للسلاسل الزمنية والتسلسلات.
tsai
عبارة عن حزمة تعلم عميق مفتوحة المصدر مبنية على Pytorch وfastai وتركز على أحدث التقنيات لمهام السلاسل الزمنية مثل التصنيف والانحدار والتنبؤ والاحتساب...
tsai
قيد التطوير حاليًا بواسطة timeseriesAI.
خلال الإصدارات القليلة الماضية، إليك بعض أهم الإضافات إلى tsai
:
tsai
:يمكنك تثبيت أحدث إصدار ثابت من النقطة باستخدام:
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 ]
يمكنك أيضًا تثبيت tsai باستخدام conda (لاحظ أنه إذا قمت باستبدال 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 ]])
تعتبر الصواريخ (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 أو أحد نماذج tsai التي تنتهي بـ Plus (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])
يوضح هذا المثال كيفية إنشاء تنبؤ أحادي المتغير بثلاث خطوات للأمام.
تمرين:
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])
تنسيق الإدخال لجميع نماذج السلاسل الزمنية ونماذج الصور في تساي هو نفسه. np.ndarray (أو كائن يشبه المصفوفة مثل zarr، وما إلى ذلك) بثلاثة أبعاد:
[# عينات × # متغيرات × طول التسلسل]
تنسيق الإدخال للنماذج الجدولية في tsai (مثل TabModel وTabTransformer وTabFusionTransformer) هو إطار بيانات الباندا. انظر المثال.
نرحب بالمساهمات بكافة أنواعها. تطوير التحسينات وإصلاحات الأخطاء والوثائق والدفاتر التعليمية، ...
لقد أنشأنا دليلاً لمساعدتك على بدء المساهمة في تساي. يمكنك قراءتها هنا.
هل ترغب في تحقيق أقصى استفادة من السلاسل الزمنية AI/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}
}