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?

OptunaSearchCV is 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 sklearn search attributes work exactly as expected.

Optuna's tree-structured Parzen estimator (TPE), CMA-ES, and other samplers explore the search space more efficiently than grid or random search, while Optuna distributions (FloatDistribution, IntDistribution, CategoricalDistribution) let you express log-scaled, conditional, and mixed-type parameter spaces. Sklearn-Optuna requires Python 3.11+, scikit-learn ≥ 1.6, and Optuna ≥ 3.5.

Note: This project is inspired by optuna-integration's OptunaSearchCV.

What are the features of Sklearn-Optuna?

  • Drop-in sklearn search: Extends BaseSearchCV — works with Pipeline, clone(), get_params()/set_params(), and any estimator that follows the sklearn interface.
  • Optuna samplers: Choose TPE, CMA-ES, Random, or any Optuna sampler through the Sampler wrapper, with full sklearn parameter introspection.
  • Flexible distributions: Use Optuna's FloatDistribution, IntDistribution, and CategoricalDistribution for log-scaled, bounded, and categorical search spaces.
  • Study persistence and reuse: Pass a Storage backend to persist trials to a database, or resume optimization by passing an existing study to fit(study=...).
  • Callbacks: Attach Optuna callbacks (e.g., MaxTrialsCallback) via the Callback wrapper to control optimization flow.
  • Nested pipeline search: Use OptunaSearchCV as a step inside a pipeline tuned by another OptunaSearchCV and tune its Sampler during 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?

License

This project is licensed under the terms of the Apache-2.0 License.

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.0a1.tar.gz (106.7 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.0a1-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for sklearn_optuna-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 5c59521f4d409e2656e2c542aec7fad767868c9752c8017bf4724cbb9acb0fbb
MD5 bb693bf44bb70ff0b6f1bd8e62fa027d
BLAKE2b-256 6f18d42a831804872db46f3f43313bce8cfe9be673884aa89ee2b906df93bea2

See more details on using hashes here.

Provenance

The following attestation bundles were made for sklearn_optuna-0.1.0a1.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.0a1-py3-none-any.whl.

File metadata

File hashes

Hashes for sklearn_optuna-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 6dc8a3eee46b82d6c5f5ddc1770d61d4be7f5bdd7f0cec59a4c3fa49974e924d
MD5 b0642e9e05d189a76c061e5aa44a1fd4
BLAKE2b-256 021f2165b9adf3316307421c7ca969771fe7c428fb33d84731052c0e747a79b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for sklearn_optuna-0.1.0a1-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