python - 在 k-Fold 交叉验证中,是否为 Sklearn 中的每个折叠启动了一个新模型?
问题描述
我知道如何使用基本实用功能(例如Sklearncross_val_score
或cross_validate
在 Sklearn 中)执行 CV。
但是,我开始使用 XGBoost,所以为了能够使用它的参数,我必须使用CV 拆分器fit
的功能进行交叉验证。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')
....
解决方案
我已经收到了别人的答案。事实证明,在每个折叠中,您都应该初始化一个新模型。
推荐阅读
- android - “bylazy”在Android-Kotlin中的应用是什么?
- excel - Range.Find 在查找失败时产生错误
- javascript - 将数组转换为没有键的对象
- hibernate - 如何使用 CriteriaQuery API 在 ComponentType 中执行 LEFT_JOIN
- python - running 2 while True 一次循环
- python - 在 python 中的列表中查找特定值并获得错误为 TypeError: list indices must be integers or slices, not str
- php - required_if 在 Laravel 中不是大小写
- c# - 尝试解析 json 时出现意外字符
- flutter - Azure DevOps CI / CD 未安装最新的颤振版本
- c - 制作结构对象问题