BanditPAM
periodic-kmeans
BanditPAM | periodic-kmeans | |
---|---|---|
8 | 1 | |
644 | 2 | |
- | - | |
8.5 | 10.0 | |
3 months ago | almost 2 years ago | |
C++ | Python | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
BanditPAM
-
Want something better than k-means? Try BanditPAM (github.com/motiwari)
Repo: https://github.com/motiwari/BanditPAM
-
[Q] How should I perform clustering on angular data?
It's written in C++ for speed, but callable from Python and R. It also supports parallelization and intelligent caching at no extra complexity to end users. Its interface also matches the sklearn.cluster.KMeans interface, so minimal changes are necessary to existing code. repo
-
Show HN: Want something better than k-means? Try BanditPAM
Thanks for bug report and repro steps! I've filed this issue at https://github.com/motiwari/BanditPAM/issues/244 on our repo.
I suspect that this is because the scikit-learn implementation of KMeans subsamples the data and uses some highly-optimized data structures for larger datasets. I've asked the team to see how we can use some of those techniques in BanditPAM and will update the Github repo as we learn more and improve our implementation.
Want something better than k-means? I'm happy to announce our SOTA k-medoids algorithm from NeurIPS 2020, BanditPAM, is now publicly available! `pip install banditpam` or `install.packages("banditpam")` and you're good to go!
Unlike in k-means, the k-medoids problem requires cluster centers to be actual datapoints, which permits greater interpretability of your cluster centers. k-medoids also works better with arbitrary distance metrics, so your clustering can be more robust to outliers if you're using metrics like L1.
Despite these advantages, most people don't use k-medoids because prior algorithms were too slow. In our NeurIPS 2020 paper, BanditPAM, we sped up the best known algorithm from O(n^2) to O(nlogn).
We've released our implementation, which is pip- and CRAN-installable. It's written in C++ for speed, but callable from Python and R. It also supports parallelization and intelligent caching at no extra complexity to end users. Its interface also matches the sklearn.cluster.KMeans interface, so minimal changes are necessary to existing code.
Our previous announcement that went viral: https://www.linkedin.com/posts/motiwari_want-something-bette...
PyPI: https://pypi.org/project/banditpam
CRAN: https://cran.r-project.org/web/packages/banditpam/index.html
Repo: https://github.com/motiwari/BanditPAM
Paper: https://arxiv.org/abs/2006.06856
If you find our work valuable, please consider starring the repo or citing our work. These help us continue development on this project.
I'm Mo Tiwari (motiwari.com), a PhD student in Computer Science at Stanford University. A special thanks to my collaborators on this project, Martin Jinye Zhang, James Mayclin, Sebastian Thrun, Chris Piech, and Ilan Shomorony, as well as the author of the R package, Balasubramanian Narasimhan.
(This is my first time posting on HN; I've read the FAQ before posting, but please let me know if I broke any rules)
periodic-kmeans
-
[Q] How should I perform clustering on angular data?
There is also k-means clustering in the presence of periodic boundary conditions. This package and the accompanying paper give an implementation with several examples including the NYC taxi dataset.
What are some alternatives?
Pytorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration
river - 🌊 Online machine learning in Python
tensorflow - An Open Source Machine Learning Framework for Everyone
PaddlePaddle - PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
bolt - 10x faster matrix and vector operations