시계열 및 시퀀스를 위한 최첨단 딥 러닝 라이브러리.
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 ]
conda를 사용하여 tsai를 설치할 수도 있습니다(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 ]])
ROCKET(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 또는 Plus로 끝나는 tsai 모델(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의 모든 시계열 모델과 이미지 모델의 입력 형식은 동일합니다. 3차원의 np.ndarray(또는 zarr 등과 같은 배열형 객체):
[# 샘플 x # 변수 x 시퀀스 길이]
TabModel, TabFusionTransformer 등 tsai의 테이블 형식 모델에 대한 입력 형식은 pandas 데이터 프레임입니다. 예를 참조하세요.
우리는 모든 종류의 기여를 환영합니다. 개선 사항 개발, 버그 수정, 문서, 튜토리얼 노트북 등...
우리는 귀하가 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}
}