use*_*892 6 python scikit-learn cross-validation text-classification
我有一个问题GridSearchCV:
通过使用这个:
gs_clf = GridSearchCV(pipeline, parameters, n_jobs=-1, cv=6, scoring="f1")
Run Code Online (Sandbox Code Playgroud)
我指定 k 折交叉验证应该与 6 折一起使用,对吗?
所以这意味着我的语料被分成了 6 次训练集和 tet 集。
这是否意味着GridSearchCV我需要使用我的整个语料库,如下所示:
gs_clf = gs_clf.fit(corpus.data, corpus.target)
Run Code Online (Sandbox Code Playgroud)
如果是这样,我将如何从那里获得用于预测方法的训练集?
predictions = gs_clf.predict(??)
Run Code Online (Sandbox Code Playgroud)
我所看到的代码,其中的语料分成测试组,并使用训练集train_test_split,然后X_train并Y_train传递给gs_clf.fit。
但这对我来说没有意义:如果我事先将其拆分为语料库,为什么要在GridSearchCV.
感谢您的一些澄清!!
Azi*_*zim 14
GridSearchCV不是为了衡量模型的性能而设计的,而是为了在训练时优化分类器的超参数。而当你写作时,你gs_clf.fit实际上是在你的整个数据上尝试不同的模型(但不同的折叠)以追求最佳的超参数。例如,如果您有 n 个不同c的 和 m 个不同gamma的 SVM 模型,那么您有 n X m 个模型并且您正在搜索(网格搜索)它们以查看哪个最适合您的数据。gs_clf.best_params_,您可以使用您的测试数据来获得模型的实际性能(例如,准确度、精确度等)。corpus.trainand 的东西corpus.test,你应该corpus.test只在训练完成后保留最后一轮,并且只想测试最终模型。众所周知,在训练模型(应该使用训练数据的地方)或调整超参数(应该使用验证数据的地方)的过程中任何使用测试数据都被认为是作弊并导致不切实际的性能。
| 归档时间: |
|
| 查看次数: |
6061 次 |
| 最近记录: |