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_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':[1, 10]}
>>> svc = svm.SVC()
>>> clf = GridSearchCV(svc, parameters)
>>> clf.fit(iris.data, iris.target)
GridSearchCV(estimator=SVC(),
param_grid={'C': [1, 10], '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_transform
和 refit=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。
仅在基础估计器支持transform
和refit=True
时可用。
参数 | 说明 |
---|---|
X | indexable, length n_samples 必须满足基础估算器的输入假设。 |