# tisc: pytorch-time-series-classification
[](https://badge.fury.io/py/tisc)
[](https://pepy.tech/project/tisc)
[](https://pepy.tech/project/tisc)
[](https://pepy.tech/project/tisc)
Simple model creation and training framework for <b>ti</b>me <b>s</b>eries <b>c</b>lassification in Pytorch.
## What can you do with tisc?
<b>`tisc` is a simple framework for time series classification in Pytorch.</b>
- You can create a Pytorch model for time series classification with just one function.
- You can choose the model from many supported models.
- You can train the model with just one method.
- You can evaluate or predict with the trained model with just one method.
## Setup
### 1. Install tisc
```bash
pip install tisc
```
### 2. Install Pytorch
If Pytorch is not installed to your environment, you have to install Pytorch that matches your environment from the official website: [https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/locally/)
example (this command is for my environment):
```bash
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
```
## Usage
### 0. Prepare the dataset / dataloader
#### Time series data
The time series data should be a 3D tensor with the shape of `(number_of_samples, timestep, dimentions)`.
For example, if you have a dataset with 1000 samples, each sample has 20 timesteps, and each timestep has 100 dimentions, the shape of the dataset should be `(1000, 20, 100)`.
The label should be a 1D tensor with the shape of `(number_of_samples,)`.
For example, if you have a dataset with 1000 samples, the shape of the label should be `(1000,)`.
```python
import torch
# The shape of the time series data should be (number_of_samples, timestep, dimentions)
print(train_data.shape) # (1000, 20, 100)
# The shape of the label should be (number_of_samples,)
print(train_label.shape) # (1000,)
```
#### Dataset
`tisc` supports the dataset that is a subclass of `torch.utils.data.Dataset`.
The dataset should return a tuple of `(data, label)` in the `__getitem__` method.
You can use `TensorDataset` from `torch.utils.data` to create a dataset from the time series data and the label easily.
```python
import torch
from torch.utils.data import TensorDataset
# Prepare the dataset with TensorDataset
train_dataset = TensorDataset(train_data, train_label)
val_dataset = TensorDataset(val_data, val_label)
test_dataset = TensorDataset(test_data, test_label)
# Check the type of the dataset
print(type(train_dataset)) # <class 'torch.utils.data.dataset.TensorDataset'>
```
#### Dataloader
You have to use `torch.utils.data.DataLoader` to load the dataset.
```python
import torch
from torch.utils.data import DataLoader
# Prepare the dataset
train_loader = DataLoader(train_dataset, batch_size=512, shuffle=True)
val_loader = DataLoader(val_dataset, batch_size=512, shuffle=False)
test_loader = DataLoader(test_dataset, batch_size=512, shuffle=False)
# Check the type of the dataloader
print(type(train_loader)) # <class 'torch.utils.data.dataloader.DataLoader'>
```
### 1. Create a classifier
You can create a classifier with the `build_classifier` function.
The `build_classifier` function returns a `tisc.Classifier` object.
A `Classifier` object contains the model, the optimizer, the loss function, and the training and evaluation methods.
When you create a classifier, you have to pass the following arguments:
- `model_name`: The name of the model. The model should be one of the supported models. (e.g., `'LSTM'`, `'BiLSTM'`, `'Transformer'`)
- `timestep`: The number of timesteps in the time series data.
- `dimentions`: The number of dimentions in each timestep.
- `num_classes`: The number of classes in the dataset.
```python
import tisc
# Create a classifier
classifier = tisc.build_classifier(model_name='LSTM',
timestep=20,
dimentions=100,
num_classes=10)
# Check the type of the classifier
print(type(classifier)) # <class 'tisc.Classifier'>
```
### 2. Train the classifier
You can train the classifier with the `train` method.
The `train` method requires the following arguments:
- `epochs`: The number of epochs to train the classifier.
- `train_loader`: The dataloader for the training dataset.
you can pass `val_loader` to train the classifier with validation.
```python
classifier.train(train_loader, epochs=100)
# If the `val_loader` argument is passed, you can train the classifier with validation.
classifier.train(train_loader, val_loader=val_loader, epochs=100)
```
### 3. Evaluate the classifier
You can evaluate the classifier with the `evaluate` method.
The `evaluate` method requires the following arguments:
- `test_loader`: The dataloader for the test dataset.
The `evaluate` method can return the classification report and the confusion matrix if you pass the `return_report` and `return_confusion_matrix` arguments as `True`.
If `with_best_model` argument is `True`, the classifier will use the best model that marked the best result about the model saving strategy.
```python
classifier.evaluate(test_loader,
return_report=True,
return_confusion_matrix=True,
with_best_model=True)
```
## Supported models
The models that can be used in version 0.1.0:
- LSTM
- BiLSTM
- Transformer
and more! (More models will be added.)
Raw data
{
"_id": null,
"home_page": "https://github.com/Yutsuro/pytorch-time-series-classification",
"name": "tisc",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "Pytorch Time-Series-Classification LSTM BiLSTM Transformer Machine-Learning Deep-Learning AI Artificial-Intelligence",
"author": "Yutsuro",
"author_email": "Yuki@utsu.ro",
"download_url": "https://files.pythonhosted.org/packages/e6/6f/26965779c6cb95329b03b0d16e5e7ee27e48533dfb64f9ffd88063b39657/tisc-0.1.2.tar.gz",
"platform": null,
"description": "# tisc: pytorch-time-series-classification\r\r\n\r\r\n[](https://badge.fury.io/py/tisc)\r\r\n[](https://pepy.tech/project/tisc)\r\r\n[](https://pepy.tech/project/tisc)\r\r\n[](https://pepy.tech/project/tisc)\r\r\n\r\r\nSimple model creation and training framework for <b>ti</b>me <b>s</b>eries <b>c</b>lassification in Pytorch.\r\r\n\r\r\n## What can you do with tisc?\r\r\n\r\r\n<b>`tisc` is a simple framework for time series classification in Pytorch.</b>\r\r\n\r\r\n- You can create a Pytorch model for time series classification with just one function.\r\r\n- You can choose the model from many supported models.\r\r\n- You can train the model with just one method.\r\r\n- You can evaluate or predict with the trained model with just one method.\r\r\n\r\r\n## Setup\r\r\n\r\r\n### 1. Install tisc\r\r\n```bash\r\r\npip install tisc\r\r\n```\r\r\n\r\r\n### 2. Install Pytorch\r\r\n\r\r\nIf Pytorch is not installed to your environment, you have to install Pytorch that matches your environment from the official website: [https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/locally/)\r\r\n\r\r\nexample (this command is for my environment):\r\r\n```bash\r\r\npip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118\r\r\n```\r\r\n\r\r\n## Usage\r\r\n\r\r\n### 0. Prepare the dataset / dataloader\r\r\n\r\r\n#### Time series data\r\r\n\r\r\nThe time series data should be a 3D tensor with the shape of `(number_of_samples, timestep, dimentions)`.\r\r\n\r\r\nFor example, if you have a dataset with 1000 samples, each sample has 20 timesteps, and each timestep has 100 dimentions, the shape of the dataset should be `(1000, 20, 100)`.\r\r\n\r\r\nThe label should be a 1D tensor with the shape of `(number_of_samples,)`.\r\r\n\r\r\nFor example, if you have a dataset with 1000 samples, the shape of the label should be `(1000,)`.\r\r\n\r\r\n```python\r\r\nimport torch\r\r\n\r\r\n# The shape of the time series data should be (number_of_samples, timestep, dimentions)\r\r\nprint(train_data.shape) # (1000, 20, 100)\r\r\n\r\r\n# The shape of the label should be (number_of_samples,)\r\r\nprint(train_label.shape) # (1000,)\r\r\n```\r\r\n\r\r\n#### Dataset\r\r\n\r\r\n`tisc` supports the dataset that is a subclass of `torch.utils.data.Dataset`. \r\r\n\r\r\nThe dataset should return a tuple of `(data, label)` in the `__getitem__` method.\r\r\n\r\r\nYou can use `TensorDataset` from `torch.utils.data` to create a dataset from the time series data and the label easily.\r\r\n\r\r\n```python\r\r\nimport torch\r\r\nfrom torch.utils.data import TensorDataset\r\r\n\r\r\n# Prepare the dataset with TensorDataset\r\r\ntrain_dataset = TensorDataset(train_data, train_label)\r\r\nval_dataset = TensorDataset(val_data, val_label)\r\r\ntest_dataset = TensorDataset(test_data, test_label)\r\r\n\r\r\n# Check the type of the dataset\r\r\nprint(type(train_dataset)) # <class 'torch.utils.data.dataset.TensorDataset'>\r\r\n```\r\r\n\r\r\n#### Dataloader\r\r\n\r\r\nYou have to use `torch.utils.data.DataLoader` to load the dataset.\r\r\n\r\r\n```python\r\r\nimport torch\r\r\nfrom torch.utils.data import DataLoader\r\r\n\r\r\n# Prepare the dataset\r\r\ntrain_loader = DataLoader(train_dataset, batch_size=512, shuffle=True)\r\r\nval_loader = DataLoader(val_dataset, batch_size=512, shuffle=False)\r\r\ntest_loader = DataLoader(test_dataset, batch_size=512, shuffle=False)\r\r\n\r\r\n# Check the type of the dataloader\r\r\nprint(type(train_loader)) # <class 'torch.utils.data.dataloader.DataLoader'>\r\r\n```\r\r\n### 1. Create a classifier\r\r\n\r\r\nYou can create a classifier with the `build_classifier` function.\r\r\n\r\r\nThe `build_classifier` function returns a `tisc.Classifier` object.\r\r\n\r\r\nA `Classifier` object contains the model, the optimizer, the loss function, and the training and evaluation methods.\r\r\n\r\r\nWhen you create a classifier, you have to pass the following arguments:\r\r\n\r\r\n- `model_name`: The name of the model. The model should be one of the supported models. (e.g., `'LSTM'`, `'BiLSTM'`, `'Transformer'`)\r\r\n- `timestep`: The number of timesteps in the time series data.\r\r\n- `dimentions`: The number of dimentions in each timestep.\r\r\n- `num_classes`: The number of classes in the dataset.\r\r\n\r\r\n```python\r\r\nimport tisc\r\r\n\r\r\n# Create a classifier\r\r\nclassifier = tisc.build_classifier(model_name='LSTM',\r\r\n timestep=20,\r\r\n dimentions=100,\r\r\n num_classes=10)\r\r\n\r\r\n# Check the type of the classifier\r\r\nprint(type(classifier)) # <class 'tisc.Classifier'>\r\r\n```\r\r\n\r\r\n### 2. Train the classifier\r\r\n\r\r\nYou can train the classifier with the `train` method.\r\r\n\r\r\nThe `train` method requires the following arguments:\r\r\n\r\r\n- `epochs`: The number of epochs to train the classifier.\r\r\n- `train_loader`: The dataloader for the training dataset.\r\r\n\r\r\nyou can pass `val_loader` to train the classifier with validation.\r\r\n\r\r\n```python\r\r\nclassifier.train(train_loader, epochs=100)\r\r\n\r\r\n# If the `val_loader` argument is passed, you can train the classifier with validation.\r\r\nclassifier.train(train_loader, val_loader=val_loader, epochs=100)\r\r\n```\r\r\n\r\r\n### 3. Evaluate the classifier\r\r\n\r\r\nYou can evaluate the classifier with the `evaluate` method.\r\r\n\r\r\nThe `evaluate` method requires the following arguments:\r\r\n\r\r\n- `test_loader`: The dataloader for the test dataset.\r\r\n\r\r\nThe `evaluate` method can return the classification report and the confusion matrix if you pass the `return_report` and `return_confusion_matrix` arguments as `True`.\r\r\n\r\r\nIf `with_best_model` argument is `True`, the classifier will use the best model that marked the best result about the model saving strategy. \r\r\n\r\r\n```python\r\r\nclassifier.evaluate(test_loader,\r\r\n return_report=True,\r\r\n return_confusion_matrix=True,\r\r\n with_best_model=True)\r\r\n```\r\r\n\r\r\n## Supported models\r\r\n\r\r\nThe models that can be used in version 0.1.0:\r\r\n\r\r\n- LSTM\r\r\n- BiLSTM\r\r\n- Transformer\r\r\n\r\r\nand more! (More models will be added.)\r\r\n\r\r\n",
"bugtrack_url": null,
"license": "Apache",
"summary": "Simple model creation and training framework for time series classification in Pytorch",
"version": "0.1.2",
"project_urls": {
"Homepage": "https://github.com/Yutsuro/pytorch-time-series-classification"
},
"split_keywords": [
"pytorch",
"time-series-classification",
"lstm",
"bilstm",
"transformer",
"machine-learning",
"deep-learning",
"ai",
"artificial-intelligence"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "359524eb604c9c16ea026c680e87480dcf9977917f0f4af854ddd506e7644c79",
"md5": "6300bcf9157a52233cdaee94db3522ab",
"sha256": "9bd30b6e2d85b41daa52c071f0160d955fafc384bc1d1f9e6b6043e7f83b9f1d"
},
"downloads": -1,
"filename": "tisc-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6300bcf9157a52233cdaee94db3522ab",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 17084,
"upload_time": "2025-08-24T17:23:00",
"upload_time_iso_8601": "2025-08-24T17:23:00.703467Z",
"url": "https://files.pythonhosted.org/packages/35/95/24eb604c9c16ea026c680e87480dcf9977917f0f4af854ddd506e7644c79/tisc-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e66f26965779c6cb95329b03b0d16e5e7ee27e48533dfb64f9ffd88063b39657",
"md5": "414bf2e282b8f75f4aa5d615e9865b9b",
"sha256": "46d67963502f486cb8356f1bb3e426d61c75bebe9adb483f1a63f94778746caa"
},
"downloads": -1,
"filename": "tisc-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "414bf2e282b8f75f4aa5d615e9865b9b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17168,
"upload_time": "2025-08-24T17:23:01",
"upload_time_iso_8601": "2025-08-24T17:23:01.646442Z",
"url": "https://files.pythonhosted.org/packages/e6/6f/26965779c6cb95329b03b0d16e5e7ee27e48533dfb64f9ffd88063b39657/tisc-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-24 17:23:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Yutsuro",
"github_project": "pytorch-time-series-classification",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "matplotlib",
"specs": [
[
">=",
"3.8.3"
]
]
},
{
"name": "numpy",
"specs": [
[
"<",
"2.0"
],
[
">=",
"1.19.5"
]
]
},
{
"name": "scikit_learn",
"specs": [
[
">=",
"1.4.1"
]
]
},
{
"name": "seaborn",
"specs": [
[
">=",
"0.13.2"
]
]
},
{
"name": "matplotlib-fontja",
"specs": [
[
">=",
"1.1.0"
]
]
}
],
"lcname": "tisc"
}