featureranker
Ensemble feature ranking for any numeric feature matrix: tabular datasets, transformer embeddings, pooled hidden states, engineered features. Five methods rank every feature, a typed result object holds the evidence, and weighted rank voting produces one consensus ordering, for classification and regression. Unnamed matrices work directly: pass a numpy array and features get stable generated IDs.
Featured in:
- Machine learning classifiers predict key genomic and evolutionary traits across the kingdoms of life (Nature Scientific Reports, 2023)
- cdsBERT - Extending Protein Language Models with Codon Awareness (bioRxiv, 2023)
Installation
pip install featureranker
Requires Python >= 3.11.
Quick start
from sklearn.datasets import load_breast_cancer
from featureranker import feature_ranking, voting, plot_rankings, plot_after_vote
cancer = load_breast_cancer(as_frame=True)
result = feature_ranking(cancer.data, cancer.target, task="classification")
vote_table = voting(result) # ["feature", "score"], best first
plot_rankings(result, top_n=15) # per-method ranks as a dot plot
plot_after_vote(vote_table, top_n=15) # consensus scores
feature_ranking returns a RankingResult with per-method ranking tables,
rank and score matrices, diagnostics, and save/load. Results are
deterministic for a given random_state at any n_jobs.
Hugging Face datasets
Pass a Hub path, name the label column, list what to exclude; the rest
become features. Categorical columns one-hot expand into named sub-features
(sex-Female, workclass-Private) by default.
from featureranker import feature_ranking, get_hf_data
X, y = get_hf_data(
"scikit-learn/adult-census-income",
target="income",
columns_to_drop=["fnlwgt"],
)
result = feature_ranking(X, y, task="classification")
One score from the best features
fit_convex finds the optimal convex combination of the top consensus
features: weights >= 0 that sum to one, so each weight is that feature's
share of a single interpretable scoring function.
fit = result.fit_convex(X, y, top_n=10)
fit.table() # ["feature", "weight"], largest first
scores = fit.predict(X) # rank rows by the combined score
Ranking methods
| Key | Method | Score |
|---|---|---|
rf |
Random forest | Impurity importance from a halving-search-tuned forest |
xg |
XGBoost | Gain importance from a halving-search-tuned booster |
mi |
Mutual information | kNN-estimated dependency with the target |
f_test |
ANOVA F-test | Between/within variance ratio |
l1 |
L1 regularization path | Entry point on the lasso / L1 logistic path |
Examples and the selection-vs-reduction study
20 datasets (transformer embeddings, classical NLP feature spaces, pixels, molecules, sensors) each run the same ablation: every ranking method and the ensemble vote as selectors against PCA, ICA, random projection, kernel PCA, Isomap, UMAP, and t-SNE at matched budgets, scored by linear, kNN, and SVM probes. Findings: the research report. Per-dataset pages live in docs/examples/, regenerated by the scripts in examples/; the ModernBERT sentiment deep dive walks the methodology on unnamed transformer dimensions.
Documentation
| Topic | Page |
|---|---|
| Install and first run | docs/quickstart.md |
| The math behind each method and the voting schemes | docs/algorithms.md |
| Speed, the n_jobs core budget, determinism | docs/performance.md |
| Every signature and exception | docs/api.md |
| Upgrading from v2 | docs/migration_v2_to_v3.md |
| Development and releases | docs/contributing.md |
The example notebook walks through classification and regression end to end.
Development
git clone https://github.com/lhallee/featureranker.git
cd featureranker
pip install -e ".[dev]"
pytest
Citation
@article{Hallee2023,
title = {Machine learning classifiers predict key genomic and evolutionary traits across the kingdoms of life},
volume = {13},
ISSN = {2045-2322},
url = {http://dx.doi.org/10.1038/s41598-023-28965-7},
DOI = {10.1038/s41598-023-28965-7},
number = {1},
journal = {Scientific Reports},
publisher = {Springer Science and Business Media LLC},
author = {Hallee, Logan and Khomtchouk, Bohdan B.},
year = {2023},
month = feb
}
@article{Hallee2023cds,
title = {cdsBERT - Extending Protein Language Models with Codon Awareness},
url = {http://dx.doi.org/10.1101/2023.09.15.558027},
DOI = {10.1101/2023.09.15.558027},
publisher = {Cold Spring Harbor Laboratory},
author = {Hallee, Logan and Rafailidis, Nikolaos and Gleghorn, Jason P.},
year = {2023},
month = sep
}
License
MIT
Metadata
Release files for featureranker 3.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| featureranker-3.0.4.tar.gz | 6.7 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| featureranker-3.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.7 MB
Release files / featureranker-3.0.4.tar.gz
| Download URL | featureranker-3.0.4.tar.gz |
|---|---|
| Size | 6.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9f6b7e9c594d8dadaf76dfdc8ac3ecb127c3cb2e628d1361964cf28f659143c3
|
|
BLAKE2b-256 checksum How to use checksums |
73844dd8a830ec357a37814e6174d248baea2cc77485660c7b66d7b9a9e066ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / featureranker-3.0.4-py3-none-any.whl
| Download URL | featureranker-3.0.4-py3-none-any.whl |
|---|---|
| Size | 39.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f316de6a6cd598ea58c55b3f1a5d440c13bf3b4e11e1e562b6f12d90c624aa7e
|
|
BLAKE2b-256 checksum How to use checksums |
3eec03474af9215e5bccb12cba823feddb9d3285cc87939dfae8cae64cfa5988
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|