sklearn.model_selection.GridSearchCV

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”,则还可以实现它们。

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

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

参数 说明
estimator estimator object
假定这样做是为了实现scikit-learn估计器接口。估计器需要提供score功能,或者必须通过scoring
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'
iid bool, default=False
如果为True,则按折数返回平均得分,并按每个测试集中的样本数加权。在这种情况下,假定数据在折叠上分布相同,并且最小化的损失是每个样品的总损失,而不是折叠的平均损失。

从版本0.22开始iid不推荐使用*:*参数在0.22中不再推荐使用,并将在0.24中删除
cv 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_timestd_fit_timemean_score_timestd_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']

方法

方法 说明
decision_function(self, X) 使用找到的最优参数在估计器上调用Decision_function。
fit(self, X[, y, groups]) 拟合所有参数组合。
get_params(self[, deep]) 获取此估计器的参数。
inverse_transform(self, Xt) 用找到的最优参数在估计器上调用inverse_transform。
predict(self, X) 使用找到的最优参数在估计器上调用预测。
predict_log_proba(self, X) 使用找到的最优参数在估计器上调用predict_log_proba。
predict_proba(self, X) 使用找到的最优参数在估计器上调用predict_proba。
score(self, X[, y]) 如果估计器已调整,则返回给定数据的分数。
set_params(self, **params) 设置此估计器的参数。
transform(self, X) 使用找到的最优参数在估计器上调用transform。
__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

参数 说明
X indexable, length n_samples
必须满足基础估算器的输入假设。
fit(self,X,y = None,*,groups = None,** fit_params )

[源码]

拟合所有参数组合。

参数 说明
X array-like of shape (n_samples, n_features)
用于训练的向量,其中n_samples是样本数量,n_features是特征数量。
y 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 )

[源码]

获取估计器的参数。

参数 说明
deep bool, default=True
如果为True,则将返回估计器的参数和估计器包含的子对象。
返回值 说明
params mapping of string to any
参数名称映射到其值。
inverse_transform(self, Xt)

[源码]

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

仅在基础估计器实现inverse_transformrefit=True时可用。

参数 说明
Xt indexable, length n_samples
必须满足基础估算器的输入假设。
predict(self, X)

[源码]

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

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

参数 说明
X indexable, length n_samples
必须满足基础估算器的输入假设。
predict_log_proba(self, X)

[源码]

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

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

参数 说明
X indexable, length n_samples
必须满足基础估算器的输入假设。
predict_proba(self, X)

[源码]

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

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

参数 说明
X indexable, length n_samples
必须满足基础估算器的输入假设。
score(self,X,y = None )

[源码]

如果估计器已调整,则返回给定数据的分数。

这将使用scoring提供的位置定义的分数,best_estimator_.score否则使用 方法。

参数 说明
X array-like of shape (n_samples, n_features)
输入数据,其中n_samples是样本数量,n_features是特征数量。
y array-like of shape (n_samples, n_output) or (n_samples,), default=None
用于分类或回归的X对应的标签;无监督学习为None。
返回值 说明
score float
set_params(self, **params)

[源码]

设置估计器的参数。

该方法适用于简单的估计器以及嵌套对象(例如pipelines)。后者具有形式参数 <component>__<parameter>以便可以更新嵌套对象的每个组件。

参数 说明
**params dict
估算器参数。
返回值 说明
self object
估算器实例。
transform(self, X)

[源码]

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

仅在基础估计器支持transformrefit=True时可用。

参数 说明
X indexable, length n_samples
必须满足基础估算器的输入假设。