Hyperparameter Tuning return die selben Werte für verschiedene Hyperparameter

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nichtSoGuter
User
Beiträge: 92
Registriert: Mittwoch 13. April 2022, 17:40

Ich möche für die Klassifikation meiner Daten in 5 Klassen mein Xgboost Model tunen (siehe Code).
Dazu verwende ich die Bibliothek optuna.

Code: Alles auswählen

def objective(trial):
     eta = trial.suggest_float("eta",0,0.5)
     max_depth = trial.suggest_int("max_depth",2,32)
     min_child_weight = trial.suggest_float("min_child_weight",0,3)
     reg_alpha = trial.suggest_float("reg_alpha",0,3)
     colsample_bytree = trial.suggest_float("colsample_bytree",0.5,1)
     n_estimators = trial.suggest_int("n_estimators",10, 6000)

     model = xgb.XGBClassifier(eta=eta,n_estimators =n_estimators, max_depth = max_depth,
                               reg_alpha = reg_alpha,min_child_weight=min_child_weight,
                               colsample_bytree=colsample_bytree, use_label_encoder=False,
                               val_metric='mlogloss',seed = 0)
     model.fit(X_train,y_train)
     predictions = model.predict(X_val)
     return accuracy_score(y_true=y_val, y_pred=predictions)
    
study = optuna.create_study(direction = "maximize", pruner=optuna.pruners.HyperbandPruner())
study.optimize(objective, n_trials=100)
leider wird mir ständig für jeden Trial der selbe Wert als accuracy_score (Wert = 0.24242424242424243) returnt, obwohl verschiedene Hyperparameter verwendet werden.
Ich finde aber keinen Fehler im Code.
Könnte mir bitte jemand helfen? Ich sitze schon den ganzen Tag dran.

Vielen Dank im Voraus!
Antworten