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 stateful-y.io contact page.

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.

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.0a2.tar.gz (108.5 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.0a2-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sklearn_optuna-0.1.0a2.tar.gz
  • Upload date:
  • Size: 108.5 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.0a2.tar.gz
Algorithm Hash digest
SHA256 6505d9b39f804b8bdcb37c7c2ad50d502ec108e8229b8adbcea1ff4c7a7c3af5
MD5 629864ae176f04bdd8804303eba357d0
BLAKE2b-256 982b518d9934caaaaa6bc2f443a3837f6b3305fd2a8a5f9e4550bfa0a45ba0bc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sklearn_optuna-0.1.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 784fe6015144d261cf39a864275bac0bc68737a3f5e8af13e4e12b8e44e3538a
MD5 9d75455a07dc2e320450d47c933664ce
BLAKE2b-256 52c2749f562098ae703fca348a9f722f7910754654c91fa28d2c6b45abc516cd

See more details on using hashes here.

Provenance

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