在k-Fold交叉验证中,是否为Sklearn中的每个fold启动一个新的模型?



我知道如何在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')
....

我已经从别人那里得到了答案。结果是,在每个折叠中,应该初始化一个新模型。

相关内容

最新更新