如何在Python中为xgboost编写自定义评估指标?

我想在Python中为xgboost添加kappa评估指标。我在理解如何将Python函数与xgboost连接上遇到了困难。

根据xgboost的文档,“用户可以添加多个评估指标,对于Python用户,请记住将指标作为参数对的列表传递,而不是映射,这样后面的‘eval_metric’就不会覆盖前面的。”

这个问题在xgboost的GitHub页面上已经针对R语言提出,但对于Python还没有解决方案。

例如,如果kappa函数是这样的:

def kappa(preds, y):    # 执行kappa计算    return score

我该如何在xgboost中实现它呢?在eval_metric参数中指定'kappa'字符串会导致XGBoostError: unknown evaluation metric type: kappa错误。

同样,指定kappa方法对象会导致XGBoostError: unknown evaluation metric type: <function kappa at 0x7fbef4b03488>错误。

如何在Python中使用xgboost的自定义评估指标?


回答:

将你的方法改为:

def kappa(preds, y):    # 执行kappa计算    return 'kappa', score

并使用feval参数:

bst = xgb.train(params, dtrain, num_rounds, watchlist, feval=kappa, maximize=False)

在编写自定义评估指标时,请记住设置maximize参数。将其设置为true意味着算法在评估指标得分更高时表现更好。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注