sklearn(七):cross-validation:Tuning the hyper-parameters of an estimator

在这里主要记录一下进行hyperparameter选取的两个function,以及参数选取的一些建议:

function

  • GridSearchCV
sklearn.model_selection.GridSearchCV(estimator,param_grid,scoring=None,fit_params=None,iid=True,cv=None,verbose=0,error_score='raise') #仅列出部分参数
#param_grid:为hyperparameter的dictionary,可以是list of dictionary
#scoring:服从不同分布的数据,用于评判hyperparameter好坏的metric不同,在实际中可以选择不同的scoring;
#verbose:int,数字越大,保留的信息越多
#error_score:在选择最优hyperparameter的过程中,可能有些hyperparameter set不能很好拟合,得出score,如果将error_score设为raise,则整个hyperparameter的选取过程会完全中断,而如果将error_score=0,则会将出错的hyperparameter set的score设为0,继续正常进行剩下的选取工作。
#fit_params:estimator的参数dictionary
#iid:=True,则表示数据服从均匀分布
#上述function返回的是一个object,其有atrribute, method,具体参见官网;
#note that:该函数会将所有hyperparameter的组合都进行评估,是一个expensively computational process;

#示例:param_grid
param_grid = [
  {'C': [1, 10, 100, 1000], 'kernel': ['linear']},
  {'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001], 'kernel': ['rbf']},
 ]

GridSearchCV

  • RandomizedSearchCV
sklearn.model_selection.RandomizedSearchCV(estimator,param_distributions,n_iter=10)  #仅列出部分参数
#param_distributions:为hyperparameter dictionary,key为name,value为list of value,或是distributions(scipy.stats.distributions)
#n_iter:要评估的hyperparameter set数量
#其返回的是一个object,有自己的attribute和method

#示例:param_distributions
{'C': scipy.stats.expon(scale=100), 'gamma': scipy.stats.expon(scale=.1),
  'kernel': ['rbf'], 'class_weight':['balanced', None]}

RandomizedSearchCV

参数选取的一些建议

  • 对于服从不同分布的数据可以选取不同的metric,来评估hyperparameter表现的优劣。metric的选择范围,及其各个选项的具体意义参见官网:The scoring parameter: defining model evaluation rules
  • 对于上述所讲的两个function中的scoring参数,可以选择多个metric;
  • 可以将数据标准化,参数的估计,模型的拟合,预测,等动作分装在pipeline中。pipeline
  • 在利用上述两个function进行参数选择之前,要首先将data分为development data以及evaluation data(可用train_test_split()),然后在用development data 去fed上述两个function,用evalutation data去评估各个参数集优劣。
    这里,有点儿小疑惑,上述两个function都有cv选项,即可把data 分为train和test,那么可以用train训练各个hyperparameter下的model,用test去score所得的model,相当于用cross-validation的方式去评估hyperparameter好坏,在这种情况下,我觉得就不用提前将data分为train和test了吧???
  • 通过设置参数n_jobs=-1,实现hyperparameter选取的并行运算;
  • 通过设置参数error_score=0,使得function忽略无法拟合的hyperparameter by setting its score to 0,保证hyperparameter选取继续进行;

最后,还想提一点:
在ensemble model base upon bagging,有些sample不会被抽中,不会出现在train中,可以用这些sample形成测试集,用来评估拟合模型的优劣;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sarah ฅʕ•̫͡•ʔฅ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值