带有 XGBoost 的 Sklearn GridSearchCV - 可能不使用参数 cv

Posted

技术标签:

【中文标题】带有 XGBoost 的 Sklearn GridSearchCV - 可能不使用参数 cv【英文标题】:Sklearn GridSearchCV with XGBoost - parameters cv might not be used 【发布时间】:2021-08-22 13:08:18 【问题描述】:

我有一个元组列表,其中一个元组具有结构(train_ids,test_ids)。该列表旨在用作带有 XGBoost 的 SKlearns GridSearchCV 方法的“cv”参数。但是,在训练期间,我遇到了以下错误:

Parameters  "cv"  might not be used. 

This may not be accurate due to some parameters are only used in language binding
but passed down to XGBoost core. Or some parameters are not used but slip through
this verifciation.

XGBoost 是否支持 cv 参数?如果没有,是否有任何变通方法或其他常见做法来处理时间序列分类的 CV?

【问题讨论】:

请提供一个最小的例子。您应该将cv 设置为GridSearchCV 的参数,而不是xgboost 的参数...? 【参考方案1】:

看起来您已将元组列表作为参数传递到GridSearchCV 的参数网格中。但是,它们随后会被传递给不支持此类参数的XGBClassifier

您必须将列表作为 cv 参数传递给 GridSearchCV,如下所示:

import xgboost
from sklearn.model_selection import GridSearchCV


clf = xgboost.XGBClassifier()

gridsearch = GridSearchCV(
    estimator=clf, 
    param_grid=...,  # here only hyperparameters of XGBClassifier
    cv=[(train_ids, test_ids)]  # <-- here your list of indices
)

这就是它的完成方式,应该可以解决您的问题。

【讨论】:

以上是关于带有 XGBoost 的 Sklearn GridSearchCV - 可能不使用参数 cv的主要内容,如果未能解决你的问题,请参考以下文章

带有“early_stopping_rounds”的 xgboost 的 cross_val_score 返回“IndexError”

SKLearn 包装器中 XGBoost 的决策函数

XGBoost实战:sklearn机器学习调用示例

为啥 xgboost.cv 和 sklearn.cross_val_score 给出不同的结果?

XGBoost使用教程(与sklearn一起使用)二

调用 XGBoost .fit 后的 Python sklearn NotFittedError