Gridsearch 和 Kfold 中默认的 CV 有什么区别
What is the difference between the default CV in Gridsearch and Kfold
我想知道,在 sklearn 中的 GridSearchCV 方法中实现的默认交叉验证与与其一起使用的 Kfold 方法有什么区别,如以下代码所示:
不使用 Kfold:
clf = GridSearchCV(estimator=model, param_grid=parameters, cv=10, scoring='f1_macro')
clf = clf.fit(xOri, yOri)
使用 Kfold:
NUM_TRIALS = 5
for i in range(NUM_TRIALS):
cv = KFold(n_splits=10, shuffle=True, random_state=i)
clf = GridSearchCV(estimator=model, param_grid=parameters, cv=cv, scoring='f1_macro')
clf = clf.fit(xOri, yOri)
正如我从手册中了解到的那样,它们都将数据分成 10 部分,9 部分用于训练,1 部分用于验证,但在使用 Kfold 的示例中......它进行了 5 次采样过程(NUM_TRIALS = 5
) 并且每次在拆分为 10 个部分之前对数据进行洗牌。我对吗?
看起来你是对的,是的。
GridSearchCV 使用 KFold 或 StratifiedKFold,具体取决于您的模型是用于回归 (KFold) 还是分类(然后使用 StratifiedKFold)。
因为我不知道你的数据是什么样的,所以我不能确定在这种情况下使用了什么。
http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
但是您上面的代码将使用不同的随机种子重复 KFold 验证 5 次。
这是否会产生有意义的不同数据拆分?不确定。
我想知道,在 sklearn 中的 GridSearchCV 方法中实现的默认交叉验证与与其一起使用的 Kfold 方法有什么区别,如以下代码所示:
不使用 Kfold:
clf = GridSearchCV(estimator=model, param_grid=parameters, cv=10, scoring='f1_macro')
clf = clf.fit(xOri, yOri)
使用 Kfold:
NUM_TRIALS = 5
for i in range(NUM_TRIALS):
cv = KFold(n_splits=10, shuffle=True, random_state=i)
clf = GridSearchCV(estimator=model, param_grid=parameters, cv=cv, scoring='f1_macro')
clf = clf.fit(xOri, yOri)
正如我从手册中了解到的那样,它们都将数据分成 10 部分,9 部分用于训练,1 部分用于验证,但在使用 Kfold 的示例中......它进行了 5 次采样过程(NUM_TRIALS = 5
) 并且每次在拆分为 10 个部分之前对数据进行洗牌。我对吗?
看起来你是对的,是的。
GridSearchCV 使用 KFold 或 StratifiedKFold,具体取决于您的模型是用于回归 (KFold) 还是分类(然后使用 StratifiedKFold)。
因为我不知道你的数据是什么样的,所以我不能确定在这种情况下使用了什么。
http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
但是您上面的代码将使用不同的随机种子重复 KFold 验证 5 次。
这是否会产生有意义的不同数据拆分?不确定。