Skip to main content

todo

Project description

TSInterpret Logo

tests PyPI PyPI - Downloads GitHub

TSInterpret is a Python library for interpreting time series classification. The ambition is to faciliate the usage of time series interpretability methods. The Framework supports Sklearn, Tensorflow, Torch and in some cases predict functions. A listing of implemented algorithms and supported frameworks can be found in our Documentation. More information on our framework can be found in our paper.

💈 Installation

pip install TSInterpret

You can install the latest development version from GitHub as so:

pip install https://github.com/fzi-forschungszentrum-informatik/TSInterpret.git --upgrade

Or, through SSH:

pip install git@github.com:fzi-forschungszentrum-informatik/TSInterpret.git --upgrade

🍫 Quickstart

The following example creates a simple Neural Network based on tensorflow and interprets the Classfier with Integrated Gradients and Temporal Saliency Rescaling [1]. For further examples check out the Documentation.

[1] Ismail, Aya Abdelsalam, et al. "Benchmarking deep learning interpretability in time series predictions." Advances in neural information processing systems 33 (2020): 6441-6452.

Import

import pickle
import numpy as np 
import matplotlib.pyplot as plt
import seaborn as snst
from tslearn.datasets import UCR_UEA_datasets
import tensorflow as tf 

Create Classifcation Model

This Section uses a pretrained Classification Model to illustrate the use of our package. For running the example, please clone our repository and comment the variable PATH_TO_YOUR_CLASSIFICATION_MODEL in. The code in this section can also be replaces with your personal classification model written in torch or tensorflow.

# Load data.
dataset='BasicMotions'
train_x,train_y, test_x, test_y=UCR_UEA_datasets().load_dataset(dataset)
enc1=sklearn.OneHotEncoder(sparse=False).fit(train_y.reshape(-1,1))
train_y=enc1.transform(train_y.reshape(-1,1))
test_y=enc1.transform(test_y.reshape(-1,1))

# Load a model.
#e.g., PATH_TO_YOUR_CLASSIFICATION_MODEL=f'./TSInterpret/ClassificationModels/models/{dataset}/cnn/{dataset}best_model.hdf5'
model_to_explain = tf.keras.models.load_model(PATH_TO_YOUR_CLASSIFICATION_MODEL)

Explain & Visualize Model

from TSInterpret.InterpretabilityModels.Saliency.TSR import TSR
int_mod=TSR(model_to_explain, train_x.shape[-2],train_x.shape[-1], method='IG',mode='time')
item= np.array([test_x[0,:,:]])
label=int(np.argmax(test_y[0]))

exp=int_mod.explain(item,labels=label,TSR =True)

%matplotlib inline  
int_mod.plot(np.array([test_x[0,:,:]]),exp)

Algorithm Results

:monocle_face: Why a special package for the interpretability of time series predictors?

Compared to other data types like tabular, image, or natural language data, time series data is unintuitive to understand. Approaches to the explainability of tabular regression and classification often assume independent features. Compared to images or textual data, humans cannot intuitively and instinctively understand the underlying information contained in time series data. Further, research has shown that applying explainability algorithms for tabular, image, or natural language data often yields non-understandable and inaccurate explanations, as they do not consider the time component (e.g., highlighting many unconnected time-steps, instead of features or time slices [1]). Increasing research has focused on developing and adapting approaches to time series (survey: [2]). However, with no unified interface, accessibility to those methods is still an issue. TSInterpret tries to facilitate this by providing a PyPI package with a unified interface for multiple algorithms, documentation, and learning resources (notebooks) on the application.

[2] Rojat, Thomas, et al. "Explainable artificial intelligence (xai) on timeseries data: A survey." arXiv preprint arXiv:2104.00950 (2021).

👐 Contributing

Feel free to contribute in any way you like, we're always open to new ideas and approaches.

  • If you have questions, spotted a bug or ideas, feel free to open an issue.
  • Before opening a pull request, we also encourage users to open an issue for discussion.

Details on how to Contribute can be found here.

🏫 Affiliations

FZI Logo

Citation

If you use TSInterpret in your research, please consider citing it and the authors' original papers. The authors' original papers are cited in the documentation and the paper below.

@misc{https://doi.org/10.48550/arxiv.2208.05280,
  doi = {10.48550/ARXIV.2208.05280},
  
  url = {https://arxiv.org/abs/2208.05280},
  
  author = {Höllig, Jacqueline and Kulbach, Cedric and Thoma, Steffen},
  
  keywords = {Machine Learning (cs.LG), FOS: Computer and information sciences, FOS: Computer and information sciences},
  
  title = {TSInterpret: A unified framework for time series interpretability},
  
  publisher = {arXiv},
  
  year = {2022},
  
  copyright = {Creative Commons Attribution 4.0 International}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

TSInterpret-0.2.3.tar.gz (56.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

TSInterpret-0.2.3-py3-none-any.whl (80.5 kB view details)

Uploaded Python 3

File details

Details for the file TSInterpret-0.2.3.tar.gz.

File metadata

  • Download URL: TSInterpret-0.2.3.tar.gz
  • Upload date:
  • Size: 56.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for TSInterpret-0.2.3.tar.gz
Algorithm Hash digest
SHA256 6c6de8da9bbf4bd454c5b21692aaccb447908683bc5087916e4dc6baf17e4e5f
MD5 16bbfd516507be5174a20011362b6cd2
BLAKE2b-256 cf4be9cb887c8b746cb6ac69444d6e358996042a5137427b8da518045b763751

See more details on using hashes here.

File details

Details for the file TSInterpret-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: TSInterpret-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 80.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for TSInterpret-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1405ac8d9cf2bfbc96ee0d08b99df10b4caa4c67d6fb9b55e4f4ef7572caabe4
MD5 0eeff22a6b64f81a59c70f5b77f68fac
BLAKE2b-256 9c94ce2c7a48e342b593a5895c90882f3a2479fcd6e3518c61f9a373457f39ee

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page