什么是网格搜索(Grid Search)
Sklearn中寻找最佳的超参数的组合的过程称为网格搜索。
当然我们可以自己写代码寻找最佳超参数,但效率较慢。Sklearn中已经提供了现成的方法供我们使用。
网格搜索的API
sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)
参数:
- estimator:估计器对象
- param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}
- cv:指定几折交叉验证
方法:
- fit:输入训练数据
- score:准确率,是一次性结果
结果分析:
- best_score_:在交叉验证中验证的最好准确率,是N次交叉验证后得到的平均分
- best_estimator_:最好的参数模型
- cv_results_:每次交叉验证后的验证集准确率结果和训练集准确率结果
交叉验证
上面API中还有一个CV参数,就是表示交叉验证。
交叉验证是将训练集数据分为N份,其中一份为验证集。每次更换不用的验证集,对数据进行N次测试,得到N次结果,最后对结果取平均值作为最终结果。以上被称为N折交叉验证。
交叉验证可以让模型更加准确可信。
代码示例
from sklearn import datasets
from sklearn.preprocessing import Sta