-
Notifications
You must be signed in to change notification settings - Fork 40
Open
Labels
bugSomething isn't workingSomething isn't workingv5Issue/PR related to Optuna version 5.Issue/PR related to Optuna version 5.
Description
Expected behavior
Should accept Mapping as param_distributions in OptunaSearchCV.
A typing of param_distributions is Mapping;
| param_distributions: Mapping[str, distributions.BaseDistribution], |
However, if we assign Mapping other than dict (e.g. MappingProxyType), it throws an error.
Environment
- Optuna version:3.5.0
- Optuna Integration version:3.5.0
- Python version:3.11.6
- OS:macOS-14.7-arm64-arm-64bit
Error messages, stack traces, or logs
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[1], line 6
3 import optuna
4 from sklearn.cross_decomposition import PLSRegression
----> 6 ocv = optuna.integration.OptunaSearchCV(
7 PLSRegression(),
8 param_distributions=MappingProxyType(
9 dict(n_components=optuna.distributions.IntDistribution(1, 10))
10 ),
11 )
File ~/miniforge3/envs/py311/lib/python3.11/site-packages/optuna/_experimental.py:114, in experimental_class.<locals>.decorator.<locals>.wrapper.<locals>.wrapped_init(self, *args, **kwargs)
103 @functools.wraps(_original_init)
104 def wrapped_init(self: Any, *args: Any, **kwargs: Any) -> None:
105 warnings.warn(
106 "{} is experimental (supported from v{}). "
107 "The interface can change in the future.".format(
(...)
111 stacklevel=2,
112 )
--> 114 _original_init(self, *args, **kwargs)
File ~/miniforge3/envs/py311/lib/python3.11/site-packages/optuna/integration/sklearn.py:731, in OptunaSearchCV.__init__(self, estimator, param_distributions, cv, enable_pruning, error_score, max_iter, n_jobs, n_trials, random_state, refit, return_train_score, scoring, study, subsample, timeout, verbose, callbacks)
728 _imports.check()
730 if not isinstance(param_distributions, dict):
--> 731 raise TypeError("param_distributions must be a dictionary.")
733 # Rejecting deprecated distributions as they may cause cryptic error
734 # when cloning OptunaSearchCV instance.
735 # https://github.com/optuna/optuna/issues/4084
736 for key, dist in param_distributions.items():
TypeError: param_distributions must be a dictionary.Steps to reproduce
from types import MappingProxyType
import optuna
from sklearn.cross_decomposition import PLSRegression
ocv = optuna.integration.OptunaSearchCV(
PLSRegression(),
param_distributions=MappingProxyType(
dict(n_components=optuna.distributions.IntDistribution(1, 10))
),
)Additional context (optional)
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingv5Issue/PR related to Optuna version 5.Issue/PR related to Optuna version 5.