如何解决在 k-Fold 交叉验证中,是否为 Sklearn 中的每个折叠启动了一个新模型?
我知道如何使用 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,y):
model.fit(X[train_idx],eval_metric='rmsle')
....
解决方法
我已经收到了其他人的答复。事实证明,在每个折叠中,您应该初始化一个新模型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。