GridSearchCV - XGBoost - Früh Stoppen

ich versuche zu tun, hyperparemeter Suche mit scikit-learn ist GridSearchCV auf XGBoost. Während gridsearch ich möchte es frühzeitig beenden, da es reduzieren die Suchzeit drastisch, und die (erwartet) bessere Ergebnisse auf meine Vorhersage/regression Aufgabe. Ich bin mit XGBoost über seine Scikit-Learn-API.

    model = xgb.XGBRegressor()
    GridSearchCV(model, paramGrid, verbose=verbose ,fit_params={'early_stopping_rounds':42}, cv=TimeSeriesSplit(n_splits=cv).get_n_splits([trainX, trainY]), n_jobs=n_jobs, iid=iid).fit(trainX,trainY)

Habe ich versucht zu geben, früh zu stoppen Parameter mit fit_params, aber es wirft dann diese Fehlermeldung, die im Grunde ist aufgrund fehlender Validierungsdaten der benötigt wird, um früh zu stoppen:

/opt/anaconda/anaconda3/lib/python3.5/site-packages/xgboost/callback.py in callback(env=XGBoostCallbackEnv(model=<xgboost.core.Booster o...teration=4000, rank=0, evaluation_result_list=[]))
    187         else:
    188             assert env.cvfolds is not None
    189 
    190     def callback(env):
    191         """internal function"""
--> 192         score = env.evaluation_result_list[-1][1]
        score = undefined
        env.evaluation_result_list = []
    193         if len(state) == 0:
    194             init(env)
    195         best_score = state['best_score']
    196         best_iteration = state['best_iteration']

Wie kann ich mich bewerben GridSearch auf XGBoost mit early_stopping_rounds?

Hinweis: Modell ohne gridsearch, auch GridSearch arbeitet ohne 'fit_params={'early_stopping_rounds':42}

  • Was ist der Fehler??? Poste bitte die vollständige stack-trace. Außerdem ist der code zu arbeiten, ohne gridSearch, nur mit XGBRegressor.fit()?
  • ja, code funktioniert ohne gridsearch, funktioniert auch ohne 'fit_params={'early_stopping_rounds':42}'
  • Sie noch nicht aktualisiert, die stack-trace. Was ist der Fehler???
  • problem ist über die Methodik, die nicht unbedingt zu den traceback. ich Frage, "wie zu verwenden gridsearch auf xgboost mit early_stopping_rounds" vollen traceback ist in diesem Fall irrelevant.
  • Wie sollen wir helfen, wenn wir gar nicht wissen, was der Fehler ist. Weder haben Sie genau geschrieben was der Fehler ist, noch den stack trace.
  • Die Antwort von @glao funktioniert in deinem Fall. Sehen, nur, wenn Sie abgedruckt haben, die stack-trace-und error ("IndexError: list index out of range" in diesem Fall), hätte dies gelöst wurde, viel früher. Bitte Lesen Sie stellen

Schreibe einen Kommentar