zl程序教程

您现在的位置是:首页 >  其它

当前栏目

sklearn.model_selection.GridSearchCV

model sklearn Selection
2023-09-27 14:25:29 时间


\(sklearn\) 官网中的 GridSearchCV

机器学习模型中,需要人工选择的参数称为超参数

\(GridSearchCV\) 可以拆分为两部分\(GridSearch、CV\),即网格搜索、交叉验证\(GridSearch\) 是一种调参手段,穷举搜索,即在所有候选的参数中,通过循环遍历每一种可能,选择最好的参数。



1. GridSearchCV 简介

\(GridSearchCV\) 的意义是自动调参,将参数输进去,给出最优化结果和参数。缺点是适用小数据集(小于 \(10000\)),数据量比较大的时候,使用快速调优方法——坐标下降。它其实是一种贪心算法:拿对当前模型影响最大的参数调优,直到最优化;再拿下一个影响最大的参数调优,如此下去,直到所有的参数调整完毕。该方法的缺点是调参结果可能是局部最优不是全局最优。但是省时省力,巨大的优势面前,可以一试。



2. GridSearchCV 参数

class sklearn.model_selection.GridSearchCV(estimator, param_grid, *, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False)

参数:

  • estimator选择使用的模型,并且传入除需要确定最佳的参数外的其他参数。每个分类器都需要一个 \(scoring\) 参数,或者 \(score\) 方法,如:estimator = GradientBoostingRegressor()

  • param_grid调参的参数列表或字典。\(GradientBoostingRegressor()\) 分类模型中:

    param_grid = {'loss': ['squared_error', 'absolute_error', 'huber', 'quantile'], 
                  'n_estimators':[10, 50, 100], 
                  'learning_rate': [0.05, 0.1, 0.15]}
    

    这样就有 \(36\) 种超参数组合来进行网格搜索,选择一个拟合分数最好的超平面系数。

  • scoring=None模型评价标准\(scoring = None\) 表示使用 \(estimator\) 的误差估计函数。

  • n_jobs=None并行数。\(n\_jobs=None\) 表示默认值取 \(1\)\(n\_jobs=-1\) 表示与 \(CPU\) 核数一致。

  • refit=True:默认 \(True\),表示程序以交叉验证得到的最佳参数后,用最佳参数再次 \(fit\) 一遍全部数据集。作为最终性能评估的最佳模型参数。

  • cv = None交叉验证参数\(cv = None\) 表示默认值取 \(3\),使用三折交叉验证。



3. 常用方法、属性

grid.fit():运行网格搜索。

best_params_:获得交叉检验模型得出的最优参数

best_score_:获得交叉检验模型得出的最优得分

cv_results_:不同参数下模型的交叉检验结果

best_estimator_:获得交叉检验模型得出的最优模型对象