GridSearchCV

(一)网格搜索: GridSearchCV:

 

    网格搜索,搜索的是参数,即在指定的参数范围内,按步长依次调整参数,利用调整的参数训练学习器,从所有的参数中找到在验证集上精度最高的参数

   要求遍历所有可能参数的组合,非常耗时

交叉验证

  将训练数据集划分为K份,K一般为10
· 依次取其中一份为验证集,其余为训练集训练分类器,测试分类器在验证集上的精度 
· 取K次实验的平均精度为该分类器的平均精

1.分类器使用 xgboos  clf1 = xgb.XGBClassifier()

2.#设定网格搜索的xgboost参数搜索范围,值搜索XGBoost的主要6个参数
param_dist = {
'n_estimators':range(80,200,4),
'max_depth':range(2,15,1),
'learning_rate':np.linspace(0.01,2,20),
'subsample':np.linspace(0.7,0.9,20),
'colsample_bytree':np.linspace(0.5,0.98,10),
'min_child_weight':range(1,9,1)
}

#GridSearchCV参数说明,clf1设置训练的学习器
#param_dist字典类型,放入参数搜索范围
#scoring = 'neg_log_loss',精度评价方式设定为“neg_log_loss“
#n_iter=300,训练300次,数值越大,获得的参数精度越大,但是搜索时间越长
#n_jobs = -1,使用所有的CPU进行训练,默认为1,使用1个CPU
3. grid = GridSearchCV(clf1,param_dist,cv = 3,scoring = 'neg_log_loss',n_iter=300,n_jobs = -1)
4. 在训练集上训练   grid.fit(traindata,trainlabel)
5.返回最优的训练器  best_estimator = grid.best_estimator_
6.输出最优训练器的精度 grid.best_score_
(二)随机搜索:randomizedSearchCV:

对于搜索范围是distribution的超参数,根据给定的distribution随机采样;

对于搜索范围是list的超参数,在给定的list中等概率采样;

对a、b两步中得到的n_iter组采样结果,进行遍历。

如果给定的搜索范围均为list,则不放回抽样n_iter次。

grid = RandomizedSearchCV(clf1,param_dist,cv = 3,scoring = 'neg_log_loss',n_iter=300,n_jobs = -1)

#在训练集上训练
grid.fit(traindata,trainlabel)
#返回最优的训练器
grid.best_estimator_
#输出最优训练器的精度 grid.best_score_

posted on 2019-07-12 10:21  happygril3  阅读(403)  评论(0)    收藏  举报

导航