我真的建议不要使用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