Skip to main content
Help the Python Software Foundation raise $60,000 USD by December 31st!  Building the PSF Q4 Fundraiser

The Union of Intersections framework in Python.

Project description

codecov Documentation Status PyPI Anaconda-Server Badge

PyUoI contains implementations of Union of Intersections framework for a variety of penalized generalized linear models as well as dimensionality reductions techniques such as column subset selection and non-negative matrix factorization. In general, UoI is a statistical machine learning framework that leverages two concepts in model inference:

  1. Separating the selection and estimation problems to simultaneously achieve sparse models with low-bias and low-variance parameter estimates.
  2. Stability to perturbations in both selection and estimation.

PyUoI is designed to function similarly to scikit-learn, as it often builds upon scikit-learn's implementations of the aforementioned algorithms.

Further details on the UoI framework can be found in the NeurIPS paper (Bouchard et al., 2017).


PyUoI is available for Python 3 on PyPI:

pip install pyuoi

and through conda-forge:

conda install pyuoi -c conda-forge



PyUoI requires

  • numpy>=1.14
  • h5py>=2.8
  • scikit-learn>=0.20

and optionally

  • pycasso
  • mpi4py

to run.


To develop PyUoI you will additionally need

  • cython

to build from source and

  • pytest
  • flake8

to run the tests and check formatting.


PyUoI is split up into two modules, with the following UoI algorithms:

  • linear_model (generalized linear models)
    • Lasso penalized linear regression UoILasso.
    • Elastic-net penalized linear regression (UoIElasticNet).
    • Logistic regression (Bernoulli and multinomial) (UoILogistic).
    • Poisson regression (UoIPoisson).
  • decomposition (dimensionality reduction)
    • Column subset selection (UoICSS).
    • Non-negative matrix factorization (UoINMF).

Similar to scikit-learn, each UoI algorithm has its own Python class.


Please see our ReadTheDocs page for an introduction to Union of Intersections, usage of PyUoI, and the API.


PyUol Copyright (c) 2019, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved.

If you have questions about your rights to use or distribute this software, please contact Berkeley Lab's Innovation & Partnerships Office at referring to " PyUol" (LBNL Ref 2019-157)."

NOTICE. This software was developed under funding from the U.S. Department of Energy. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, prepare derivative works, and perform publicly and display publicly. The U.S. Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pyuoi, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size pyuoi-1.0.0-cp36-cp36m-macosx_10_7_x86_64.whl (111.5 kB) File type Wheel Python version cp36 Upload date Hashes View
Filename, size pyuoi-1.0.0-cp37-cp37m-macosx_10_7_x86_64.whl (109.4 kB) File type Wheel Python version cp37 Upload date Hashes View
Filename, size pyuoi-1.0.0.tar.gz (86.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page