Skip to content

Commit c32b4e2

Browse files
committed
Fix TypeError in grid search size calculation and improve parameter space detection
- Added logic to detect `skopt` space objects in `parameter_space` to prevent passing Bayesian parameters to `ParameterGrid`. - Wrapped `ParameterGrid` size calculation in a try-except block to handle potential TypeErrors gracefully. - Removed redundant `pg` calculation logic that was overriding safety checks.
1 parent b5fcf42 commit c32b4e2

1 file changed

Lines changed: 26 additions & 9 deletions

File tree

ml_grid/pipeline/grid_search_cross_validate.py

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -396,19 +396,36 @@ def __init__(
396396
n_iter_v = max_param_space_iter_value
397397

398398
# Log grid size or iterations
399-
if not self.global_params.bayessearch and not random_grid_search:
400-
pg = len(ParameterGrid(parameter_space))
401-
self.logger.info(f"Parameter grid size: {pg}")
399+
# Check for skopt space to avoid ParameterGrid errors
400+
is_bayes_space = False
401+
if isinstance(parameter_space, list):
402+
for space in parameter_space:
403+
if isinstance(space, dict) and any(
404+
is_skopt_space(v) for v in space.values()
405+
):
406+
is_bayes_space = True
407+
break
408+
elif isinstance(parameter_space, dict):
409+
if any(is_skopt_space(v) for v in parameter_space.values()):
410+
is_bayes_space = True
411+
412+
if (
413+
not self.global_params.bayessearch
414+
and not random_grid_search
415+
and not is_bayes_space
416+
):
417+
try:
418+
pg = len(ParameterGrid(parameter_space))
419+
self.logger.info(f"Parameter grid size: {pg}")
420+
except TypeError:
421+
self.logger.warning(
422+
"Could not calculate ParameterGrid size (likely skopt objects)."
423+
)
424+
pg = "N/A"
402425
else:
403426
self.logger.info(f"Using n_iter={n_iter_v} for search.")
404427
pg = "N/A"
405428

406-
pg = (
407-
len(ParameterGrid(parameter_space))
408-
if not self.global_params.bayessearch
409-
else "N/A"
410-
)
411-
412429
# Dynamically adjust KNN parameter space for small datasets
413430
if "kneighbors" in method_name.lower() or "simbsig" in method_name.lower():
414431
self._adjust_knn_parameters(parameter_space)

0 commit comments

Comments
 (0)