在scikit-learn中使用GridSearchCV选择前k个模型

时间:2017-12-13 12:55:19

标签: python machine-learning scikit-learn

是否有一种简单/预先存在的方式在scikit-learn中执行网格搜索,然后自动返回前k个最佳表现模型或自动平均其输出?我打算尝试以这种方式减少过度拟合。我还没有找到与此相关的任何内容。

编辑:为了澄清,我知道sklearn的GridSearch,我正在寻找一个选项来执行网格搜索,然后返回最佳k表现最好的模型或平均值,而不仅仅是返回最佳单曲模型。

1 个答案:

答案 0 :(得分:6)

如果您的GridSearchCV对象符合grid,则可以使用grid.cv_results_获取每个参数的结果。我通常将其加载为pandas DataFrame。

import pandas as pd
results = pd.DataFrame(grid.cv_results_)
results.sort_values(by='rank_test_score', inplace=True)

然后,您可以从params列获取每个模型的参数。例如,我想要第二个最佳参数集:

params_2nd_best = results.loc[1, 'params']
clf_2nd_best = grid.best_estimator_.set_params(**params_2nd_best)