有没有简单的方法来进行网格搜索,而无需在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