pypots


Namepypots JSON
Version 0.4.1 PyPI version JSON
download
home_pagehttps://pypots.com/
SummaryA Python Toolbox for Data Mining on Partially-Observed Time Series
upload_time2024-04-17 16:07:10
maintainerNone
docs_urlNone
authorWenjie Du
requires_python>=3.7.0
licenseBSD-3-Clause
keywords data science data mining neural networks machine learning deep learning artificial intelligence time-series analysis time series imputation interpolation classification clustering forecasting partially observed irregular sampled partially-observed time series incomplete time series missing data missing values
VCS
bugtrack_url
requirements h5py numpy scipy sympy einops pandas matplotlib tensorboard scikit-learn torch tsdb pygrinder
Travis-CI No Travis.
coveralls test coverage
            <a href="https://github.com/WenjieDu/PyPOTS">
    <img src="https://pypots.com/figs/pypots_logos/PyPOTS/logo_FFBG.svg" width="200" align="right">
</a>

<h3 align="center">Welcome to PyPOTS</h3>

<p align="center"><i>a Python toolbox for machine learning on Partially-Observed Time Series</i></p>

<p align="center">
    <a href="https://docs.pypots.com/en/latest/install.html#reasons-of-version-limitations-on-dependencies">
       <img alt="Python version" src="https://img.shields.io/badge/Python-v3.7+-E97040?logo=python&logoColor=white">
    </a>
    <a href="https://github.com/WenjieDu/PyPOTS">
        <img alt="powered by Pytorch" src="https://img.shields.io/badge/PyTorch-โค๏ธ-F8C6B5?logo=pytorch&logoColor=white">
    </a>
    <a href="https://github.com/WenjieDu/PyPOTS/releases">
        <img alt="the latest release version" src="https://img.shields.io/github/v/release/wenjiedu/pypots?color=EE781F&include_prereleases&label=Release&logo=github&logoColor=white">
    </a>
    <a href="https://github.com/WenjieDu/PyPOTS/blob/main/LICENSE">
        <img alt="BSD-3 license" src="https://img.shields.io/badge/License-BSD--3-E9BB41?logo=opensourceinitiative&logoColor=white">
    </a>
    <a href="https://github.com/WenjieDu/PyPOTS#-community">
        <img alt="Community" src="https://img.shields.io/badge/join_us-community!-C8A062">
    </a>
    <a href="https://github.com/WenjieDu/PyPOTS/graphs/contributors">
        <img alt="GitHub contributors" src="https://img.shields.io/github/contributors/wenjiedu/pypots?color=D8E699&label=Contributors&logo=GitHub">
    </a>
    <a href="https://star-history.com/#wenjiedu/pypots">
        <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/wenjiedu/pypots?logo=None&color=6BB392&label=%E2%98%85%20Stars">
    </a>
    <a href="https://github.com/WenjieDu/PyPOTS/network/members">
        <img alt="GitHub Repo forks" src="https://img.shields.io/github/forks/wenjiedu/pypots?logo=forgejo&logoColor=black&label=Forks">
    </a>
    <a href="https://codeclimate.com/github/WenjieDu/PyPOTS">
        <img alt="Code Climate maintainability" src="https://img.shields.io/codeclimate/maintainability-percentage/WenjieDu/PyPOTS?color=3C7699&label=Maintainability&logo=codeclimate">
    </a>
    <a href="https://coveralls.io/github/WenjieDu/PyPOTS">
        <img alt="Coveralls coverage" src="https://img.shields.io/coverallsCoverage/github/WenjieDu/PyPOTS?branch=main&logo=coveralls&color=75C1C4&label=Coverage">
    </a>
    <a href="https://github.com/WenjieDu/PyPOTS/actions/workflows/testing_ci.yml">
        <img alt="GitHub Testing" src="https://img.shields.io/github/actions/workflow/status/wenjiedu/pypots/testing_ci.yml?logo=circleci&color=C8D8E1&label=CI">
    </a>
    <a href="https://docs.pypots.com">
        <img alt="Docs building" src="https://img.shields.io/readthedocs/pypots?logo=readthedocs&label=Docs&logoColor=white&color=395260">
    </a>
    <a href="https://anaconda.org/conda-forge/pypots">
        <img alt="Conda downloads" src="https://img.shields.io/endpoint?url=https://pypots.com/figs/downloads_badges/conda_pypots_downloads.json">
    </a>
    <a href="https://pepy.tech/project/pypots">
        <img alt="PyPI downloads" src="https://img.shields.io/endpoint?url=https://pypots.com/figs/downloads_badges/pypi_pypots_downloads.json">
    </a>
    <a href="https://arxiv.org/abs/2305.18811">
        <img alt="arXiv DOI" src="https://img.shields.io/badge/DOI-10.48550/arXiv.2305.18811-F8F7F0">
    </a>
</p>

โฆฟ `Motivation`: Due to all kinds of reasons like failure of collection sensors, communication error,
and unexpected malfunction, missing values are common to see in time series from the real-world environment.
This makes partially-observed time series (POTS) a pervasive problem in open-world modeling and prevents advanced
data analysis. Although this problem is important, the area of machine learning on POTS still lacks a dedicated toolkit.
PyPOTS is created to fill in this blank.

โฆฟ `Mission`: PyPOTS (pronounced "Pie Pots") is born to become a handy toolbox that is going to make machine learning on POTS easy rather than
tedious, to help engineers and researchers focus more on the core problems in their hands rather than on how to deal
with the missing parts in their data. PyPOTS will keep integrating classical and the latest state-of-the-art machine learning
algorithms for partially-observed multivariate time series. For sure, besides various algorithms, PyPOTS is going to
have unified APIs together with detailed documentation and interactive examples across algorithms as tutorials.

๐Ÿค— **Please** star this repo to help others notice PyPOTS if you think it is a useful toolkit.
**Please** properly [cite PyPOTS](https://github.com/WenjieDu/PyPOTS#-citing-pypots) in your publications
if it helps with your research. This really means a lot to our open-source research. Thank you!

The rest of this readme file is organized as follows:
[**โ– PyPOTS Ecosystem**](#-pypots-ecosystem),
[**โ– Installation**](#-installation),
[**โ– Usage**](#-usage),
[**โ– Available Algorithms**](#-available-algorithms),
[**โ– Citing PyPOTS**](#-citing-pypots),
[**โ– Contribution**](#-contribution),
[**โ– Community**](#-community).


## โ– PyPOTS Ecosystem
At PyPOTS, things are related to coffee, which we're familiar with. Yes, this is a coffee universe!
As you can see, there is a coffee pot in the PyPOTS logo.
And what else? Please read on ;-)

<a href="https://github.com/WenjieDu/TSDB">
    <img src="https://pypots.com/figs/pypots_logos/TSDB/logo_FFBG.svg" align="left" width="140" alt="TSDB logo"/>
</a>

๐Ÿ‘ˆ Time series datasets are taken as coffee beans at PyPOTS, and POTS datasets are incomplete coffee beans with missing parts that have their own meanings.
To make various public time-series datasets readily available to users,
<i>Time Series Data Beans (TSDB)</i> is created to make loading time-series datasets super easy!
Visit [TSDB](https://github.com/WenjieDu/TSDB) right now to know more about this handy tool ๐Ÿ› , and it now supports a total of 168 open-source datasets!

<a href="https://github.com/WenjieDu/PyGrinder">
    <img src="https://pypots.com/figs/pypots_logos/PyGrinder/logo_FFBG.svg" align="right" width="140" alt="PyGrinder logo"/>
</a>

๐Ÿ‘‰ To simulate the real-world data beans with missingness, the ecosystem library [PyGrinder](https://github.com/WenjieDu/PyGrinder),
a toolkit helping grind your coffee beans into incomplete ones, is created. Missing patterns fall into three categories according to Robin's theory[^13]:
MCAR (missing completely at random), MAR (missing at random), and MNAR (missing not at random).
PyGrinder supports all of them and additional functionalities related to missingness.
With PyGrinder, you can introduce synthetic missing values into your datasets with a single line of code.

<a href="https://github.com/WenjieDu/BrewPOTS">
    <img src="https://pypots.com/figs/pypots_logos/BrewPOTS/logo_FFBG.svg" align="left" width="140" alt="BrewPOTS logo"/>
</a>

๐Ÿ‘ˆ Now we have the beans, the grinder, and the pot, how to brew us a cup of coffee? Tutorials are necessary!
Considering the future workload, PyPOTS tutorials are released in a single repo,
and you can find them in [BrewPOTS](https://github.com/WenjieDu/BrewPOTS).
Take a look at it now, and learn how to brew your POTS datasets!

<p align="center">
<a href="https://pypots.com/ecosystem/">
    <img src="https://pypots.com/figs/pypots_logos/Ecosystem/PyPOTS_Ecosystem_Pipeline.png" width="95%"/>
</a>
<br>
<b> โ˜•๏ธ Welcome to the universe of PyPOTS. Enjoy it and have fun!</b>
</p>


## โ– Installation
You can refer to [the installation instruction](https://docs.pypots.com/en/latest/install.html) in PyPOTS documentation for a guideline with more details.

PyPOTS is available on both [PyPI](https://pypi.python.org/pypi/pypots) and [Anaconda](https://anaconda.org/conda-forge/pypots).
You can install PyPOTS as shown below:

``` bash
# via pip
pip install pypots            # the first time installation
pip install pypots --upgrade  # update pypots to the latest version
# install from the latest source code with the latest features but may be not officially released yet
pip install https://github.com/WenjieDu/PyPOTS/archive/main.zip

# via conda
conda install -c conda-forge pypots  # the first time installation
conda update  -c conda-forge pypots  # update pypots to the latest version
```


## โ– Usage
Besides [BrewPOTS](https://github.com/WenjieDu/BrewPOTS), you can also find a simple and quick-start tutorial notebook on Google Colab
<a href="https://colab.research.google.com/drive/1HEFjylEy05-r47jRy0H9jiS_WhD0UWmQ">
<img src="https://img.shields.io/badge/GoogleColab-PyPOTS_Tutorials-F9AB00?logo=googlecolab&logoColor=white" alt="Colab tutorials" align="center"/>
</a>. If you have further questions, please refer to PyPOTS documentation [docs.pypots.com](https://docs.pypots.com).
You can also [raise an issue](https://github.com/WenjieDu/PyPOTS/issues) or [ask in our community](#-community).

We present you a usage example of imputing missing values in time series with PyPOTS below, you can click it to view.

<details open>
<summary><b>Click here to see an example applying SAITS on PhysioNet2012 for imputation:</b></summary>

``` python
import numpy as np
from sklearn.preprocessing import StandardScaler
from pygrinder import mcar
from pypots.data import load_specific_dataset
from pypots.imputation import SAITS
from pypots.utils.metrics import calc_mae

# Data preprocessing. Tedious, but PyPOTS can help.
data = load_specific_dataset('physionet_2012')  # PyPOTS will automatically download and extract it.
X = data['X']
num_samples = len(X['RecordID'].unique())
X = X.drop(['RecordID', 'Time'], axis = 1)
X = StandardScaler().fit_transform(X.to_numpy())
X = X.reshape(num_samples, 48, -1)
X_ori = X  # keep X_ori for validation
X = mcar(X, 0.1)  # randomly hold out 10% observed values as ground truth
dataset = {"X": X}  # X for model input
print(X.shape)  # (11988, 48, 37), 11988 samples and each sample has 48 time steps, 37 features

# Model training. This is PyPOTS showtime.
saits = SAITS(n_steps=48, n_features=37, n_layers=2, d_model=256, d_ffn=128, n_heads=4, d_k=64, d_v=64, dropout=0.1, epochs=10)
# Here I use the whole dataset as the training set because ground truth is not visible to the model, you can also split it into train/val/test sets
saits.fit(dataset)
imputation = saits.impute(dataset)  # impute the originally-missing values and artificially-missing values
indicating_mask = np.isnan(X) ^ np.isnan(X_ori)  # indicating mask for imputation error calculation
mae = calc_mae(imputation, np.nan_to_num(X_ori), indicating_mask)  # calculate mean absolute error on the ground truth (artificially-missing values)
```
</details>


## โ– Available Algorithms
PyPOTS supports imputation, classification, clustering, and forecasting tasks on multivariate time series with missing values.
The currently available algorithms of four tasks are cataloged in the following table with four partitions.
The paper references are all listed at the bottom of this readme file.

๐ŸŒŸ Since **v0.2**, all neural-network models in PyPOTS has got hyperparameter-optimization support.
This functionality is implemented with the [Microsoft NNI](https://github.com/microsoft/nni) framework.

๐Ÿ”ฅ Note that Transformer, Crossformer, PatchTST, DLinear, ETSformer, FEDformer, Informer, Autoformer are not proposed as imputation methods in their original papers,
and they cannot accept POTS as input. **To make them applicable on POTS data, we apply the embedding strategy and training approach (ORT+MIT)
the same as we did in [SAITS paper](https://arxiv.org/pdf/2202.08516).**

|   ***`Imputation`***   |     ๐Ÿšฅ      |                                               ๐Ÿšฅ                                                |    ๐Ÿšฅ    |
|:----------------------:|:-----------:|:-----------------------------------------------------------------------------------------------:|:--------:|
|        **Type**        |  **Abbr.**  |                              **Full name of the algorithm/model**                               | **Year** |
|       Neural Net       |    SAITS    |                      Self-Attention-based Imputation for Time Series [^1]                       |   2023   |
|       Neural Net       | Transformer |                                 Attention is All you Need [^2]                                  |   2017   |
|       Neural Net       | Crossformer | Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series Forecasting [^16] |   2023   |
|       Neural Net       |  TimesNet   |              Temporal 2D-Variation Modeling for General Time Series Analysis [^14]              |   2023   |
|       Neural Net       |  PatchTST   |         A Time Series is Worth 64 Words: Long-Term Forecasting with Transformers [^18]          |   2023   |
|       Neural Net       |   DLinear   |                  Are Transformers Effective for Time Series Forecasting? [^17]                  |   2023   |
|       Neural Net       |  ETSformer  |              Exponential Smoothing Transformers for Time-series Forecasting [^19]               |   2023   |
|       Neural Net       |  FEDformer  |        Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting [^20]         |   2022   |
|       Neural Net       |  Informer   |          Beyond Efficient Transformer for Long Sequence Time-Series Forecasting [^21]           |   2021   |
|       Neural Net       | Autoformer  |     Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting [^15]     |   2021   |
|       Neural Net       |    CSDI     |     Conditional Score-based Diffusion Models for Probabilistic Time Series Imputation [^12]     |   2021   |
|       Neural Net       |   US-GAN    |                 Unsupervised GAN for Multivariate Time Series Imputation [^10]                  |   2021   |
|       Neural Net       |   GP-VAE    |                         Gaussian Process Variational Autoencoder [^11]                          |   2020   |
|       Neural Net       |    BRITS    |                     Bidirectional Recurrent Imputation for Time Series [^3]                     |   2018   |
|       Neural Net       |    M-RNN    |                         Multi-directional Recurrent Neural Network [^9]                         |   2019   |
|         Naive          |  LOCF/NOCB  |              Last Observation Carried Forward / Next Observation Carried Backward               |    -     |
|         Naive          |   Median    |                                     Median Value Imputation                                     |    -     |
|         Naive          |    Mean     |                                      Mean Value Imputation                                      |    -     |
| ***`Classification`*** |     ๐Ÿšฅ      |                                               ๐Ÿšฅ                                                |    ๐Ÿšฅ    |
|        **Type**        |  **Abbr.**  |                           **Full name of the algorithm/model/paper**                            | **Year** |
|       Neural Net       |    BRITS    |                     Bidirectional Recurrent Imputation for Time Series [^3]                     |   2018   |
|       Neural Net       |    GRU-D    |         Recurrent Neural Networks for Multivariate Time Series with Missing Values [^4]         |   2018   |
|       Neural Net       |  Raindrop   |           Graph-Guided Network for Irregularly Sampled Multivariate Time Series [^5]            |   2022   |
|   ***`Clustering`***   |     ๐Ÿšฅ      |                                               ๐Ÿšฅ                                                |    ๐Ÿšฅ    |
|        **Type**        |  **Abbr.**  |                           **Full name of the algorithm/model/paper**                            | **Year** |
|       Neural Net       |    CRLI     |             Clustering Representation Learning on Incomplete time-series data [^6]              |   2021   |
|       Neural Net       |    VaDER    |                         Variational Deep Embedding with Recurrence [^7]                         |   2019   |
|  ***`Forecasting`***   |     ๐Ÿšฅ      |                                               ๐Ÿšฅ                                                |    ๐Ÿšฅ    |
|        **Type**        |  **Abbr.**  |                           **Full name of the algorithm/model/paper**                            | **Year** |
|     Probabilistic      |    BTTF     |                           Bayesian Temporal Tensor Factorization [^8]                           |   2021   |


## โ– Citing PyPOTS
> [!TIP]
> **[Updates in Feb 2024]** ๐Ÿ˜Ž Our survey paper [Deep Learning for Multivariate Time Series Imputation: A Survey](https://arxiv.org/abs/2402.04059) has been released on arXiv.
The code is open source in the GitHub repo [Awesome_Imputation](https://github.com/WenjieDu/Awesome_Imputation).
We comprehensively review the literature of the state-of-the-art deep-learning imputation methods for time series,
provide a taxonomy for them, and discuss the challenges and future directions in this field.
>
> **[Updates in Jun 2023]** ๐ŸŽ‰ A short version of the PyPOTS paper is accepted by the 9th SIGKDD international workshop on
Mining and Learning from Time Series ([MiLeTS'23](https://kdd-milets.github.io/milets2023/))).
**Additionally**, PyPOTS has been included as a [PyTorch Ecosystem](https://pytorch.org/ecosystem/) project.

The paper introducing PyPOTS is available on arXiv at [this URL](https://arxiv.org/abs/2305.18811),
and we are pursuing to publish it in prestigious academic venues, e.g. JMLR (track for
[Machine Learning Open Source Software](https://www.jmlr.org/mloss/)). If you use PyPOTS in your work,
please cite it as below and ๐ŸŒŸstar this repository to make others notice this library. ๐Ÿค—

There are scientific research projects using PyPOTS and referencing in their papers.
Here is [an incomplete list of them](https://scholar.google.com/scholar?as_ylo=2022&q=%E2%80%9CPyPOTS%E2%80%9D&hl=en>).

``` bibtex
@article{du2023pypots,
title={{PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series}},
author={Wenjie Du},
year={2023},
eprint={2305.18811},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2305.18811},
doi={10.48550/arXiv.2305.18811},
}
```
or
> Wenjie Du. (2023).
> PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series.
> arXiv, abs/2305.18811.https://arxiv.org/abs/2305.18811


## โ– Contribution
You're very welcome to contribute to this exciting project!

By committing your code, you'll

1. make your well-established model out-of-the-box for PyPOTS users to run,
   and help your work obtain more exposure and impact.
   Take a look at our [inclusion criteria](https://docs.pypots.com/en/latest/faq.html#inclusion-criteria).
   You can utilize the `template` folder in each task package (e.g.
   [pypots/imputation/template](https://github.com/WenjieDu/PyPOTS/tree/main/pypots/imputation/template)) to quickly start;
2. become one of [PyPOTS contributors](https://github.com/WenjieDu/PyPOTS/graphs/contributors) and
   be listed as a volunteer developer [on the PyPOTS website](https://pypots.com/about/#volunteer-developers);
3. get mentioned in our [release notes](https://github.com/WenjieDu/PyPOTS/releases);

You can also contribute to PyPOTS by simply staring๐ŸŒŸ this repo to help more people notice it.
Your star is your recognition to PyPOTS, and it matters!

<details open>
<summary>
    <b><i>
    ๐Ÿ‘ Click here to view PyPOTS stargazers and forkers.<br>
    We're so proud to have more and more awesome users, as well as more bright โœจstars:
    </i></b>
</summary>
<a href="https://github.com/WenjieDu/PyPOTS/stargazers">
    <img alt="PyPOTS stargazers" src="http://reporoster.com/stars/dark/WenjieDu/PyPOTS">
</a>
<br>
<a href="https://github.com/WenjieDu/PyPOTS/network/members">
    <img alt="PyPOTS forkers" src="http://reporoster.com/forks/dark/WenjieDu/PyPOTS">
</a>
</details>

๐Ÿ‘€ Check out a full list of our users' affiliations [on PyPOTS website here](https://pypots.com/users/)!


## โ– Community
We care about the feedback from our users, so we're building PyPOTS community on

- [Slack](https://join.slack.com/t/pypots-org/shared_invite/zt-1gq6ufwsi-p0OZdW~e9UW_IA4_f1OfxA). General discussion, Q&A, and our development team are here;
- [LinkedIn](https://www.linkedin.com/company/pypots). Official announcements and news are here;
- [WeChat (ๅพฎไฟกๅ…ฌไผ—ๅท)](https://mp.weixin.qq.com/s/sNgZmgAyxDn2sZxXoWJYMA). We also run a group chat on WeChat,
  and you can get the QR code from the official account after following it;

If you have any suggestions or want to contribute ideas or share time-series related papers, join us and tell.
PyPOTS community is open, transparent, and surely friendly. Let's work together to build and improve PyPOTS!


[//]: # (Use APA reference style below)
[^1]: Du, W., Cote, D., & Liu, Y. (2023). [SAITS: Self-Attention-based Imputation for Time Series](https://doi.org/10.1016/j.eswa.2023.119619). *Expert systems with applications*.
[^2]: Vaswani, A., Shazeer, N.M., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, L., & Polosukhin, I. (2017). [Attention is All you Need](https://papers.nips.cc/paper/2017/hash/3f5ee243547dee91fbd053c1c4a845aa-Abstract.html). *NeurIPS 2017*.
[^3]: Cao, W., Wang, D., Li, J., Zhou, H., Li, L., & Li, Y. (2018). [BRITS: Bidirectional Recurrent Imputation for Time Series](https://papers.nips.cc/paper/2018/hash/734e6bfcd358e25ac1db0a4241b95651-Abstract.html). *NeurIPS 2018*.
[^4]: Che, Z., Purushotham, S., Cho, K., Sontag, D.A., & Liu, Y. (2018). [Recurrent Neural Networks for Multivariate Time Series with Missing Values](https://www.nature.com/articles/s41598-018-24271-9). *Scientific Reports*.
[^5]: Zhang, X., Zeman, M., Tsiligkaridis, T., & Zitnik, M. (2022). [Graph-Guided Network for Irregularly Sampled Multivariate Time Series](https://arxiv.org/abs/2110.05357). *ICLR 2022*.
[^6]: Ma, Q., Chen, C., Li, S., & Cottrell, G. W. (2021). [Learning Representations for Incomplete Time Series Clustering](https://ojs.aaai.org/index.php/AAAI/article/view/17070). *AAAI 2021*.
[^7]: Jong, J.D., Emon, M.A., Wu, P., Karki, R., Sood, M., Godard, P., Ahmad, A., Vrooman, H.A., Hofmann-Apitius, M., & Frรถhlich, H. (2019). [Deep learning for clustering of multivariate clinical patient trajectories with missing values](https://academic.oup.com/gigascience/article/8/11/giz134/5626377). *GigaScience*.
[^8]: Chen, X., & Sun, L. (2021). [Bayesian Temporal Factorization for Multidimensional Time Series Prediction](https://arxiv.org/abs/1910.06366). *IEEE transactions on pattern analysis and machine intelligence*.
[^9]: Yoon, J., Zame, W. R., & van der Schaar, M. (2019). [Estimating Missing Data in Temporal Data Streams Using Multi-Directional Recurrent Neural Networks](https://ieeexplore.ieee.org/document/8485748). *IEEE Transactions on Biomedical Engineering*.
[^10]: Miao, X., Wu, Y., Wang, J., Gao, Y., Mao, X., & Yin, J. (2021). [Generative Semi-supervised Learning for Multivariate Time Series Imputation](https://ojs.aaai.org/index.php/AAAI/article/view/17086). *AAAI 2021*.
[^11]: Fortuin, V., Baranchuk, D., Raetsch, G. & Mandt, S. (2020). [GP-VAE: Deep Probabilistic Time Series Imputation](https://proceedings.mlr.press/v108/fortuin20a.html). *AISTATS 2020*.
[^12]: Tashiro, Y., Song, J., Song, Y., & Ermon, S. (2021). [CSDI: Conditional Score-based Diffusion Models for Probabilistic Time Series Imputation](https://proceedings.neurips.cc/paper/2021/hash/cfe8504bda37b575c70ee1a8276f3486-Abstract.html). *NeurIPS 2021*.
[^13]: Rubin, D. B. (1976). [Inference and missing data](https://academic.oup.com/biomet/article-abstract/63/3/581/270932). *Biometrika*.
[^14]: Wu, H., Hu, T., Liu, Y., Zhou, H., Wang, J., & Long, M. (2023). [TimesNet: Temporal 2d-variation modeling for general time series analysis](https://openreview.net/forum?id=ju_Uqw384Oq). *ICLR 2023*
[^15]: Wu, H., Xu, J., Wang, J., & Long, M. (2021). [Autoformer: Decomposition transformers with auto-correlation for long-term series forecasting](https://proceedings.neurips.cc/paper/2021/hash/bcc0d400288793e8bdcd7c19a8ac0c2b-Abstract.html). *NeurIPS 2021*.
[^16]: Zhang, Y., & Yan, J. (2023). [Crossformer: Transformer utilizing cross-dimension dependency for multivariate time series forecasting](https://openreview.net/forum?id=vSVLM2j9eie). *ICLR 2023*.
[^17]: Zeng, A., Chen, M., Zhang, L., & Xu, Q. (2023). [Are transformers effective for time series forecasting?](https://ojs.aaai.org/index.php/AAAI/article/view/26317). *AAAI 2023*
[^18]: Nie, Y., Nguyen, N. H., Sinthong, P., & Kalagnanam, J. (2023). [A time series is worth 64 words: Long-term forecasting with transformers](https://openreview.net/forum?id=Jbdc0vTOcol). *ICLR 2023*
[^19]: Woo, G., Liu, C., Sahoo, D., Kumar, A., & Hoi, S. (2023). [ETSformer: Exponential Smoothing Transformers for Time-series Forecasting](https://openreview.net/forum?id=5m_3whfo483).  *ICLR 2023*
[^20]: Zhou, T., Ma, Z., Wen, Q., Wang, X., Sun, L., & Jin, R. (2022). [FEDformer: Frequency enhanced decomposed transformer for long-term series forecasting](https://proceedings.mlr.press/v162/zhou22g.html). *ICML 2022*.
[^21]: Zhou, H., Zhang, S., Peng, J., Zhang, S., Li, J., Xiong, H., & Zhang, W. (2021). [Informer: Beyond efficient transformer for long sequence time-series forecasting](https://ojs.aaai.org/index.php/AAAI/article/view/17325). *AAAI 2021*.



<details>
<summary>๐Ÿ  Visits</summary>
<a href="https://github.com/WenjieDu/PyPOTS">
    <img alt="PyPOTS visits" align="left" src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FPyPOTS%2FPyPOTS&count_bg=%23009A0A&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=Visits%20since%20May%202022&edge_flat=false">
</a>
</details>
<br>

            

Raw data

            {
    "_id": null,
    "home_page": "https://pypots.com/",
    "name": "pypots",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7.0",
    "maintainer_email": null,
    "keywords": "data science, data mining, neural networks, machine learning, deep learning, artificial intelligence, time-series analysis, time series, imputation, interpolation, classification, clustering, forecasting, partially observed, irregular sampled, partially-observed time series, incomplete time series, missing data, missing values",
    "author": "Wenjie Du",
    "author_email": "wenjay.du@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/61/95/1462c4a8ee5a47876ed041697402a95f9317b1a717fcf6376cb1ae99fc07/pypots-0.4.1.tar.gz",
    "platform": null,
    "description": "<a href=\"https://github.com/WenjieDu/PyPOTS\">\n    <img src=\"https://pypots.com/figs/pypots_logos/PyPOTS/logo_FFBG.svg\" width=\"200\" align=\"right\">\n</a>\n\n<h3 align=\"center\">Welcome to PyPOTS</h3>\n\n<p align=\"center\"><i>a Python toolbox for machine learning on Partially-Observed Time Series</i></p>\n\n<p align=\"center\">\n    <a href=\"https://docs.pypots.com/en/latest/install.html#reasons-of-version-limitations-on-dependencies\">\n       <img alt=\"Python version\" src=\"https://img.shields.io/badge/Python-v3.7+-E97040?logo=python&logoColor=white\">\n    </a>\n    <a href=\"https://github.com/WenjieDu/PyPOTS\">\n        <img alt=\"powered by Pytorch\" src=\"https://img.shields.io/badge/PyTorch-\u2764\ufe0f-F8C6B5?logo=pytorch&logoColor=white\">\n    </a>\n    <a href=\"https://github.com/WenjieDu/PyPOTS/releases\">\n        <img alt=\"the latest release version\" src=\"https://img.shields.io/github/v/release/wenjiedu/pypots?color=EE781F&include_prereleases&label=Release&logo=github&logoColor=white\">\n    </a>\n    <a href=\"https://github.com/WenjieDu/PyPOTS/blob/main/LICENSE\">\n        <img alt=\"BSD-3 license\" src=\"https://img.shields.io/badge/License-BSD--3-E9BB41?logo=opensourceinitiative&logoColor=white\">\n    </a>\n    <a href=\"https://github.com/WenjieDu/PyPOTS#-community\">\n        <img alt=\"Community\" src=\"https://img.shields.io/badge/join_us-community!-C8A062\">\n    </a>\n    <a href=\"https://github.com/WenjieDu/PyPOTS/graphs/contributors\">\n        <img alt=\"GitHub contributors\" src=\"https://img.shields.io/github/contributors/wenjiedu/pypots?color=D8E699&label=Contributors&logo=GitHub\">\n    </a>\n    <a href=\"https://star-history.com/#wenjiedu/pypots\">\n        <img alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/wenjiedu/pypots?logo=None&color=6BB392&label=%E2%98%85%20Stars\">\n    </a>\n    <a href=\"https://github.com/WenjieDu/PyPOTS/network/members\">\n        <img alt=\"GitHub Repo forks\" src=\"https://img.shields.io/github/forks/wenjiedu/pypots?logo=forgejo&logoColor=black&label=Forks\">\n    </a>\n    <a href=\"https://codeclimate.com/github/WenjieDu/PyPOTS\">\n        <img alt=\"Code Climate maintainability\" src=\"https://img.shields.io/codeclimate/maintainability-percentage/WenjieDu/PyPOTS?color=3C7699&label=Maintainability&logo=codeclimate\">\n    </a>\n    <a href=\"https://coveralls.io/github/WenjieDu/PyPOTS\">\n        <img alt=\"Coveralls coverage\" src=\"https://img.shields.io/coverallsCoverage/github/WenjieDu/PyPOTS?branch=main&logo=coveralls&color=75C1C4&label=Coverage\">\n    </a>\n    <a href=\"https://github.com/WenjieDu/PyPOTS/actions/workflows/testing_ci.yml\">\n        <img alt=\"GitHub Testing\" src=\"https://img.shields.io/github/actions/workflow/status/wenjiedu/pypots/testing_ci.yml?logo=circleci&color=C8D8E1&label=CI\">\n    </a>\n    <a href=\"https://docs.pypots.com\">\n        <img alt=\"Docs building\" src=\"https://img.shields.io/readthedocs/pypots?logo=readthedocs&label=Docs&logoColor=white&color=395260\">\n    </a>\n    <a href=\"https://anaconda.org/conda-forge/pypots\">\n        <img alt=\"Conda downloads\" src=\"https://img.shields.io/endpoint?url=https://pypots.com/figs/downloads_badges/conda_pypots_downloads.json\">\n    </a>\n    <a href=\"https://pepy.tech/project/pypots\">\n        <img alt=\"PyPI downloads\" src=\"https://img.shields.io/endpoint?url=https://pypots.com/figs/downloads_badges/pypi_pypots_downloads.json\">\n    </a>\n    <a href=\"https://arxiv.org/abs/2305.18811\">\n        <img alt=\"arXiv DOI\" src=\"https://img.shields.io/badge/DOI-10.48550/arXiv.2305.18811-F8F7F0\">\n    </a>\n</p>\n\n\u29bf `Motivation`: Due to all kinds of reasons like failure of collection sensors, communication error,\nand unexpected malfunction, missing values are common to see in time series from the real-world environment.\nThis makes partially-observed time series (POTS) a pervasive problem in open-world modeling and prevents advanced\ndata analysis. Although this problem is important, the area of machine learning on POTS still lacks a dedicated toolkit.\nPyPOTS is created to fill in this blank.\n\n\u29bf `Mission`: PyPOTS (pronounced \"Pie Pots\") is born to become a handy toolbox that is going to make machine learning on POTS easy rather than\ntedious, to help engineers and researchers focus more on the core problems in their hands rather than on how to deal\nwith the missing parts in their data. PyPOTS will keep integrating classical and the latest state-of-the-art machine learning\nalgorithms for partially-observed multivariate time series. For sure, besides various algorithms, PyPOTS is going to\nhave unified APIs together with detailed documentation and interactive examples across algorithms as tutorials.\n\n\ud83e\udd17 **Please** star this repo to help others notice PyPOTS if you think it is a useful toolkit.\n**Please** properly [cite PyPOTS](https://github.com/WenjieDu/PyPOTS#-citing-pypots) in your publications\nif it helps with your research. This really means a lot to our open-source research. Thank you!\n\nThe rest of this readme file is organized as follows:\n[**\u2756 PyPOTS Ecosystem**](#-pypots-ecosystem),\n[**\u2756 Installation**](#-installation),\n[**\u2756 Usage**](#-usage),\n[**\u2756 Available Algorithms**](#-available-algorithms),\n[**\u2756 Citing PyPOTS**](#-citing-pypots),\n[**\u2756 Contribution**](#-contribution),\n[**\u2756 Community**](#-community).\n\n\n## \u2756 PyPOTS Ecosystem\nAt PyPOTS, things are related to coffee, which we're familiar with. Yes, this is a coffee universe!\nAs you can see, there is a coffee pot in the PyPOTS logo.\nAnd what else? Please read on ;-)\n\n<a href=\"https://github.com/WenjieDu/TSDB\">\n    <img src=\"https://pypots.com/figs/pypots_logos/TSDB/logo_FFBG.svg\" align=\"left\" width=\"140\" alt=\"TSDB logo\"/>\n</a>\n\n\ud83d\udc48 Time series datasets are taken as coffee beans at PyPOTS, and POTS datasets are incomplete coffee beans with missing parts that have their own meanings.\nTo make various public time-series datasets readily available to users,\n<i>Time Series Data Beans (TSDB)</i> is created to make loading time-series datasets super easy!\nVisit [TSDB](https://github.com/WenjieDu/TSDB) right now to know more about this handy tool \ud83d\udee0, and it now supports a total of 168 open-source datasets!\n\n<a href=\"https://github.com/WenjieDu/PyGrinder\">\n    <img src=\"https://pypots.com/figs/pypots_logos/PyGrinder/logo_FFBG.svg\" align=\"right\" width=\"140\" alt=\"PyGrinder logo\"/>\n</a>\n\n\ud83d\udc49 To simulate the real-world data beans with missingness, the ecosystem library [PyGrinder](https://github.com/WenjieDu/PyGrinder),\na toolkit helping grind your coffee beans into incomplete ones, is created. Missing patterns fall into three categories according to Robin's theory[^13]:\nMCAR (missing completely at random), MAR (missing at random), and MNAR (missing not at random).\nPyGrinder supports all of them and additional functionalities related to missingness.\nWith PyGrinder, you can introduce synthetic missing values into your datasets with a single line of code.\n\n<a href=\"https://github.com/WenjieDu/BrewPOTS\">\n    <img src=\"https://pypots.com/figs/pypots_logos/BrewPOTS/logo_FFBG.svg\" align=\"left\" width=\"140\" alt=\"BrewPOTS logo\"/>\n</a>\n\n\ud83d\udc48 Now we have the beans, the grinder, and the pot, how to brew us a cup of coffee? Tutorials are necessary!\nConsidering the future workload, PyPOTS tutorials are released in a single repo,\nand you can find them in [BrewPOTS](https://github.com/WenjieDu/BrewPOTS).\nTake a look at it now, and learn how to brew your POTS datasets!\n\n<p align=\"center\">\n<a href=\"https://pypots.com/ecosystem/\">\n    <img src=\"https://pypots.com/figs/pypots_logos/Ecosystem/PyPOTS_Ecosystem_Pipeline.png\" width=\"95%\"/>\n</a>\n<br>\n<b> \u2615\ufe0f Welcome to the universe of PyPOTS. Enjoy it and have fun!</b>\n</p>\n\n\n## \u2756 Installation\nYou can refer to [the installation instruction](https://docs.pypots.com/en/latest/install.html) in PyPOTS documentation for a guideline with more details.\n\nPyPOTS is available on both [PyPI](https://pypi.python.org/pypi/pypots) and [Anaconda](https://anaconda.org/conda-forge/pypots).\nYou can install PyPOTS as shown below:\n\n``` bash\n# via pip\npip install pypots            # the first time installation\npip install pypots --upgrade  # update pypots to the latest version\n# install from the latest source code with the latest features but may be not officially released yet\npip install https://github.com/WenjieDu/PyPOTS/archive/main.zip\n\n# via conda\nconda install -c conda-forge pypots  # the first time installation\nconda update  -c conda-forge pypots  # update pypots to the latest version\n```\n\n\n## \u2756 Usage\nBesides [BrewPOTS](https://github.com/WenjieDu/BrewPOTS), you can also find a simple and quick-start tutorial notebook on Google Colab\n<a href=\"https://colab.research.google.com/drive/1HEFjylEy05-r47jRy0H9jiS_WhD0UWmQ\">\n<img src=\"https://img.shields.io/badge/GoogleColab-PyPOTS_Tutorials-F9AB00?logo=googlecolab&logoColor=white\" alt=\"Colab tutorials\" align=\"center\"/>\n</a>. If you have further questions, please refer to PyPOTS documentation [docs.pypots.com](https://docs.pypots.com).\nYou can also [raise an issue](https://github.com/WenjieDu/PyPOTS/issues) or [ask in our community](#-community).\n\nWe present you a usage example of imputing missing values in time series with PyPOTS below, you can click it to view.\n\n<details open>\n<summary><b>Click here to see an example applying SAITS on PhysioNet2012 for imputation:</b></summary>\n\n``` python\nimport numpy as np\nfrom sklearn.preprocessing import StandardScaler\nfrom pygrinder import mcar\nfrom pypots.data import load_specific_dataset\nfrom pypots.imputation import SAITS\nfrom pypots.utils.metrics import calc_mae\n\n# Data preprocessing. Tedious, but PyPOTS can help.\ndata = load_specific_dataset('physionet_2012')  # PyPOTS will automatically download and extract it.\nX = data['X']\nnum_samples = len(X['RecordID'].unique())\nX = X.drop(['RecordID', 'Time'], axis = 1)\nX = StandardScaler().fit_transform(X.to_numpy())\nX = X.reshape(num_samples, 48, -1)\nX_ori = X  # keep X_ori for validation\nX = mcar(X, 0.1)  # randomly hold out 10% observed values as ground truth\ndataset = {\"X\": X}  # X for model input\nprint(X.shape)  # (11988, 48, 37), 11988 samples and each sample has 48 time steps, 37 features\n\n# Model training. This is PyPOTS showtime.\nsaits = SAITS(n_steps=48, n_features=37, n_layers=2, d_model=256, d_ffn=128, n_heads=4, d_k=64, d_v=64, dropout=0.1, epochs=10)\n# Here I use the whole dataset as the training set because ground truth is not visible to the model, you can also split it into train/val/test sets\nsaits.fit(dataset)\nimputation = saits.impute(dataset)  # impute the originally-missing values and artificially-missing values\nindicating_mask = np.isnan(X) ^ np.isnan(X_ori)  # indicating mask for imputation error calculation\nmae = calc_mae(imputation, np.nan_to_num(X_ori), indicating_mask)  # calculate mean absolute error on the ground truth (artificially-missing values)\n```\n</details>\n\n\n## \u2756 Available Algorithms\nPyPOTS supports imputation, classification, clustering, and forecasting tasks on multivariate time series with missing values.\nThe currently available algorithms of four tasks are cataloged in the following table with four partitions.\nThe paper references are all listed at the bottom of this readme file.\n\n\ud83c\udf1f Since **v0.2**, all neural-network models in PyPOTS has got hyperparameter-optimization support.\nThis functionality is implemented with the [Microsoft NNI](https://github.com/microsoft/nni) framework.\n\n\ud83d\udd25 Note that Transformer, Crossformer, PatchTST, DLinear, ETSformer, FEDformer, Informer, Autoformer are not proposed as imputation methods in their original papers,\nand they cannot accept POTS as input. **To make them applicable on POTS data, we apply the embedding strategy and training approach (ORT+MIT)\nthe same as we did in [SAITS paper](https://arxiv.org/pdf/2202.08516).**\n\n|   ***`Imputation`***   |     \ud83d\udea5      |                                               \ud83d\udea5                                                |    \ud83d\udea5    |\n|:----------------------:|:-----------:|:-----------------------------------------------------------------------------------------------:|:--------:|\n|        **Type**        |  **Abbr.**  |                              **Full name of the algorithm/model**                               | **Year** |\n|       Neural Net       |    SAITS    |                      Self-Attention-based Imputation for Time Series [^1]                       |   2023   |\n|       Neural Net       | Transformer |                                 Attention is All you Need [^2]                                  |   2017   |\n|       Neural Net       | Crossformer | Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series Forecasting [^16] |   2023   |\n|       Neural Net       |  TimesNet   |              Temporal 2D-Variation Modeling for General Time Series Analysis [^14]              |   2023   |\n|       Neural Net       |  PatchTST   |         A Time Series is Worth 64 Words: Long-Term Forecasting with Transformers [^18]          |   2023   |\n|       Neural Net       |   DLinear   |                  Are Transformers Effective for Time Series Forecasting? [^17]                  |   2023   |\n|       Neural Net       |  ETSformer  |              Exponential Smoothing Transformers for Time-series Forecasting [^19]               |   2023   |\n|       Neural Net       |  FEDformer  |        Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting [^20]         |   2022   |\n|       Neural Net       |  Informer   |          Beyond Efficient Transformer for Long Sequence Time-Series Forecasting [^21]           |   2021   |\n|       Neural Net       | Autoformer  |     Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting [^15]     |   2021   |\n|       Neural Net       |    CSDI     |     Conditional Score-based Diffusion Models for Probabilistic Time Series Imputation [^12]     |   2021   |\n|       Neural Net       |   US-GAN    |                 Unsupervised GAN for Multivariate Time Series Imputation [^10]                  |   2021   |\n|       Neural Net       |   GP-VAE    |                         Gaussian Process Variational Autoencoder [^11]                          |   2020   |\n|       Neural Net       |    BRITS    |                     Bidirectional Recurrent Imputation for Time Series [^3]                     |   2018   |\n|       Neural Net       |    M-RNN    |                         Multi-directional Recurrent Neural Network [^9]                         |   2019   |\n|         Naive          |  LOCF/NOCB  |              Last Observation Carried Forward / Next Observation Carried Backward               |    -     |\n|         Naive          |   Median    |                                     Median Value Imputation                                     |    -     |\n|         Naive          |    Mean     |                                      Mean Value Imputation                                      |    -     |\n| ***`Classification`*** |     \ud83d\udea5      |                                               \ud83d\udea5                                                |    \ud83d\udea5    |\n|        **Type**        |  **Abbr.**  |                           **Full name of the algorithm/model/paper**                            | **Year** |\n|       Neural Net       |    BRITS    |                     Bidirectional Recurrent Imputation for Time Series [^3]                     |   2018   |\n|       Neural Net       |    GRU-D    |         Recurrent Neural Networks for Multivariate Time Series with Missing Values [^4]         |   2018   |\n|       Neural Net       |  Raindrop   |           Graph-Guided Network for Irregularly Sampled Multivariate Time Series [^5]            |   2022   |\n|   ***`Clustering`***   |     \ud83d\udea5      |                                               \ud83d\udea5                                                |    \ud83d\udea5    |\n|        **Type**        |  **Abbr.**  |                           **Full name of the algorithm/model/paper**                            | **Year** |\n|       Neural Net       |    CRLI     |             Clustering Representation Learning on Incomplete time-series data [^6]              |   2021   |\n|       Neural Net       |    VaDER    |                         Variational Deep Embedding with Recurrence [^7]                         |   2019   |\n|  ***`Forecasting`***   |     \ud83d\udea5      |                                               \ud83d\udea5                                                |    \ud83d\udea5    |\n|        **Type**        |  **Abbr.**  |                           **Full name of the algorithm/model/paper**                            | **Year** |\n|     Probabilistic      |    BTTF     |                           Bayesian Temporal Tensor Factorization [^8]                           |   2021   |\n\n\n## \u2756 Citing PyPOTS\n> [!TIP]\n> **[Updates in Feb 2024]** \ud83d\ude0e Our survey paper [Deep Learning for Multivariate Time Series Imputation: A Survey](https://arxiv.org/abs/2402.04059) has been released on arXiv.\nThe code is open source in the GitHub repo [Awesome_Imputation](https://github.com/WenjieDu/Awesome_Imputation).\nWe comprehensively review the literature of the state-of-the-art deep-learning imputation methods for time series,\nprovide a taxonomy for them, and discuss the challenges and future directions in this field.\n>\n> **[Updates in Jun 2023]** \ud83c\udf89 A short version of the PyPOTS paper is accepted by the 9th SIGKDD international workshop on\nMining and Learning from Time Series ([MiLeTS'23](https://kdd-milets.github.io/milets2023/))).\n**Additionally**, PyPOTS has been included as a [PyTorch Ecosystem](https://pytorch.org/ecosystem/) project.\n\nThe paper introducing PyPOTS is available on arXiv at [this URL](https://arxiv.org/abs/2305.18811),\nand we are pursuing to publish it in prestigious academic venues, e.g. JMLR (track for\n[Machine Learning Open Source Software](https://www.jmlr.org/mloss/)). If you use PyPOTS in your work,\nplease cite it as below and \ud83c\udf1fstar this repository to make others notice this library. \ud83e\udd17\n\nThere are scientific research projects using PyPOTS and referencing in their papers.\nHere is [an incomplete list of them](https://scholar.google.com/scholar?as_ylo=2022&q=%E2%80%9CPyPOTS%E2%80%9D&hl=en>).\n\n``` bibtex\n@article{du2023pypots,\ntitle={{PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series}},\nauthor={Wenjie Du},\nyear={2023},\neprint={2305.18811},\narchivePrefix={arXiv},\nprimaryClass={cs.LG},\nurl={https://arxiv.org/abs/2305.18811},\ndoi={10.48550/arXiv.2305.18811},\n}\n```\nor\n> Wenjie Du. (2023).\n> PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series.\n> arXiv, abs/2305.18811.https://arxiv.org/abs/2305.18811\n\n\n## \u2756 Contribution\nYou're very welcome to contribute to this exciting project!\n\nBy committing your code, you'll\n\n1. make your well-established model out-of-the-box for PyPOTS users to run,\n   and help your work obtain more exposure and impact.\n   Take a look at our [inclusion criteria](https://docs.pypots.com/en/latest/faq.html#inclusion-criteria).\n   You can utilize the `template` folder in each task package (e.g.\n   [pypots/imputation/template](https://github.com/WenjieDu/PyPOTS/tree/main/pypots/imputation/template)) to quickly start;\n2. become one of [PyPOTS contributors](https://github.com/WenjieDu/PyPOTS/graphs/contributors) and\n   be listed as a volunteer developer [on the PyPOTS website](https://pypots.com/about/#volunteer-developers);\n3. get mentioned in our [release notes](https://github.com/WenjieDu/PyPOTS/releases);\n\nYou can also contribute to PyPOTS by simply staring\ud83c\udf1f this repo to help more people notice it.\nYour star is your recognition to PyPOTS, and it matters!\n\n<details open>\n<summary>\n    <b><i>\n    \ud83d\udc4f Click here to view PyPOTS stargazers and forkers.<br>\n    We're so proud to have more and more awesome users, as well as more bright \u2728stars:\n    </i></b>\n</summary>\n<a href=\"https://github.com/WenjieDu/PyPOTS/stargazers\">\n    <img alt=\"PyPOTS stargazers\" src=\"http://reporoster.com/stars/dark/WenjieDu/PyPOTS\">\n</a>\n<br>\n<a href=\"https://github.com/WenjieDu/PyPOTS/network/members\">\n    <img alt=\"PyPOTS forkers\" src=\"http://reporoster.com/forks/dark/WenjieDu/PyPOTS\">\n</a>\n</details>\n\n\ud83d\udc40 Check out a full list of our users' affiliations [on PyPOTS website here](https://pypots.com/users/)!\n\n\n## \u2756 Community\nWe care about the feedback from our users, so we're building PyPOTS community on\n\n- [Slack](https://join.slack.com/t/pypots-org/shared_invite/zt-1gq6ufwsi-p0OZdW~e9UW_IA4_f1OfxA). General discussion, Q&A, and our development team are here;\n- [LinkedIn](https://www.linkedin.com/company/pypots). Official announcements and news are here;\n- [WeChat (\u5fae\u4fe1\u516c\u4f17\u53f7)](https://mp.weixin.qq.com/s/sNgZmgAyxDn2sZxXoWJYMA). We also run a group chat on WeChat,\n  and you can get the QR code from the official account after following it;\n\nIf you have any suggestions or want to contribute ideas or share time-series related papers, join us and tell.\nPyPOTS community is open, transparent, and surely friendly. Let's work together to build and improve PyPOTS!\n\n\n[//]: # (Use APA reference style below)\n[^1]: Du, W., Cote, D., & Liu, Y. (2023). [SAITS: Self-Attention-based Imputation for Time Series](https://doi.org/10.1016/j.eswa.2023.119619). *Expert systems with applications*.\n[^2]: Vaswani, A., Shazeer, N.M., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, L., & Polosukhin, I. (2017). [Attention is All you Need](https://papers.nips.cc/paper/2017/hash/3f5ee243547dee91fbd053c1c4a845aa-Abstract.html). *NeurIPS 2017*.\n[^3]: Cao, W., Wang, D., Li, J., Zhou, H., Li, L., & Li, Y. (2018). [BRITS: Bidirectional Recurrent Imputation for Time Series](https://papers.nips.cc/paper/2018/hash/734e6bfcd358e25ac1db0a4241b95651-Abstract.html). *NeurIPS 2018*.\n[^4]: Che, Z., Purushotham, S., Cho, K., Sontag, D.A., & Liu, Y. (2018). [Recurrent Neural Networks for Multivariate Time Series with Missing Values](https://www.nature.com/articles/s41598-018-24271-9). *Scientific Reports*.\n[^5]: Zhang, X., Zeman, M., Tsiligkaridis, T., & Zitnik, M. (2022). [Graph-Guided Network for Irregularly Sampled Multivariate Time Series](https://arxiv.org/abs/2110.05357). *ICLR 2022*.\n[^6]: Ma, Q., Chen, C., Li, S., & Cottrell, G. W. (2021). [Learning Representations for Incomplete Time Series Clustering](https://ojs.aaai.org/index.php/AAAI/article/view/17070). *AAAI 2021*.\n[^7]: Jong, J.D., Emon, M.A., Wu, P., Karki, R., Sood, M., Godard, P., Ahmad, A., Vrooman, H.A., Hofmann-Apitius, M., & Fr\u00f6hlich, H. (2019). [Deep learning for clustering of multivariate clinical patient trajectories with missing values](https://academic.oup.com/gigascience/article/8/11/giz134/5626377). *GigaScience*.\n[^8]: Chen, X., & Sun, L. (2021). [Bayesian Temporal Factorization for Multidimensional Time Series Prediction](https://arxiv.org/abs/1910.06366). *IEEE transactions on pattern analysis and machine intelligence*.\n[^9]: Yoon, J., Zame, W. R., & van der Schaar, M. (2019). [Estimating Missing Data in Temporal Data Streams Using Multi-Directional Recurrent Neural Networks](https://ieeexplore.ieee.org/document/8485748). *IEEE Transactions on Biomedical Engineering*.\n[^10]: Miao, X., Wu, Y., Wang, J., Gao, Y., Mao, X., & Yin, J. (2021). [Generative Semi-supervised Learning for Multivariate Time Series Imputation](https://ojs.aaai.org/index.php/AAAI/article/view/17086). *AAAI 2021*.\n[^11]: Fortuin, V., Baranchuk, D., Raetsch, G. & Mandt, S. (2020). [GP-VAE: Deep Probabilistic Time Series Imputation](https://proceedings.mlr.press/v108/fortuin20a.html). *AISTATS 2020*.\n[^12]: Tashiro, Y., Song, J., Song, Y., & Ermon, S. (2021). [CSDI: Conditional Score-based Diffusion Models for Probabilistic Time Series Imputation](https://proceedings.neurips.cc/paper/2021/hash/cfe8504bda37b575c70ee1a8276f3486-Abstract.html). *NeurIPS 2021*.\n[^13]: Rubin, D. B. (1976). [Inference and missing data](https://academic.oup.com/biomet/article-abstract/63/3/581/270932). *Biometrika*.\n[^14]: Wu, H., Hu, T., Liu, Y., Zhou, H., Wang, J., & Long, M. (2023). [TimesNet: Temporal 2d-variation modeling for general time series analysis](https://openreview.net/forum?id=ju_Uqw384Oq). *ICLR 2023*\n[^15]: Wu, H., Xu, J., Wang, J., & Long, M. (2021). [Autoformer: Decomposition transformers with auto-correlation for long-term series forecasting](https://proceedings.neurips.cc/paper/2021/hash/bcc0d400288793e8bdcd7c19a8ac0c2b-Abstract.html). *NeurIPS 2021*.\n[^16]: Zhang, Y., & Yan, J. (2023). [Crossformer: Transformer utilizing cross-dimension dependency for multivariate time series forecasting](https://openreview.net/forum?id=vSVLM2j9eie). *ICLR 2023*.\n[^17]: Zeng, A., Chen, M., Zhang, L., & Xu, Q. (2023). [Are transformers effective for time series forecasting?](https://ojs.aaai.org/index.php/AAAI/article/view/26317). *AAAI 2023*\n[^18]: Nie, Y., Nguyen, N. H., Sinthong, P., & Kalagnanam, J. (2023). [A time series is worth 64 words: Long-term forecasting with transformers](https://openreview.net/forum?id=Jbdc0vTOcol). *ICLR 2023*\n[^19]: Woo, G., Liu, C., Sahoo, D., Kumar, A., & Hoi, S. (2023). [ETSformer: Exponential Smoothing Transformers for Time-series Forecasting](https://openreview.net/forum?id=5m_3whfo483).  *ICLR 2023*\n[^20]: Zhou, T., Ma, Z., Wen, Q., Wang, X., Sun, L., & Jin, R. (2022). [FEDformer: Frequency enhanced decomposed transformer for long-term series forecasting](https://proceedings.mlr.press/v162/zhou22g.html). *ICML 2022*.\n[^21]: Zhou, H., Zhang, S., Peng, J., Zhang, S., Li, J., Xiong, H., & Zhang, W. (2021). [Informer: Beyond efficient transformer for long sequence time-series forecasting](https://ojs.aaai.org/index.php/AAAI/article/view/17325). *AAAI 2021*.\n\n\n\n<details>\n<summary>\ud83c\udfe0 Visits</summary>\n<a href=\"https://github.com/WenjieDu/PyPOTS\">\n    <img alt=\"PyPOTS visits\" align=\"left\" src=\"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FPyPOTS%2FPyPOTS&count_bg=%23009A0A&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=Visits%20since%20May%202022&edge_flat=false\">\n</a>\n</details>\n<br>\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "A Python Toolbox for Data Mining on Partially-Observed Time Series",
    "version": "0.4.1",
    "project_urls": {
        "Documentation": "https://docs.pypots.com/",
        "Download": "https://github.com/WenjieDu/PyPOTS/archive/main.zip",
        "Homepage": "https://pypots.com/",
        "Source": "https://github.com/WenjieDu/PyPOTS/",
        "Tracker": "https://github.com/WenjieDu/PyPOTS/issues/"
    },
    "split_keywords": [
        "data science",
        " data mining",
        " neural networks",
        " machine learning",
        " deep learning",
        " artificial intelligence",
        " time-series analysis",
        " time series",
        " imputation",
        " interpolation",
        " classification",
        " clustering",
        " forecasting",
        " partially observed",
        " irregular sampled",
        " partially-observed time series",
        " incomplete time series",
        " missing data",
        " missing values"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7dad1f35307c3921af69609aa60d0335e9c819e47e526a3231806b9557034a28",
                "md5": "93a8e328fcf0e840db0a873e7ac7758f",
                "sha256": "84f53ce8a8e45d6918415c1bdd03a99e208af1ef9a366722c6671b530b79427a"
            },
            "downloads": -1,
            "filename": "pypots-0.4.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "93a8e328fcf0e840db0a873e7ac7758f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7.0",
            "size": 324128,
            "upload_time": "2024-04-17T16:07:07",
            "upload_time_iso_8601": "2024-04-17T16:07:07.727051Z",
            "url": "https://files.pythonhosted.org/packages/7d/ad/1f35307c3921af69609aa60d0335e9c819e47e526a3231806b9557034a28/pypots-0.4.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "61951462c4a8ee5a47876ed041697402a95f9317b1a717fcf6376cb1ae99fc07",
                "md5": "1ffff12c13f07ffa5a33610f239e0f7c",
                "sha256": "0ea96fe132ddbe19e083b707112979bc999661934d0970d0dd0482d721b6ae04"
            },
            "downloads": -1,
            "filename": "pypots-0.4.1.tar.gz",
            "has_sig": false,
            "md5_digest": "1ffff12c13f07ffa5a33610f239e0f7c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7.0",
            "size": 197195,
            "upload_time": "2024-04-17T16:07:10",
            "upload_time_iso_8601": "2024-04-17T16:07:10.217020Z",
            "url": "https://files.pythonhosted.org/packages/61/95/1462c4a8ee5a47876ed041697402a95f9317b1a717fcf6376cb1ae99fc07/pypots-0.4.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-17 16:07:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "WenjieDu",
    "github_project": "PyPOTS",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [
        {
            "name": "h5py",
            "specs": []
        },
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "scipy",
            "specs": []
        },
        {
            "name": "sympy",
            "specs": []
        },
        {
            "name": "einops",
            "specs": []
        },
        {
            "name": "pandas",
            "specs": []
        },
        {
            "name": "matplotlib",
            "specs": []
        },
        {
            "name": "tensorboard",
            "specs": []
        },
        {
            "name": "scikit-learn",
            "specs": []
        },
        {
            "name": "torch",
            "specs": [
                [
                    ">=",
                    "1.10.0"
                ]
            ]
        },
        {
            "name": "tsdb",
            "specs": [
                [
                    ">=",
                    "0.2"
                ]
            ]
        },
        {
            "name": "pygrinder",
            "specs": [
                [
                    ">=",
                    "0.4"
                ]
            ]
        }
    ],
    "lcname": "pypots"
}
        
Elapsed time: 0.27464s