v3.0.0
Breaking release: the ranking engine, public API, packaging, and docs were rebuilt. Full details in CHANGELOG.md and the v2 to v3 migration guide.
Highlights
- Correct L1 classification rankings. v2 recorded the wrong end of the regularization path (scores collapsed to ties), crashed on 3+ classes, and was nondeterministic. v3 finds each feature's true entry point with parallel coarse-to-fine C waves: 236.6s to 8.3s on 20k x 500, and deterministic at any n_jobs.
- Adaptive L1 regression paths: exact Gram-based LARS breakpoints when affordable, dense warm-started coordinate descent otherwise.
- Halving hyperparameter search for the tree models (27 candidates on subsampled rungs) with exactly one final full-data fit.
- Typed results:
feature_rankingreturns a frozenRankingResult(rankings dict, rank/score matrices, diagnostics, save/load); per-method options dataclasses replace silent kwargs;ValueErrorcontract throughout. - Any numeric feature matrix: pass a bare 2D numpy array (embeddings, pooled hidden states) and features get stable generated IDs. The ModernBERT sentiment example ranks 1,536 unnamed transformer dimensions; its top 20 keep 96.7% of full-representation probe accuracy and beat PCA, UMAP, and t-SNE at matched dimensionality.
- Redesigned plots (consensus dot plot, rank heatmap, emphasis vote bars) and a docs/ reference set with self-regenerating examples.
- Floors: Python >= 3.11, scikit-learn >= 1.8, xgboost >= 2.0. License is now MIT.
🤖 Generated with Claude Code