This release is a pre-release and may not be stable for production use.
What is Sklearn-Optuna?
Sklearn-Optuna provides OptunaSearchCV, a drop-in replacement for Scikit-Learn's
GridSearchCV and RandomizedSearchCV that uses Optuna for hyperparameter optimization. It extends BaseSearchCV so that fit(), score(), best_params_, cv_results_, and all other Scikit-Learn search attributes work exactly as expected.
With Sklearn-Optuna, you gain immediate access to sophisticated Bayesian optimization while maintaining full compatibility with Scikit-Learn's Pipeline, cross-validation, and serialization. Perfect for data scientists who want smarter hyperparameter search without learning a new API.
Note: This project is inspired by Optuna-Integration's OptunaSearchCV.
What are the features of Sklearn-Optuna?
- Drop-in Scikit-Learn search: Extends
BaseSearchCVand works withPipeline,clone(),get_params()/set_params(), and any estimator - Smart optimization: TPE, CMA-ES, and other samplers explore the search space more efficiently than grid or random search
- Flexible distributions: Optuna distributions (
FloatDistribution,IntDistribution,CategoricalDistribution) for log-scaled, bounded, and categorical spaces - Study persistence: Pass a
Storagebackend to persist trials to a database, or resume optimization by passing an existing study tofit() - Callbacks: Attach Optuna callbacks (e.g.,
MaxTrialsCallback) to control optimization flow - Nested pipeline search: Use
OptunaSearchCVinside anotherOptunaSearchCVfor hierarchical hyperparameter optimization
How to install Sklearn-Optuna?
Install the Sklearn-Optuna package using pip:
pip install sklearn_optuna
or using uv:
uv pip install sklearn_optuna
or using conda:
conda install -c conda-forge sklearn_optuna
or using mamba:
mamba install -c conda-forge sklearn_optuna
or alternatively, add sklearn_optuna to your requirements.txt or pyproject.toml file.
How to get started with Sklearn-Optuna?
1. Define a search space with Optuna distributions
from optuna.distributions import FloatDistribution
from sklearn.linear_model import LogisticRegression
param_distributions = {
"C": FloatDistribution(1e-2, 10.0, log=True),
}
2. Create and fit an OptunaSearchCV
from sklearn_optuna import OptunaSearchCV, Sampler
import optuna
search = OptunaSearchCV(
LogisticRegression(max_iter=200),
param_distributions,
n_trials=20,
sampler=Sampler(sampler=optuna.samplers.TPESampler, seed=42),
cv=5,
)
search.fit(X_train, y_train)
3. Inspect results
print(search.best_params_) # {'C': 1.23}
print(search.best_score_) # 0.95
search.best_estimator_.predict(X_test)
How do I use Sklearn-Optuna?
Full documentation is available at https://sklearn-optuna.readthedocs.io/.
Interactive examples are available in the examples/ directory:
- Online: https://sklearn-optuna.readthedocs.io/en/latest/pages/examples/
- Locally: Run
just example quickstartoruv run marimo edit examples/quickstart.pyto open an interactive notebook
Can I contribute?
We welcome contributions, feedback, and questions:
- Report issues or request features: GitHub Issues
- Join the discussion: GitHub Discussions
- Contributing Guide: CONTRIBUTING.md
If you are interested in becoming a maintainer or taking a more active role, please reach out to Guillaume Tauzin on GitHub Discussions.
Where can I learn more?
- Full documentation: https://sklearn-optuna.readthedocs.io/
- Interactive Examples: https://sklearn-optuna.readthedocs.io/en/latest/pages/examples/
For questions and discussions, you can also open a discussion.
License
This project is licensed under the terms of the Apache-2.0 License.
Acknowledgements
This project is maintained by stateful-y, an ML consultancy specializing in data science & engineering. If you're interested in collaborating or learning more about our services, please visit our website.
Metadata
Release files for sklearn-optuna 0.1.0a5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sklearn_optuna-0.1.0a5.tar.gz | 352.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sklearn_optuna-0.1.0a5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 372.2 kB
Release files / sklearn_optuna-0.1.0a5.tar.gz
| Download URL | sklearn_optuna-0.1.0a5.tar.gz |
|---|---|
| Size | 352.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
67cedb8ed1078d7bc2ed5eed204ddb5eac545703b529770df3810dc3bedf3d1e
|
|
BLAKE2b-256 checksum How to use checksums |
eb858eb0ed4b174673032c3a2881ae6ef5a6774faf7371cccc881a025d439e22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency logRelease files / sklearn_optuna-0.1.0a5-py3-none-any.whl
| Download URL | sklearn_optuna-0.1.0a5-py3-none-any.whl |
|---|---|
| Size | 19.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a1966e9e2010d9f99e05fee05de372098ee4f3faa21245a30cc166a84b59d12
|
|
BLAKE2b-256 checksum How to use checksums |
1619112731163ed94f9475936fde34b4f64c9d27682fa6d4ca5ec2f76e36dbc4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency log