plot_importance objective nthread importance how example python scikit-learn classification analytics xgboost

objective - XGBoost XGBClassifier Predeterminado en Python



xgboost python example (1)

Estoy intentando utilizar el clasificador XGBoosts para clasificar algunos datos binarios. Cuando hago lo más simple y uso los valores predeterminados (como sigue)

clf = xgb.XGBClassifier() metLearn=CalibratedClassifierCV(clf, method=''isotonic'', cv=2) metLearn.fit(train, trainTarget) testPredictions = metLearn.predict(test)

Obtuve resultados de clasificación razonablemente buenos.

Mi siguiente paso fue intentar ajustar mis parámetros. Adivinando de la guía de parámetros en ... https://github.com/dmlc/xgboost/blob/master/doc/parameter.md Quería comenzar desde el valor predeterminado y trabajar desde allí ...

# setup parameters for xgboost param = {} param[''booster''] = ''gbtree'' param[''objective''] = ''binary:logistic'' param["eval_metric"] = "error" param[''eta''] = 0.3 param[''gamma''] = 0 param[''max_depth''] = 6 param[''min_child_weight'']=1 param[''max_delta_step''] = 0 param[''subsample'']= 1 param[''colsample_bytree'']=1 param[''silent''] = 1 param[''seed''] = 0 param[''base_score''] = 0.5 clf = xgb.XGBClassifier(params) metLearn=CalibratedClassifierCV(clf, method=''isotonic'', cv=2) metLearn.fit(train, trainTarget) testPredictions = metLearn.predict(test)

El resultado es que todo se predice que será una de las condiciones y no la otra.

curiosamente si me fijo

params={}

que esperaba darme los mismos incumplimientos que no alimentar ningún parámetro, me ocurre lo mismo

Entonces, ¿alguien sabe cuáles son los valores predeterminados para XGBclassifier? para que pueda comenzar a sintonizar?


Esa no es la forma de configurar los parámetros en xgboost. O bien desea pasar su cuadrícula de param en su función de entrenamiento, como el train xgboost o GridSearchCV de GridSearchCV , o si desea utilizar el método set_params de su set_params . Otra cosa a tener en cuenta es que si está utilizando el wrapper de xgboost para sklearn (es decir, las XGBClassifier() o XGBRegressor() ) los nombres de parámetros utilizados son los mismos que se usan en la propia clase GBM de sklearn (ej: eta -> tasa de aprendizaje). No veo dónde está escondida la documentación exacta para sklearn wrapper, pero el código para esas clases está aquí: https://github.com/dmlc/xgboost/blob/master/python-package/xgboost/sklearn.py

Para su referencia aquí es cómo establecería los parámetros del objeto modelo directamente.

>>> grid = {''max_depth'':10} >>> >>> clf = XGBClassifier() >>> clf.max_depth 3 >>> clf.set_params(**grid) XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=100, nthread=-1, objective=''binary:logistic'', reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=0, silent=True, subsample=1) >>> clf.max_depth 10

EDITAR: Supongo que puede establecer parámetros en la creación del modelo, simplemente no es súper típico para hacerlo ya que la mayoría de las personas de la grilla de búsqueda de alguna manera. Sin embargo, si lo hace, deberá listarlos como parámetros completos o usar ** kwargs. Por ejemplo:

>>> XGBClassifier(max_depth=10) XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=100, nthread=-1, objective=''binary:logistic'', reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=0, silent=True, subsample=1) >>> XGBClassifier(**grid) XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=100, nthread=-1, objective=''binary:logistic'', reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=0, silent=True, subsample=1)

Usar un diccionario como entrada sin ** kwargs establecerá ese parámetro para ser literalmente tu diccionario:

>>> XGBClassifier(grid) XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0, max_depth={''max_depth'': 10}, min_child_weight=1, missing=None, n_estimators=100, nthread=-1, objective=''binary:logistic'', reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=0, silent=True, subsample=1)