如何在xgboost.XGBClassifier中同时使用自定义eval_metric和内置指标

时间:2019-04-16 15:06:12

标签: xgboost evaluation

你好!

我正在尝试组合由一个自定义eval函数和多个内置eval函数组成的eval_metrics列表。

当我使用内置函数列表时,一切正常:

model.fit(
    X_train_inner,
    y_train_inner,
    early_stopping_rounds=20,
    eval_metric = ["error", "logloss", "map"],
    eval_set=[(X_test_inner, y_test_inner)])

此外,当我自己使用自定义函数时,一切正常:

model.fit(
    X_train_inner,
    y_train_inner,
    early_stopping_rounds=20,
    eval_metric = custom_f1_eval_function,
    eval_set=[(X_test_inner, y_test_inner)])

但是如何将自定义函数和内置函数传递给eval_metric参数?

谢谢!

1 个答案:

答案 0 :(得分:0)

https://github.com/dmlc/xgboost/issues/1125

def auc_copc(preds, dtrain):
  preds = 1.0 / (1.0 + np.exp(-preds))
  labels = dtrain.get_label()
  auc = roc_auc_score(labels, preds)
  copc = np.sum(labels) / np.sum(preds)
  return [('auc', auc), ('copc', copc)]