我知道如何在Sklearn中使用cross_val_score
或cross_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')
....
我已经从别人那里得到了答案。结果是,在每个折叠中,应该初始化一个新模型。