Python-sklearn包中自动调参方法-网格搜索GridSearchCV

sklearn包中自动调参方法-网格搜索GridSearchCV

一、GridSearchCV主要作用及函数参数
GridSearchCV:作用是在指定的范围内可以自动调参,只需将参数输入即可得到最优化的结果和参数。相对于人工调参更省时省力,相对于for循环方法更简洁灵活,不易出错。

from sklearn.model_selection import GridSearchCV
class sklearn.model_selection.GridSearchCV(
estimator, param_grid, scoring=None, fit_params=None, 
n_jobs=1, iid=True, refit=True, cv=None, verbose=0, 
pre_dispatch='2*n_jobs', error_score='raise', return_train_score=True)

参数释义:
estimator:所使用分类器
param_grid:值为字典或者列表,即需要最优化的参数的取值
scoring:准确度评价标准,默认为None,根据所选模型不同,评价准则不同,如可以选择scoring='accuracy’或者’roc_auc’等
cv:交叉验证参数,默认None(三折交叉验证,即fold数量为3),也可以是yield训练/测试数据的生成器
refit:默认为True,即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集
iid:默认为True,即默认个个样本fold概率分布一直,误差估计为所有样本的和,而非各个fold的平均
verbose:日志冗长度,int:
若冗长度为0,不输出训练过程;
若冗长度为1,偶尔输出(一般设置为1);
若冗长度>1,对每个子模型都输出
n_jobs:并行数,一般设置为-1
pre_dispatch:总共分发的并行任务数,当n_jobs大于1时,数据将在每个运行点进行复制,可能会导致OOM(内存溢出)。通过设置pre_dispatch参数,可以预先划分总共的job数量,使数据最多被复制pre_dispatch次

二、GridSearchCV常用方法及属性
grid.fit():运行网格搜索
grid.score():运行网格搜索后模型得分
grid_scores_:给出不同参数情况下的评价结果
best_params_:描述已取得最佳结果的参数的组合
best_score_:提供优化过程期间观察到的最好评分

三、举例

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV
#GradientBoostingClassifier模型
GBC = GradientBoostingClassifier()
gb_param_grid = {'loss' : ["deviance"],
              'n_estimators' : [100,200,300],
              'learning_rate': [0.1, 0.05, 0.01],
              'max_depth': [4, 8],
              'min_samples_leaf': [100,150],
              'max_features': [0.3, 0.1] 
              }
modelgsGBC = GridSearchCV(GBC,param_grid = gb_param_grid, cv=kfold, 
                                     scoring="accuracy", n_jobs= -1, verbose = 1)
modelgsGBC.fit(experData_X,experData_y)

整个过程请参考:如何挤进Kaggle平台Titanic生存率预测项目TOP3%

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章