You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This implementation views the model as a layered graph, where each layer
implements a forward, backword and parameters update methods (see below
diagram). This abstraction simplifies thinking about the algorithm and implementing it.
Differences from the paper
This implmenetation employs two (LinearLayer + SigmoidLayer) pairs instead of one (LinearLayer + SigmoidLayer) pair as in the paper (and shown in above diagram). This (using two pairs) has yielded improved results on some datasets. To have a similar setup as in the paper, simply update shapelets_lts/classification/shapelet_models.py:LtsShapeletClassifier._init_network().
The loss in this implementation is an updated version of the one in the
paper to allow training a single model for all the classes in the dataset (rather than one model/class). The impact on performance was not analysed. For details check shapelets_lts/network/cross_entropy_loss_layer.py
Installation
git clone git@github.com:mohaseeb/shaplets-python.git
cd shaplets-python
pip install .# or, for dev# pip install .[dev]
Usage
fromshapelets_lts.classificationimportLtsShapeletClassifier# create an LtsShapeletClassifier instanceclassifier=LtsShapeletClassifier(
K=20,
R=3,
L_min=30,
epocs=50,
lamda=0.01,
eta=0.01,
shapelet_initialization='segments_centroids',
plot_loss=True
)
# train the classifier. # train_data.shape -> (# train samples X time-series length) # train_label.shape -> (# train samples)classifier.fit(train_data, train_label, plot_loss=True)
# evaluate on test data. # test_data.shape -> (# test samples X time-series length)prediction=classifier.predict(test_data)
# retrieve the learnt shapeletsshapelets=classifier.get_shapelets()
# and plot sample shapeletsfromshapelets_lts.utilimportplot_sample_shapeletsplot_sample_shapelets(shapelets=shapelets, sample_size=36)
Also have a look at example.py. For a stable training, the samples might need to be scaled.
Example plot from plot_sample_shapelets.
About
Python implementation of the Learning Time-Series Shapelets method, that learns a shapelet-based time-series classifier with gradient descent.