ห้องสมุดการเรียนรู้เชิงลึกที่ล้ำสมัยสำหรับอนุกรมเวลาและลำดับ
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 ]
คุณยังสามารถติดตั้ง 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 ]])
ROCKETs (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])
ตัวอย่างนี้แสดงวิธีสร้างการคาดการณ์ล่วงหน้าแบบไม่แปรผัน 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 จะเหมือนกัน np.ndarray (หรือวัตถุที่มีลักษณะคล้ายอาร์เรย์ เช่น zarr ฯลฯ) ที่มี 3 มิติ:
[# ตัวอย่าง x # ตัวแปร x ความยาวลำดับ]
รูปแบบอินพุตสำหรับโมเดลแบบตารางใน tsai (เช่น TabModel, TabTransformer และ TabFusionTransformer) คือ dataframe ของแพนด้า ดูตัวอย่าง
เรายินดีรับผลงานทุกประเภท การพัฒนาการปรับปรุง การแก้ไขข้อบกพร่อง เอกสาร สมุดบันทึกการสอน ...
เราได้สร้างคำแนะนำเพื่อช่วยให้คุณเริ่มมีส่วนร่วมกับ 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}
}