使用网格搜索进行 sklearn 交叉验证

sklearn Crossvalidation with GridSearch

问题是:当我使用 GridSearch 进行拟合时,我需要做一些事情来进行交叉验证过程吗?

我知道的事情:

1.- 我可以设置一个评分函数(但不太清楚该怎么做,至少对我来说是这样)

2.- 如果我没有将 'cv' 参数传递给 GridSearch class,那么它会使用默认的 3 折交叉验证。

GridSearch 对我传递的数据到底做了什么?所有数据都在训练中使用还是在训练和测试数据中拆分?

谢谢!

PD:我的 classifier 似乎过度拟合,因为得分为 100%,但新数据的结果不佳。

请看GridSearchCV documentation。它详细描述了你想要的一切。

GridSearch 将在所有给定的参数值上训练给定的估计器,并找到在训练数据上给出最高(或最低,如果使用损失函数)分数的参数。

GridSearchCV 将在内部对 Cross-validation 做同样的事情。估计器的参数可以在 GridSearchCV 中使用 param_grid 参数提供。

您的查询:

  1. 评分 - 您可以传递任何可用的字符串 on this page (depending on your classifier). Or you can pass your own custom scorer with make_scorer.
  2. CV - 简历相同。您可以为那么多折叠 cross-validation 或 cv 对象传递一个数字。您可以在 this page.
  3. 检查可用的 cv 迭代器