网格搜索调参
网格搜索是给模型的每个参数设定一组可能的值,通过穷举各种参数组合,使用交叉验证确定最优的一组。
from sklearn.model_selection import GridSearchCV
GridSearchCV的重要参数,按顺序依次
estimator:所使用的分类器clf,或者管道pipeline
param_grid:需要调优的参数取值范围,为字典或列表形式
scoring:评价标准,比如准确度“accuarcy”
cv:指定交叉验证的折数,可以是由数据集划分函数得到的生成器
n_jobs:并行数,一般设为-1,表示与CPU核数一样
举例:
#网格搜索,寻得随机森林n_estimators的最优参数值
clf=RandomForestClassifier(n_jobs=-1)
param_grid={'clf__n_estimators':range(500,2001,500)} #注意标签加上clf__,参数范围从500-2000,不包括2001,步长是500
pipeline_rf=Pipeline([('clf',clf)])
#StratifiedKFold是分层采样进行的交叉验证,random_state=0是一个固定的数,表示运行多次得到的划分将是固定的
grid_search=GridSearchCV(pipeline_knn,param_grid=param_grid,scoring='accuracy',cv=StratifiedKFold(n_splits=10,random_state=0))
grid_search.fit(x,y) #运行网格搜索
print(grid_search.grid_scores_) #所有参数下的结果
print(grid_search.best_score_) #获得最好结果的评分
print(grid_search.best_params_) #最好结果下的参数组合n_estimators=1000