【问题标题】:In k-Fold cross-validation, is a new model initiated for each fold in Sklearn?在 k-Fold 交叉验证中,是否为 Sklearn 中的每个折叠启动了一个新模型?
【发布时间】:2021-10-02 06:03:01
【问题描述】:

我知道如何使用基本实用功能(例如 Sklearn 中的 cross_val_scorecross_validate)执行 CV。

但是,我开始使用 XGBoost,所以为了能够使用它的 fit 参数,我必须使用 CV 拆分器的 split 函数进行交叉验证。我的问题是,我是否应该像这样为每个折叠初始化一个新模型:

from sklearn.model_selection import KFold
import xgboost as xgb

cv = KFold(5)

for train_idx, test_idx in cv.split(X, y):
    model = xgb.XGBRegressor()
    model.fit(X[train_idx], y[train_idx], eval_metric='rmsle')
    ....

或者像这样在 for 循环之外初始化一个模型:

cv = KFold(5)

model = xgb.XGBRegressor()

for train_idx, test_idx in cv.split(X, y):
    model.fit(X[train_idx], y[train_idx], eval_metric='rmsle')
    ....

【问题讨论】:

    标签: python scikit-learn cross-validation xgboost


    【解决方案1】:

    我已经收到其他人的答复。事实证明,在每一折中,您应该初始化一个新模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 2018-09-11
      • 2019-01-14
      • 2015-09-26
      • 1970-01-01
      • 2016-10-21
      • 2019-03-09
      相关资源
      最近更新 更多