Anything that can go wrong, will go wrong. − Murphy's Law
Determinantal point processes (DPPs) are specific probability distributions over clouds of points that have been popular as models or computational tools across physics, probability, statistics, and more recently of booming interest in machine learning. Sampling from DPPs is a nontrivial matter, and many approaches have been proposed. DPPy is a Python library that puts together all exact and approximate sampling algorithms for DPPs.
DPPy works with Python 3.4+
The zono_sampling
mcmc sampler for finite DPPs requires CVXOPT which itself requires GCC
- CVXOPT
- GCC
- On MAC it comes with Xcode
- On UNIX, use your package manager (
apt
,yum
etc)sudo apt install -qq gcc g++
Clone this repository
git clone https://github.com/guilgautier/DPPy.git
cd DPPy
And execute setup.py
pip install .
We wrote a companion paper to DPPy for latter submission to the MLOSS track of JMLR.
The companion paper is available on:
- arXiv
- GitHub, see the arxiv
branch
If you use this package, please consider citing it with this piece of BibTeX
@article{GaBaVa18,,
archivePrefix = {arXiv},
arxivId = {1809.07258},
author = {Gautier, Guillaume and Bardenet, R{\'{e}}mi and Valko, Michal},
eprint = {1809.07258},
journal = {ArXiv e-prints},
title = {{DPPy: Sampling Determinantal Point Processes with Python}},
keywords = {Computer Science - Machine Learning, Computer Science - Mathematical Software, Statistics - Machine Learning},
url = {http://arxiv.org/abs/1809.07258},
year = {2018},
note = {Code at http://github.com/guilgautier/DPPy/ Documentation at http://dppy.readthedocs.io/}
}
We would like to thank Guillermo Polito for leading our reproducible research workgroup, this project owes him a lot.
Take a look at the corresponding booklet to learn more on how to make your research reproducible!