【发布时间】:2021-10-02 06:03:01
【问题描述】:
我知道如何使用基本实用功能(例如 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')
....
【问题讨论】:
标签: python scikit-learn cross-validation xgboost