网格搜索
对给定参数进行组合,用某标准进行评价,只适合小数据集
参数
estimator:一个学习器对象,它必须有.fit方法用于学习,.predict方法用于预测,.score方法用于评分
param_grid:字典或者字典的列表,每个字典是学习器的一个参数,key是参数名,value是备选参数序列
scoring:评分函数,可以是一个字符串,或一个可调用对象,或者None
如果是None,使用学习器的.score方法,
如果是字符串,可以为如下值:
accuracy:用 metrics.accuracy_score 评分函数
average_precision:用 metrics.average_precision_score 评分函数
f1系列:用 metrics.f1_score 评分函数
f1:用于二分类
f1_micro:micro_averaged
f1_macro:macro_averaged
f1_weighted:weighted average
f1_samples:by multilabel sample
log_loss:用 metrics.log_loss 评分函数
precision:用 metrics.precision_score 评分函数,具体形式类似f1系列
recall:用 metrics.recall_score 评分函数,具体形式类似f1系列
roc_auc:用的是 metrics.roc_auc_score 评分函数
adjusted_rand_score:
mean_absolute_error:
mean_squared_error:
median_absolute_error:
r2:
fit_params:字典形式,用于给学习器的fit传递参数
n_jobs:并行性,默认为-1或None,表示派发任务到所有计算机的cpu上
iid:样本独立同分布,bool值
refit:bool值,如果为True,表示在参数优化之后,使用整个数据集来重新训练该最优的estimator
cv:一个整数,k折交叉生成器,一个迭代器,或者None
如果为None,使用3折交叉验证
如果为整数k,使用k这交叉验证
如果为k折交叉验证生成器
迭代器
verbose:整数,控制输出日志的内容,该值越大,输出越多的内容
pre_dispatch:整数或者字符串,控制并行执行时分发的总的任务量
error_score:
return_train_score:
属性
grid_scores_:命名元组组成的列表,列表中每个元素代表参数组合的得分
best_estimator_:一个学习器对象,代表最后的最优学习器
best_score_:最佳学习器的得分
best_params_:最佳参数组合
方法
fit:执行参数优化
predict:使用学习到的最佳学习器预测数据
predict_log_proba(x):使用最佳学习器来预测属于每个类别的概率的对数值
predict_proba(x):使用最佳学习器来预测属于每个类别的概率
score:最佳学习器的评分
示例代码
随机搜索
随机搜索的原理和网格搜索是一致的,只是随机搜索在取参数值时是随机取值,其主要解决以下问题
1. 参数很多
2. 参数取值是连续的,或者参数取值范围很大,或者参数可取值非常多
随机取值其实不是完全随机,如根据参数取值的分布进行采样,其实也可以自己定义
参数
参数与gridsearchCV大致相同,简单解释下
param_distributions:相当于上面的param_grid,只是字典的值是个分布,通常使用scipy.stats模块提供的分布类,如 scipy.expon 指数分布,scipy.gamma gamma分布,scipy.uniform 均匀分布等
n_iter:整数,指定每个参数采样的数量,通常该值越大,参数优化效果越好,但计算量也越大
属性
cv_results_:不同参数组合的得分
best_params_,best_score_ 等
示例代码