gpt4 book ai didi

python - 网格搜索CV : How to specify test set?

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:08 25 4
gpt4 key购买 nike

我有一个关于 GridSearchCV 的问题:

通过使用这个:

gs_clf = GridSearchCV(pipeline, parameters, n_jobs=-1, cv=6, scoring="f1")

我指定应该使用 6 折的 k 折交叉验证,对吗?

这意味着我的语料库分为训练集和 tet 集 6 次。

这是否意味着对于 GridSearchCV 我需要使用我的整个语料库,就像这样:

gs_clf = gs_clf.fit(corpus.data, corpus.target)

如果是这样,我将如何从那里获取用于预测方法的训练集?

predictions = gs_clf.predict(??)

我看到代码使用 train_test_split 将语料库分成测试集和训练集,然后将 X_trainY_train 传递给 gs_clf.fit.

但这对我来说没有意义:如果我事先将它拆分为语料库,为什么要在 GridSearchCV 中再次使用交叉验证?

感谢您的澄清!!

最佳答案

  1. GridSearchCV不是为了测量模型的性能而设计的,而是为了在训练时优化分类器的超参数。当你写 gs_clf.fit你实际上是在你的整个数据上尝试不同的模型(但不同的折叠)以追求最好的超参数。例如,如果您有 n 个不同的 c 's 和 m 不同 gamma是 SVM 模型,那么您有 n X m 个模型,您正在搜索(网格搜索)它们以查看哪个模型最适合您的数据。
  2. 当您使用 gs_clf.best_params_ 找到最佳模型时,然后您可以使用您的测试数据来获得模型的实际性能(例如准确度、精确度...)。
  3. 当然,只有到那时才能测试模型。您的测试数据不得与您训练模型所依据的数据有任何重叠。例如,你应该有类似 corpus.train 的东西和 corpus.test , 你应该保留 corpus.test仅当您完成训练并且只想测试最终模型时的最后一轮。

众所周知,在训练模型(应该使用训练数据的地方)或调整超参数(应该使用验证数据的地方)的过程中,任何使用测试数据的行为都被认为是作弊,导致不切实际的结果性能。

关于python - 网格搜索CV : How to specify test set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40546178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com