Оптимизация гиперпараметров Optuna во вложенном цикле CV предполагает идентичные гиперпараметры. ⇐ Python
Оптимизация гиперпараметров Optuna во вложенном цикле CV предполагает идентичные гиперпараметры.
Я выполняю вложенное CV, при этом Optuna работает во внутреннем цикле, а лучшая модель затем оценивается на оставшихся данных внешнего цикла.
Однако Optuna предлагает одни и те же параметры для всех разделений CV, несмотря на разные данные.
я = 0 исследования = {} для external_train_index, external_test_index в external_cv.split(x, y): x_train_outer, x_test_outer = x.iloc[outer_train_index, :], x.iloc[outer_test_index, :] y_train_outer, y_test_outer = y.iloc[outer_train_index], y.iloc[outer_test_index] я += 1 исследования = optuna.create_study(direction='maximize', Study_name=i) исследования.optimize(лямбда-испытание: цель(trial, [...], x_train_outer, y_train_outer), n_trials=500) best_params = исследования.best_params model.set_params(**best_params) best_models.append(модель) [...] best_models возвращает список идентичных моделей.
Вот моя целевая функция:
def Objective(trial, [...], классификатор, x, y): Internal_cv = StratifiedKFold (n_splits=5, shuffle=True, random_state=0) classifier_obj = классификатор (пробная версия) баллы = cross_validate( оценщик = classifier_obj, Х=х, у=у, cv=inner_cv, скоринг = mcc_scorer, n_jobs=-1 ) вернуть результаты['test_score'].mean()
Я выполняю вложенное CV, при этом Optuna работает во внутреннем цикле, а лучшая модель затем оценивается на оставшихся данных внешнего цикла.
Однако Optuna предлагает одни и те же параметры для всех разделений CV, несмотря на разные данные.
я = 0 исследования = {} для external_train_index, external_test_index в external_cv.split(x, y): x_train_outer, x_test_outer = x.iloc[outer_train_index, :], x.iloc[outer_test_index, :] y_train_outer, y_test_outer = y.iloc[outer_train_index], y.iloc[outer_test_index] я += 1 исследования = optuna.create_study(direction='maximize', Study_name=i) исследования.optimize(лямбда-испытание: цель(trial, [...], x_train_outer, y_train_outer), n_trials=500) best_params = исследования.best_params model.set_params(**best_params) best_models.append(модель) [...] best_models возвращает список идентичных моделей.
Вот моя целевая функция:
def Objective(trial, [...], классификатор, x, y): Internal_cv = StratifiedKFold (n_splits=5, shuffle=True, random_state=0) classifier_obj = классификатор (пробная версия) баллы = cross_validate( оценщик = classifier_obj, Х=х, у=у, cv=inner_cv, скоринг = mcc_scorer, n_jobs=-1 ) вернуть результаты['test_score'].mean()
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Все гиперпараметры, которые приносят строки вместо их фактических типов данных
Anonymous » » в форуме Python - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Все гиперпараметры, которые приносят строки вместо их фактических типов данных
Anonymous » » в форуме Python - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-