Thank you for taking the time to contribute! 🎉
This is an early-stage project and contributions of any size are welcome — from a typo fix to a new feature.
- Getting Started
- Reporting Bugs
- Suggesting Features
- Development Setup
- Branch & Commit Conventions
- Pull Request Checklist
- Running Benchmarks
- Code Style
- Star the repo ⭐ — it helps the project grow and signals to others that it's worth checking out.
- Read the CHANGELOG to understand what has been done and what is planned.
- Check open Issues before starting new work — your idea may already be tracked.
- Open an issue before starting significant work (new features, refactors) to align on design and avoid duplicated effort.
Use the Bug Report issue template on GitHub. Please include:
- A minimal, reproducible example (MRE)
- Python version, OS, and scikit-learn version (
pip show scikit-learn) - Expected vs actual behavior
- Full traceback if applicable
Use the Feature Request issue template. Describe:
- What problem you are trying to solve
- How you expect the API to look (pseudocode is fine)
- Whether you are willing to implement it yourself
# 1. Fork and clone your fork
git clone https://github.com/<your-username>/elimination-search-cv.git
cd elimination-search-cv
# 2. Create a virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 3. Install in editable mode
pip install -e .
# 4. Install benchmark dependencies (optional)
pip install scikit-learn numpy pandas| Type | Branch prefix | Example |
|---|---|---|
| New feature | feat/ |
feat/n-jobs-parallel |
| Bug fix | fix/ |
fix/single-param-grid-crash |
| Documentation | docs/ |
docs/update-readme-benchmarks |
| Refactor | refactor/ |
refactor/scoring-utils |
| Benchmark | bench/ |
bench/add-svm-model |
Commit messages should be short and imperative, e.g.:
feat: add best_score_ and best_estimator_ attributesfix: handle cv=1 edge case in create_cv_data_setsdocs: update benchmark table with v0.0.1 results
Before opening a PR, make sure:
- Your branch is up to date with
main - The code is clean and follows existing style (see Code Style)
- Docstrings are updated for any changed/added functions or classes
- If you added a public attribute or parameter, the README
Result Attributes/Constructor Parameterstable is updated - If this is a bug fix, a note is included in
CHANGELOG.md - If this is a significant new feature, a note is included in
CHANGELOG.md
# Quick configurable benchmark (recommended for development)
python benchmarks/benchmark_fast.py
# Full benchmark (5 models × 3 datasets × Light+Full grids)
python benchmarks/benchmark.pyBenchmark results are saved to benchmarks/marks/. If your change affects search speed or score quality, please include benchmark output in your PR description.
- Python 3.8+ compatible — avoid f-strings with
=(3.8 syntax), walrus operator, and other 3.9+ features unless adding a version guard. - Type hints on all public functions and
__init__parameters. - Docstrings in Google-style for all public classes and functions.
- Comments — prefer block comments above non-obvious logic over inline comments.
- No external dependencies beyond
scikit-learnandnumpyin the coresrc/package.
By contributing, you agree that your contributions will be licensed under the MIT License.