Welcome to PyPOTS
a Python toolbox for machine learning on Partially-Observed Time Series
⦿ 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 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: ❖ Available Algorithms, ❖ PyPOTS Ecosystem, ❖ Installation, ❖ Usage, ❖ Citing PyPOTS, ❖ Contribution, ❖ Community.
❖ Available Algorithms
PyPOTS supports imputation, classification, clustering, forecasting, and anomaly detection tasks on multivariate partially-observed
time series with missing values. The table below shows the availability of each algorithm (sorted by Year) in PyPOTS for different tasks.
The symbol ✅
indicates the algorithm is available for the corresponding task (note that models will be continuously updated
in the future to handle tasks that are not currently supported. Stay tuned❗️).
🌟 Since v0.2, all neural-network models in PyPOTS has got hyperparameter-optimization support. This functionality is implemented with the Microsoft NNI framework. You may want to refer to our time-series imputation survey repo Awesome_Imputation to see how to config and tune the hyperparameters.
🔥 Note that all models whose name with 🧑🔧
in the table (e.g. Transformer, iTransformer, Informer etc.) are not originally
proposed as algorithms for POTS data in their papers, and they cannot directly accept time series with missing values as input,
let alone imputation. To make them applicable to POTS data, we specifically apply the embedding strategy and
training approach (ORT+MIT) the same as we did in the SAITS paper[^1].
The task types are abbreviated as follows:
IMPU
: Imputation;
FORE
: Forecasting;
CLAS
: Classification;
CLUS
: Clustering;
ANOD
: Anomaly Detection.
The paper references and links are all listed at the bottom of this file.
Type | Algo | IMPU | FORE | CLAS | CLUS | ANOD | Year - Venue |
---|---|---|---|---|---|---|---|
LLM | Gungnir 🚀 [^36] | ✅ | ✅ | ✅ | ✅ | ✅ | Later in 2024 |
Neural Net | ImputeFormer🧑🔧[^34] | ✅ | 2024 - KDD | ||||
Neural Net | iTransformer🧑🔧[^24] | ✅ | 2024 - ICLR | ||||
Neural Net | SAITS[^1] | ✅ | 2023 - ESWA | ||||
Neural Net | FreTS🧑🔧[^23] | ✅ | 2023 - NeurIPS | ||||
Neural Net | Koopa🧑🔧[^29] | ✅ | 2023 - NeurIPS | ||||
Neural Net | Crossformer🧑🔧[^16] | ✅ | 2023 - ICLR | ||||
Neural Net | TimesNet[^14] | ✅ | 2023 - ICLR | ||||
Neural Net | PatchTST🧑🔧[^18] | ✅ | 2023 - ICLR | ||||
Neural Net | ETSformer🧑🔧[^19] | ✅ | 2023 - ICLR | ||||
Neural Net | MICN🧑🔧[^27] | ✅ | 2023 - ICLR | ||||
Neural Net | DLinear🧑🔧[^17] | ✅ | 2023 - AAAI | ||||
Neural Net | TiDE🧑🔧[^28] | ✅ | 2023 - TMLR | ||||
Neural Net | SCINet🧑🔧[^30] | ✅ | 2022 - NeurIPS | ||||
Neural Net | Nonstationary Tr.🧑🔧[^25] | ✅ | 2022 - NeurIPS | ||||
Neural Net | FiLM🧑🔧[^22] | ✅ | 2022 - NeurIPS | ||||
Neural Net | RevIN_SCINet🧑🔧[^31] | ✅ | 2022 - ICLR | ||||
Neural Net | Pyraformer🧑🔧[^26] | ✅ | 2022 - ICLR | ||||
Neural Net | Raindrop[^5] | ✅ | 2022 - ICLR | ||||
Neural Net | FEDformer🧑🔧[^20] | ✅ | 2022 - ICML | ||||
Neural Net | Autoformer🧑🔧[^15] | ✅ | 2021 - NeurIPS | ||||
Neural Net | CSDI[^12] | ✅ | ✅ | 2021 - NeurIPS | |||
Neural Net | Informer🧑🔧[^21] | ✅ | 2021 - AAAI | ||||
Neural Net | US-GAN[^10] | ✅ | 2021 - AAAI | ||||
Neural Net | CRLI[^6] | ✅ | 2021 - AAAI | ||||
Probabilistic | BTTF[^8] | ✅ | 2021 - TPAMI | ||||
Neural Net | StemGNN🧑🔧[^33] | ✅ | 2020 - NeurIPS | ||||
Neural Net | Reformer🧑🔧[^32] | ✅ | 2020 - ICLR | ||||
Neural Net | GP-VAE[^11] | ✅ | 2020 - AISTATS | ||||
Neural Net | VaDER[^7] | ✅ | 2019 - GigaSci. | ||||
Neural Net | M-RNN[^9] | ✅ | 2019 - TBME | ||||
Neural Net | BRITS[^3] | ✅ | ✅ | 2018 - NeurIPS | |||
Neural Net | GRU-D[^4] | ✅ | ✅ | 2018 - Sci. Rep. | |||
Neural Net | TCN🧑🔧[^35] | ✅ | 2018 - arXiv | ||||
Neural Net | Transformer🧑🔧[^2] | ✅ | 2017 - NeurIPS | ||||
Naive | Lerp | ✅ | |||||
Naive | LOCF/NOCB | ✅ | |||||
Naive | Mean | ✅ | |||||
Naive | Median | ✅ |
💯 Contribute your model right now to increase your research impact! PyPOTS downloads are increasing rapidly (300K+ in total and 1K+ daily on PyPI so far), and your work will be widely used and cited by the community. Refer to the contribution guide to see how to include your model in PyPOTS.
❖ 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 ;-)
👈 Time series datasets are