有没有简单的方法来进行网格搜索,而无需在python中进行交叉验证?

在scikit-

learn中有一个绝对有用的GridSearchCV类可以进行网格搜索和交叉验证,但是我不想交叉验证。我想进行网格搜索而不进行交叉验证,并使用整个数据进行训练。更具体地说,我需要在网格搜索期间使用“

oob分数”评估RandomForestClassifier制作的模型。有简单的方法吗?还是我一个人上课?

要点是

  • 我想用简单的方法进行网格搜索。
  • 我不想交叉验证。
  • 我需要使用整个数据来训练。(不想分开来训练数据和测试数据)
  • 在网格搜索期间,我需要使用oob分数进行评估。

回答:

我真的建议不要使用OOB评估模型,但是了解如何在外部运行网格搜索GridSearchCV()(这是非常有用的(我经常这样做,这样我可以保存最佳网格的CV预测值以便于模型堆叠)非常有用)。我认为最简单的方法是通过创建参数网格,ParameterGrid()然后循环遍历所有参数集。例如,假设您有一个名为“

grid”的网格字典,以及一个名为“ rf”的RF模型对象,则可以执行以下操作:

for g in ParameterGrid(grid):

rf.set_params(**g)

rf.fit(X,y)

# save if best

if rf.oob_score_ > best_score:

best_score = rf.oob_score_

best_grid = g

print "OOB: %0.5f" % best_score

print "Grid:", best_grid

以上是 有没有简单的方法来进行网格搜索,而无需在python中进行交叉验证? 的全部内容, 来源链接: utcz.com/qa/411610.html

回到顶部