From 3280647781de3713ecbbf187408663a3a4595fcb Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 22 Feb 2024 07:15:16 +0100 Subject: [PATCH 1/4] Add PED-ANOVA as the first option for importance evaluator --- optuna_dashboard/_importance.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/optuna_dashboard/_importance.py b/optuna_dashboard/_importance.py index f0a8b284..100679a7 100644 --- a/optuna_dashboard/_importance.py +++ b/optuna_dashboard/_importance.py @@ -26,6 +26,16 @@ except Exception as e: FastFanovaImportanceEvaluator = None # type: ignore +try: + from optuna.importance import PedAnovaImportanceEvaluator +except ImportError: + _logger.warning(f"optuna>=3.6.0 is required for PedAnovaImportanceEvaluator.") + PedAnovaImportanceEvaluator = None # type: ignore +except Exception as e: + _logger.warning(f"Skipping to use PedAnovaImportanceEvaluator due to {e}.") + PedAnovaImportanceEvaluator = None # type: ignore + + if TYPE_CHECKING: from typing import Callable from typing import Optional @@ -64,6 +74,12 @@ def _get_param_importances( *, target: Optional[Callable[[FrozenTrial], float]] = None, ) -> dict[str, float]: + if PedAnovaImportanceEvaluator is not None: + # TODO(nabenabe0928): We might want to pass baseline_quantile as an argument in the future. + return get_param_importances( + study, target=target, evaluator=PedAnovaImportanceEvaluator() + ) + if FastFanovaImportanceEvaluator is not None: try: evaluator = FastFanovaImportanceEvaluator(completed_trials=completed_trials) From 0ef5a7bcb406db38781fba5d1182c3a3743b69f0 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 22 Feb 2024 07:57:32 +0100 Subject: [PATCH 2/4] Address the flake8 issue --- optuna_dashboard/_importance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optuna_dashboard/_importance.py b/optuna_dashboard/_importance.py index 100679a7..ae721340 100644 --- a/optuna_dashboard/_importance.py +++ b/optuna_dashboard/_importance.py @@ -29,7 +29,7 @@ except Exception as e: try: from optuna.importance import PedAnovaImportanceEvaluator except ImportError: - _logger.warning(f"optuna>=3.6.0 is required for PedAnovaImportanceEvaluator.") + _logger.warning("optuna>=3.6.0 is required for PedAnovaImportanceEvaluator.") PedAnovaImportanceEvaluator = None # type: ignore except Exception as e: _logger.warning(f"Skipping to use PedAnovaImportanceEvaluator due to {e}.") From b6d62ce43074057383dbfe6d7a9358f8d4442203 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 22 Feb 2024 07:58:37 +0100 Subject: [PATCH 3/4] Address c-bata's comment --- optuna_dashboard/_importance.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/optuna_dashboard/_importance.py b/optuna_dashboard/_importance.py index ae721340..7469fa18 100644 --- a/optuna_dashboard/_importance.py +++ b/optuna_dashboard/_importance.py @@ -31,9 +31,6 @@ try: except ImportError: _logger.warning("optuna>=3.6.0 is required for PedAnovaImportanceEvaluator.") PedAnovaImportanceEvaluator = None # type: ignore -except Exception as e: - _logger.warning(f"Skipping to use PedAnovaImportanceEvaluator due to {e}.") - PedAnovaImportanceEvaluator = None # type: ignore if TYPE_CHECKING: From 3efee7438a6a81c20ce16286123c29c32e55afa6 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 22 Feb 2024 08:33:31 +0100 Subject: [PATCH 4/4] Apply formatter * Apply black * Add type ignore to PedAnova import --- optuna_dashboard/_importance.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/optuna_dashboard/_importance.py b/optuna_dashboard/_importance.py index 7469fa18..8aa4bb77 100644 --- a/optuna_dashboard/_importance.py +++ b/optuna_dashboard/_importance.py @@ -27,7 +27,7 @@ except Exception as e: try: - from optuna.importance import PedAnovaImportanceEvaluator + from optuna.importance import PedAnovaImportanceEvaluator # type: ignore[attr-defined] except ImportError: _logger.warning("optuna>=3.6.0 is required for PedAnovaImportanceEvaluator.") PedAnovaImportanceEvaluator = None # type: ignore @@ -73,9 +73,7 @@ def _get_param_importances( ) -> dict[str, float]: if PedAnovaImportanceEvaluator is not None: # TODO(nabenabe0928): We might want to pass baseline_quantile as an argument in the future. - return get_param_importances( - study, target=target, evaluator=PedAnovaImportanceEvaluator() - ) + return get_param_importances(study, target=target, evaluator=PedAnovaImportanceEvaluator()) if FastFanovaImportanceEvaluator is not None: try: