Skip to main content

An Optuna integration for hyperparameter tuning in Scikit-Learn

Project description

Sklearn-Optuna

Python Version License PyPI Version Conda Version codecov

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 BaseSearchCV and works with Pipeline, 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 Storage backend to persist trials to a database, or resume optimization by passing an existing study to fit()
  • Callbacks: Attach Optuna callbacks (e.g., MaxTrialsCallback) to control optimization flow
  • Nested pipeline search: Use OptunaSearchCV inside another OptunaSearchCV for 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:

Can I contribute?

We welcome contributions, feedback, and questions:

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?

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 MLOps and data science & engineering. If you're interested in collaborating or learning more about our services, please visit our website.

Made by stateful-y

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sklearn_optuna-0.1.0a4.tar.gz (276.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sklearn_optuna-0.1.0a4-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

Details for the file sklearn_optuna-0.1.0a4.tar.gz.

File metadata

  • Download URL: sklearn_optuna-0.1.0a4.tar.gz
  • Upload date:
  • Size: 276.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sklearn_optuna-0.1.0a4.tar.gz
Algorithm Hash digest
SHA256 dd1a4b247cb088b26be3ec60b44b501fe18522be8359b096e8725640c91d1146
MD5 c1584c1b9cc62afa8b4641f8141e840c
BLAKE2b-256 7f7b09ebaefd384ae81e2a4741028a4d4a17c5baaef5557cb3efb078ed64350b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sklearn_optuna-0.1.0a4.tar.gz:

Publisher: publish-release.yml on stateful-y/sklearn-optuna

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sklearn_optuna-0.1.0a4-py3-none-any.whl.

File metadata

File hashes

Hashes for sklearn_optuna-0.1.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 37a418608e65fc6f28f97064bbc098971ef7db5b5abf0ed815546cb2f5e7b34c
MD5 652a8c54a7125b78d1eb5f4d0ed9516e
BLAKE2b-256 61ef2f2a80a01594144b146c25bc255be5c993dac5957f994561b575a68fc4a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for sklearn_optuna-0.1.0a4-py3-none-any.whl:

Publisher: publish-release.yml on stateful-y/sklearn-optuna

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page