Abess
Fast Best-Subset Selection Library
Install / Use
/learn @abess-team/AbessQuality Score
Category
Education & ResearchSupported Platforms
Tags
README
<img src='https://raw.githubusercontent.com/abess-team/abess/master/docs/image/icon_long.png' align="center"/></a>
abess: Fast Best-Subset Selection in Python and R
<p align="center"> <a href="https://github.com/abess-team/abess/actions/workflows/python_test.yml"><img src="https://github.com/abess-team/abess/actions/workflows/python_test.yml/badge.svg" alt="Python Build"></a> <a href="https://github.com/abess-team/abess/actions/workflows/r_test.yml"><img src="https://github.com/abess-team/abess/actions/workflows/r_test.yml/badge.svg" alt="R Build"></a> <a href="https://codecov.io/gh/abess-team/abess"><img src="https://codecov.io/gh/abess-team/abess/branch/master/graph/badge.svg?token=LK56LHXV00" alt="codecov"></a> <a href="https://www.codacy.com/gh/abess-team/abess/dashboard?utm_source=github.com&utm_medium=referral&utm_content=abess-team/abess&utm_campaign=Badge_Grade"><img src="https://app.codacy.com/project/badge/Grade/3f6e60a3a3e44699a033159633981b76" alt="Codacy Badge"></a> <a href="https://www.codefactor.io/repository/github/abess-team/abess"><img src="https://www.codefactor.io/repository/github/abess-team/abess/badge" alt="CodeFactor"></a> <br> <a href="https://abess.readthedocs.io/en/latest/?badge=latest"><img src="https://readthedocs.org/projects/abess/badge/?version=latest" alt="docs"></a> <a href="https://abess-team.github.io/abess/"><img src="https://github.com/abess-team/abess/actions/workflows/r_website.yml/badge.svg" alt="R docs"></a> <a href="https://cran.r-project.org/package=abess"><img src="https://img.shields.io/cran/v/abess?logo=R" alt="cran"></a> <a href="https://pypi.org/project/abess"><img src="https://img.shields.io/pypi/v/abess?logo=Pypi" alt="pypi"></a> <a href="https://anaconda.org/conda-forge/abess"><img src="https://img.shields.io/conda/vn/conda-forge/abess.svg?logo=condaforge" alt="Conda version"></a> <a href="https://img.shields.io/pypi/pyversions/abess"><img src="https://img.shields.io/pypi/pyversions/abess" alt="pyversions"></a> <a href="https://anaconda.org/conda-forge/abess"><img src="https://anaconda.org/conda-forge/abess/badges/platforms.svg" alt="Platform"></a> <a href="https://pepy.tech/project/abess"><img src="https://pepy.tech/badge/abess" alt="Downloads"></a> <a href="http://www.gnu.org/licenses/gpl-3.0"><img src="https://img.shields.io/badge/License-GPL%20v3-blue.svg" alt="License"></a> </p>Table of Contents
- Overview
- Quick Start
- Runtime Performance
- What's New
- Citation
- Open Source Software
- References
- Contributing
Overview
abess (Adaptive BEst Subset Selection) library aims to solve general best subset selection, i.e.,
find a small subset of predictors such that the resulting model is expected to have the highest accuracy.
The selection for best subset shows great value in scientific researches and practical applications.
For example, clinicians want to know whether a patient is healthy or not based on the expression levels of a few of important genes.
This library implements a generic algorithm framework to find the optimal solution in an extremely fast way. This framework now supports the detection of best subset under: linear regression, classification (binary or multi-class), counting-response modeling, censored-response modeling, multi-response modeling (multi-tasks learning), Ising model estimation, etc. It also supports the variants of best subset selection like group best subset selection, nuisance penalized regression, Especially, the time complexity of (group) best subset selection for linear regression is certifiably polynomial.
Quick start
The abess software has both Python and R's interfaces. Here a quick start will be given and for more details, please view: Installation.
Python package
Install the stable version of Python-package from Pypi:
$ pip install abess
or conda-forge:
$ conda install abess
Best subset selection for linear regression on a simulated dataset in Python:
from abess.linear import LinearRegression
from abess.datasets import make_glm_data
sim_dat = make_glm_data(n = 300, p = 1000, k = 10, family = "gaussian")
model = LinearRegression()
model.fit(sim_dat.x, sim_dat.y)
See more examples analyzed with Python in the Python tutorials.
R package
Install the stable version of R-package from CRAN with:
install.packages("abess")
Best subset selection for linear regression on a simulated dataset in R:
library(abess)
sim_dat <- generate.data(n = 300, p = 1000)
abess(x = sim_dat[["x"]], y = sim_dat[["y"]])
See more examples analyzed with R in the R tutorials.
Runtime Performance
To show the power of abess in computation, we assess its timings of the CPU execution (seconds) on synthetic datasets, and compare to state-of-the-art variable selection methods. The variable selection and estimation results are deferred to Python performance and R performance. All computations are conducted on a Ubuntu platform with Intel(R) Core(TM) i9-9940X CPU @ 3.30GHz and 48 RAM.
Python package
We compare abess Python package with scikit-learn on linear regression and logistic regression. Results are presented in the below figure:

It can be see that abess uses the least runtime to find the solution. This results can be reproduced by running the command in shell:
$ python abess/docs/simulation/Python/timings.py
R package
We compare abess R package with three widely used R packages: glmnet, ncvreg, and L0Learn.
We get the runtime comparison results:

Compared with other packages,
abess shows competitive computational efficiency,
and achieves the best computational power when variables have a large correlation.
Conducting the following command in shell can reproduce the above results in R:
$ Rscript abess/docs/simulation/R/timings.R
Open source software
abess is a free software and its source code is publicly available on Github. The core framework is programmed in C++, and user-friendly R and Python interfaces are offered. You can redistribute it and/or modify it under the terms of the GPL-v3 License. We welcome contributions for abess, especially stretching abess to the other best subset selection problems.
What's New
New features version 0.4.11:
- New
slide()function (R) andIsingModelclass (Python) for sparse Ising model estimation via the SLIDE algorithm. Reference: Chen et al. (2025), JASA. - sklearn 1.6/1.7 and NumPy 2.x compatibility.
- Free-threaded Python support on Windows.
sample_weightequivalence fixes for weighted regression.
New features version 0.4.8:
- Support no-intercept GLM (
fit_intercept=False/fit.intercept). - Beta range restriction (
beta_high/beta_low) for non-negative fitting. - Support AUC criterion for logistic/multinomial regression.
- Linux ARM64 (aarch64) wheel builds.
New features version 0.4.7:
- Support limiting beta into a range by clipping method. One application is to perform non-negative fitting.
- Support no-intercept model for most regressors in
abess.linearwith argumentfit_intercept=False. We assume that the data has been centered for these models. - Support AUC criterion for Logistic and Multinomial Regression.
New features version 0.4.6:
- Support no-intercept model for most regressors in
abess.linearwith argumentfit_intercept=False. We assume that the data has been centered for these models. (Python) abesscan be used viamlr3extralearnersas learnersregr.abessandclassif.abess. (R)- Use CMake on compiling to increase scalability.
- Support score functions for all GLM models. (Python)
- Rearrange some arguments in Python package to improve legibility. Please check the latest API document. (Python)
Citation
If you use abess or reference our tutorials in a presentation or publication, we would appreciate citations of our library.
Zhu Jin, Xueqin Wang, Liyuan Hu, Junhao Huang, Kangkang Jiang, Yanhang Zhang, Shiyun Lin, and Junxian Zhu. "abess: A Fast Best-Subset Selection Library in Python and R." Journal of Machine Learning Research 23, no. 202 (2022): 1-7.
@article{JMLR:v23:21-1060,
author = {Jin Zhu and Xueqin Wang and Liyuan Hu and Junhao Huang and Kangkang Jiang and Yanhang Zhang and Shiyun Lin and Junxian Zhu},
title = {abess: A Fast Best-Subset Selection Library in
Related Skills
claude-opus-4-5-migration
84.1kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
model-usage
340.2kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
TrendRadar
49.9k⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。
mcp-for-beginners
15.7kThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.
