GridSearchCV
1.导入模块
from sklearn.model_selection import GridSearchCV
2.函数原型
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)
其中cv可以是整数或者交叉验证生成器或一个可迭代器,cv参数对应的输入列举如下:
None:默认参数,函数会使用默认的3折交叉验证
整数k:k折交叉验证。对于分类任务,使用StratifiedKFold(类别平衡,每类的训练集占比一样多,具体可以查看官方文档)。对于其他任务,使用KFold
3.参数
estimator:所使用的分类器,或者pipeline
estimator=RandomForestClassifier(min_samples_split=100,min_samples_leaf=20,
max_depth=8,max_features='sqrt',random_state=10),
param_grid:值为字典或者列表,即需要最优化的参数的取值
param_test1= {'n_estimators':range(10,71,10)}。
param_grid =param_test1
scoring:准确度评价标准,默认None,这时需要使用score函数;或者如 scoring=‘roc_auc’,根据所选模型不同,评价准则不同。字符串(函数名),或是可调用对象,需要其函数签名形如:scorer(estimator, X, y);如果是None,则使用estimator的误差估计函数。
n_jobs:并行数,int:个数,-1:跟CPU核数一致, 1:默认值。
pre_dispatch:指定总共分发的并行任务数。当n_jobs大于1时,数据将在每个运行点进行复制,这可能导致OOM,而设置pre_dispatch参数,则可以预先划分总共的job数量,使数据最多被复制pre_dispatch次
iid:默认True,为True时,默认为各个样本fold概率分布一致,误差估计为所有样本之和,而非各个fold的平均。
refit:默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集。
verbose:日志冗长度,int:冗长度,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出。
4.属性
best_estimator_:效果最好的分类器
best_score_:成员提供优化过程期间观察到的最好的评分
best_params_:描述了已取得最佳结果的参数的组合
best_index_:对应于最佳候选参数设置的索引(cv_results_数组的索引)。
5.方法
decision_function:使用找到的参数最好的分类器调用decision_function。
fit(X, y=None, groups=None, **fit_params):训练
get_params(deep=True):获取这个估计器的参数。
predict(X):用找到的最佳参数调用预估器。(直接预测每个样本属于哪一个类别)
predict_log_proda(X):用找到的最佳参数调用预估器。(得到每个测试集样本在每一个类别的得分取log情况)
predict_proba(X):用找到的最佳参数调用预估器。(得到每个测试集样本在每一个类别的得分情况)
score(X, y=None):返回给定数据上的得分,如果预估器已经选出最优的分类器。
transform(X):调用最优分类器进行对X的转换。