如何在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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