Metadata-Version: 2.4
Name: celer
Version: 0.7.4
Summary: A fast algorithm with dual extrapolation for sparse problems
Author-email: Mathurin Massias <mathurin.massias@gmail.com>
License: BSD (3-clause)
Project-URL: documentation, https://mathurinm.github.io/celer/
Project-URL: repository, https://github.com/mathurinm/celer.git
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: seaborn>=0.7
Requires-Dist: matplotlib>=2.0.0
Requires-Dist: libsvmdata>=0.3
Requires-Dist: scikit-learn>=1.0
Requires-Dist: xarray
Requires-Dist: download
Requires-Dist: tqdm
Provides-Extra: doc
Requires-Dist: numpydoc; extra == "doc"
Requires-Dist: pandas; extra == "doc"
Requires-Dist: pillow; extra == "doc"
Requires-Dist: furo; extra == "doc"
Requires-Dist: sphinx-copybutton; extra == "doc"
Requires-Dist: sphinx-gallery; extra == "doc"
Dynamic: license-file

# celer

![build](https://github.com/mathurinm/celer/workflows/build/badge.svg)
![coverage](https://codecov.io/gh/mathurinm/celer/branch/main/graphs/badge.svg?branch=main)
![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)
[![Downloads](https://static.pepy.tech/badge/celer)](https://pepy.tech/project/celer)
[![Downloads](https://pepy.tech/badge/celer/month)](https://pepy.tech/project/celer)
[![PyPI version](https://badge.fury.io/py/celer.svg)](https://pypi.org/project/celer)


``celer`` is a Python package that solves Lasso-like problems and provides estimators that follow the ``scikit-learn`` API. Thanks to a tailored implementation, ``celer`` provides a fast solver that tackles large-scale datasets with millions of features **up to 100 times faster than ``scikit-learn``**.

Currently, the package handles the following problems:


| Problem                       | Support Weights | Native cross-validation
| -----------                   | -----------     |----------------
| Lasso                         | ✓               | ✓
| ElasticNet                    | ✓               | ✓
| Group Lasso                   | ✓               | ✓
| Multitask Lasso               | ✕               | ✓
| Sparse Logistic regression    | ✕               | ✕

If you are interested in other models, such as non convex penalties (SCAD, MCP), sparse group lasso, group logistic regression, Poisson regression, Tweedie regression, have a look at our companion package [``skglm``](https://github.com/scikit-learn-contrib/skglm)

## Cite

``celer`` is licensed under the [BSD 3-Clause](https://github.com/mathurinm/celer/blob/main/LICENSE). Hence, you are free to use it.
If you do so, please cite:


```bibtex
@InProceedings{pmlr-v80-massias18a,
  title     = {Celer: a Fast Solver for the Lasso with Dual Extrapolation},
  author    = {Massias, Mathurin and Gramfort, Alexandre and Salmon, Joseph},
  booktitle = {Proceedings of the 35th International Conference on Machine Learning},
  pages     = {3321--3330},
  year      = {2018},
  volume    = {80},
}

@article{massias2020dual,
  author  = {Mathurin Massias and Samuel Vaiter and Alexandre Gramfort and Joseph Salmon},
  title   = {Dual Extrapolation for Sparse GLMs},
  journal = {Journal of Machine Learning Research},
  year    = {2020},
  volume  = {21},
  number  = {234},
  pages   = {1-33},
  url     = {http://jmlr.org/papers/v21/19-587.html}
}
```

## Why ``celer``?

``celer`` is specially designed to handle Lasso-like problems which makes it a fast solver of such problems.
In particular, it comes with tools such as:

- automated parallel cross-validation
- support of sparse and dense data
- optional feature centering and normalization
- unpenalized intercept fitting

``celer`` also provides easy-to-use estimators as it is designed under the ``scikit-learn`` API.



## Get started

To get started, install ``celer`` via pip

```shell
pip install -U celer
```

On your python console,
run the following commands to fit a Lasso estimator on a toy dataset.

```python
>>> from celer import Lasso
>>> from celer.datasets import make_correlated_data
>>> X, y, _ = make_correlated_data(n_samples=100, n_features=1000)
>>> estimator = Lasso()
>>> estimator.fit(X, y)
```

This is just a starter example.
Make sure to browse [``celer`` documentation ](https://mathurinm.github.io/celer/) to learn more about its features.
To get familiar with [``celer`` API](https://mathurinm.github.io/celer/api.html), you can also explore the gallery of examples
which includes examples on real-life datasets as well as timing comparisons with other solvers.



## Contribute to celer

``celer`` is an open-source project and hence relies on community efforts to evolve.
Your contribution is highly valuable and can come in three forms

- **bug report:** you may encounter a bug while using ``celer``. Don't hesitate to report it on the [issue section](https://github.com/mathurinm/celer/issues).
- **feature request:** you may want to extend/add new features to ``celer``. You can use the [issue section](https://github.com/mathurinm/celer/issues) to make suggestions.
- **pull request:** you may have fixed a bug, enhanced the documentation, ... you can submit a [pull request](https://github.com/mathurinm/celer/pulls) and we will respond asap.

For the last mean of contribution, here are the steps to help you setup ``celer`` on your local machine:

1. Fork the repository and afterwards run the following command to clone it on your local machine

```shell
git clone https://github.com/{YOUR_GITHUB_USERNAME}/celer.git
```

2. ``cd`` to ``celer`` directory and install it in edit mode by running

```shell
cd celer
pip install -e .
```

3. To run the gallery examples and build the documentation, run the following

```shell
cd doc
pip install -e .[doc]
make html
```



## Further links

- https://mathurinm.github.io/celer/
- https://arxiv.org/abs/1802.07481
- https://arxiv.org/abs/1907.05830

