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

[ 源码 ]

详尽搜索估计器的指定参数值。

重要的成员被拟合,可以预测。

GridSearchCV实现“拟合”和“得分”方法。如果在所使用的估计器中实现了“predict”,“predict_proba”,“decision_function”,“transform”和“inverse_transform” if the”,则还可以实现它们。

通过在参数网格上进行交叉验证的网格搜索,优化了用于应用这些方法的估计器的参数。

用户指南 中阅读更多内容。

param_grid dict or list of dictionaries
以参数名称( str )作为键,将参数设置列表尝试作为值的字典,或此类字典的列表,在这种情况下,将探索列表中每个字典所跨越的网格。这样可以搜索任何顺序的参数设置。 scoring str, callable, list/tuple or dict, default=None
单个str(请参阅 评分参数:定义模型评估规则 )或可调用项(请参阅 从度量函数定义评分策略 ),用于评估测试集上的预测。

要评估多个指标,请给出(唯一的)字符串列表或以名称为键,可调用项为值的字典。

注意,使用自定义评分器时,每个评分器应返回一个值。返回值列表或数组的度量函数可以包装到多个评分器中,每个评分器都返回一个值。

有关示例,请参阅 指定多个度量进行评估

如果为None,则使用估计器的评分方法。 n_jobs int, default=None
要并行运行的CPU内核数。 None 除非在 joblib.parallel_backend 环境中,否则表示1 。 -1 表示使用所有处理器。有关 更多详细信息,请参见 词汇表

v0.20版中的更改: n_jobs 默认从1更改为None pre_dispatch int, or str, default=n_jobs
控制在并行执行期间分派的CPU内核数。当调度的CPU内核数量超过CPU的处理能力时,减少此数量可能有助于避免内存消耗激增。该参数可以是:

- None,在这种情况下,所有CPU内核都将立即创建并产生,使它进行轻量级和快速运行的任务,以避免因按需生成作业而造成延迟
-int,给出所产生的总CPU内核数的确切数量
-str,根据n_jobs给出表达式,如'2*n_jobs' bool, default=False
如果为True,则按折数返回平均得分,并按每个测试集中的样本数加权。在这种情况下,假定数据在折叠上分布相同,并且最小化的损失是每个样品的总损失,而不是折叠的平均损失。

从版本0.22开始 iid 不推荐使用*:*参数在0.22中不再推荐使用,并将在0.24中删除 int, cross-validation generator or an iterable, default=None
确定交叉验证切分策略。可以输入:

-None,默认使用5折交叉验证
-integer,用于指定在 (Stratified)KFold 中的折叠次数
- CV splitter
-一个输出训练集和测试集切分为索引数组的迭代。

对于integer或None,如果估计器是分类器,并且 y 是二分类或多分类,使用 StratifiedKFold 。在所有其他情况下,使用 KFold

有关可在此处使用的各种交叉验证策略,请参阅 用户指南

在0.22版本中: cv 为“None”时,默认值从3折更改为5折 refit bool, str, or callable, default=True
使用在整个数据集中找到的最优参数重新拟合估计器。

对于多指标评估,这需要是一个表示评分器的 str ,该评分器将为最终重新拟合估计器找到最优参数。

如果在选择最优估计值时除了考虑最大得分外,还需要考虑其他因素,可以将 refit 设置为返回所选 best_index_ 给定 cv_results_ 的函数。在这种情况下, best_estimator_ best_params_ 将根据返回的 best_index_ 进行设置,而 best_score_ 属性将不可用。

重新拟合的估计器在 best_estimator_ 属性上可用,并允许 predict 直接在 GridSearchCV 实例上使用。

同样对于多指标评估, best_index_ best_score_ best_params_ 属性仅在设置 refit 时可用,并且都将根据这个特定的评分器来决定。

请参阅 scoring 参数以了解有关多指标评估的更多信息。

在0.20版中 :添加了对Callable的支持。 verbose integer
控制详细程度:越高,消息越多。 error_score ‘raise’ or numeric, default=np.nan
如果估计器拟合出现错误,将值分配给分数。如果设置为“ raise”,则会引发错误。如果给出数值,则引发FitFailedWarning。此参数不会影响重新拟合步骤,这将总是引发错误。 return_train_score bool, default=False
如果为 False ,则 cv_results_ 属性将不包括训练集分数。计算训练集分数用于了解不同的参数设置如何影响过拟合或欠拟合的权衡。但是,在训练集上计算分数可能在计算上很耗时,并且不严格要求选择产生最优泛化性能的参数。

版本0.19中的新功能。

在版本0.21中 :默认值将 True 更改为 False cv_results_ dict of numpy (masked) ndarrays
可以将键作为列标题和值作为列的字典导入pandas DataFrame

例如下面给定的表
用一个 cv_results_ 字典表示:
注意
'params' 键用于存储所有候选参数的参数设置字典列表。

mean_fit_time std_fit_time mean_score_time std_score_time 的单位都是秒。

对于多指标评估,所有评分器的得分都可以在 cv_results_ 字典中以评分器的名字( '_<scorer_name>' )结尾的键获得,而不是 '_score' 上面显示的。(“ split0_test_precision”,“ mean_train_precision”等) best_estimator_ estimator
搜索选择的估计器,例如,对剩余数据给出最高分(或最小损失是否指定)的估计量。如果设置 refit=False 则不可用。

有关 refit 允许值的更多信息,请参见参数。 best_score_ float
best_estimator的平均交叉验证得分

对于多指标评估,只有在 refit 指定时才存在。

如果 refit 为函数,则此属性不可用。 best_params_ dict
参数设置可使保留数据获得最优结果。

对于多指标评估,只有在 refit 指定时才存在。 best_index_ search.cv_results_['params'][search.best_index_] 的字典给出了最优模型的参数设置,该模型给出最高平均得分( search.best_score_ )。

对于多指标评估,只有在 refit 指定时才存在。 scorer_ function or a dict
在保留的数据上使用评分器功能为模型选择最优参数。

对于多指标评估,此属性保存已验证的 scoring 字典,该字典将评分器键映射到可调用的评分器。 n_splits_ int
交叉验证切分(或折叠、迭代)的数量。 refit_time_ float
用于在整个数据集中重新拟合最优模型的秒数。

仅当 refit 不是False 时才存在。

0.20版中的新功能。

ParameterGrid 生成超参数网格的所有组合。

sklearn.model_selection.train_test_split 用于将数据切分为可用于拟合GridSearchCV实例的开发集和用于最终评估的验证集的实用程序功能。

sklearn.metrics.make_scorer 根据绩效指标或损失函数确定评分器。

所选择的参数是那些保留数据中得分最大的参数,除非传递了一个显式得分,在这种情况下使用它。

如果将 n_jobs 设置为大于1的值,则将为网格中的每个点(而不是 n_jobs 时间)复制数据。如果单个任务所花费的时间很少,那么这样做是为了提高效率,但是如果数据集很大且没有足够的可用内存,则可能会引发错误。在这种情况下,解决方法是设置 pre_dispatch 。然后,仅复制内存 pre_dispatch 多次。 pre_dispatch 的合理值是 2 * n_jobs

>>> from sklearn import svm, datasets
>>> from sklearn.model_selection import GridSearchCV
>>> iris = datasets.load_iris()
>>> parameters = {'kernel':('linear''rbf'), 'C':[110]}
>>> svc = svm.SVC()
>>> clf = GridSearchCV(svc, parameters)
>>> clf.fit(iris.data, iris.target)
GridSearchCV(estimator=SVC(),
             param_grid={'C': [110], 'kernel': ('linear''rbf')})
>>> sorted(clf.cv_results_.keys())
['mean_fit_time''mean_score_time''mean_test_score',...
 'param_C''param_kernel''params',...
 'rank_test_score''split0_test_score',...
 'split2_test_score', ...
 'std_fit_time''std_score_time''std_test_score']
__init__(self,estimator,param_grid,*,scoring = None,n_jobs = None,iid ='deprecated',refit = True,cv = None,verbose = 0,pre_dispatch ='2 * n_jobs',error_score = nan,return_train_score = False )

[ 源码 ]

初始化self。详情可参阅 type(self)的帮助。

decision_function(self, X)

[ 源码 ]

使用找到的最优参数在估计器上调用Decision_function。

仅在 refit=True 且基础估计器支持时 可用 decision_function

array-like of shape (n_samples, n_output) or (n_samples,), default=None
用于分类或回归的X对应的标签;无监督学习为None。 groups array-like of shape (n_samples,), default=None
将数据集切分为训练集或测试集时使用的样本的分组标签。仅与“ Group” cv 实例(例如 GroupKFold )结合使用。 **fit_params dict of str -> object
传递给 fit 估计器方法的参数
get_params(self,deep = True )

[ 源码 ]

获取估计器的参数。