HalvingGridSearchCV#

class sklearn.model_selection.HalvingGridSearchCV(estimator, param_grid, *, factor=3, resource='n_samples', max_resources='auto', min_resources='exhaust', aggressive_elimination=False, cv=5, scoring=None, refit=True, error_score=nan, return_train_score=True, random_state=None, n_jobs=None, verbose=0)#

搜索指定的参数值,使用连续减半的方法。

该搜索策略从评估所有候选者开始,使用少量的资源,并迭代地选择最佳候选者,使用越来越多的资源。

更多信息请参阅 用户指南

Note

该估计器目前仍处于 实验性 阶段:预测和API可能会在没有任何弃用周期的情况下发生变化。要使用它,您需要显式导入 enable_halving_search_cv

>>> # 显式要求此实验性功能
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> # 现在可以从 model_selection 正常导入
>>> from sklearn.model_selection import HalvingGridSearchCV
Parameters:
estimator估计器对象

这应该实现 scikit-learn 估计器接口。 估计器需要提供一个 score 函数, 或者必须传递 scoring

param_grid字典或字典列表

以参数名称(字符串)为键,以要尝试的参数设置列表为值的字典,或者是一个包含此类字典的列表,在这种情况下,将探索列表中每个字典所跨越的网格。这使得可以搜索任何参数设置序列。

factor整数或浮点数,默认=3

‘减半’ 参数,它决定了每次迭代中选择的候选者比例。例如, factor=3 意味着只选择三分之一的候选者。

resource :``’n_samples’`` 或字符串,默认=’n_samples’

定义每次迭代中增加的资源。默认情况下,资源是样本数量。它也可以设置为基本估计器的任何接受正整数值的参数,例如梯度提升估计器的 ‘n_iterations’ 或 ‘n_estimators’。在这种情况下, max_resources 不能是 ‘auto’,必须显式设置。

max_resources整数,默认=’auto’

任何候选者在给定迭代中允许使用的最大资源量。默认情况下,当 resource='n_samples' 时,这被设置为 n_samples ,否则会引发错误。

min_resources{‘exhaust’, ‘smallest’} 或整数,默认=’exhaust’

任何候选者在给定迭代中允许使用的最小资源量。等效地,这定义了在第一次迭代中为每个候选者分配的资源量 r0

  • ‘smallest’ 是一种启发式方法,将 r0 设置为一个小值:

    • resource='n_samples' 时,对于回归问题为 n_splits * 2

    • resource='n_samples' 时,对于分类问题为 n_classes * n_splits * 2

    • resource != 'n_samples' 时为 1

  • ‘exhaust’ 将设置 r0 ,使得 最后一次 迭代使用尽可能多的资源。即,最后一次迭代将使用小于 max_resources 的最大值,该值是 min_resourcesfactor 的倍数。通常,使用 ‘exhaust’ 会得到更准确的估计器,但稍微耗时一些。

注意,每次迭代使用的资源量始终是 min_resources 的倍数。

aggressive_elimination布尔值,默认=False

这仅在资源不足以在最后一次迭代后将剩余候选者减少到最多 factor 的情况下相关。如果 True ,则搜索过程将“重放”第一次迭代,直到候选者数量足够小为止。默认情况下为 False ,这意味着最后一次迭代可能会评估超过 factor 的候选者。详情请参阅 候选参数的积极消除

cv整数,交叉验证生成器或可迭代对象,默认=5

确定交叉验证拆分策略。 cv 的可能输入包括:

  • 整数,指定 (Stratified)KFold 中的折数,

  • CV splitter

  • 一个可迭代对象,生成 (train, test) 拆分作为索引数组。

对于整数/None 输入,如果估计器是分类器且 y 是二分类或多分类,则使用 StratifiedKFold 。在所有其他情况下,使用 KFold 。这些拆分器实例化时带有 shuffle=False ,因此拆分在多次调用中将保持一致。

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

Note

由于实现细节, cv 生成的折必须在多次调用 cv.split() 中保持一致。对于内置的 scikit-learn 迭代器,可以通过禁用洗牌 ( shuffle=False ) 或将 cvrandom_state 参数设置为整数来实现。

scoring字符串,可调用对象或 None,默认=None

一个字符串(参见 scoring_parameter )或一个可调用对象(参见 从指标函数定义您的评分策略 ),用于评估测试集上的预测。如果为 None,则使用估计器的 score 方法。

refit布尔值,默认=True

如果为 True,则使用在全数据集上找到的最佳参数重新拟合一个估计器。

重新拟合的估计器可通过 best_estimator_ 属性获得,并允许直接在此 HalvingGridSearchCV 实例上使用 predict

error_score‘raise’ 或数值

在估计器拟合过程中发生错误时分配给分数的值。如果设置为 ‘raise’,则引发错误。如果给定数值,则引发 FitFailedWarning。此参数不影响重新拟合步骤,重新拟合步骤将始终引发错误。默认值为 np.nan

return_train_score布尔值,默认=False

如果为 False ,则 cv_results_ 属性将不包含训练分数。 计算训练分数用于了解不同参数设置如何影响过拟合/欠拟合的权衡。然而,计算训练集上的分数在计算上可能是昂贵的,并且严格来说不是选择产生最佳泛化性能的参数所必需的。

random_state整数,RandomState 实例或 None,默认=None

用于在 resources != 'n_samples' 时对数据集进行子采样的伪随机数生成器状态。否则忽略。为多个函数调用传递一个整数以获得可重复的输出。参见 Glossary

n_jobs整数或 None,默认=None

并行运行的作业数。 None 意味着 1,除非在 joblib.parallel_backend 上下文中。 -1 意味着使用所有处理器。参见 Glossary 了解更多详情。

verbose整数

控制详细程度:数值越高,消息越多。

Attributes:
n_resources_整数列表

每次迭代中使用的资源量。

n_candidates_整数列表

每次迭代中评估的候选参数数量。

n_remaining_candidates_整数

最后一次迭代后剩余的候选参数数量。它对应于 ceil(n_candidates[-1] / factor)

max_resources_整数

任何候选者在给定迭代中允许使用的最大资源量。注意,由于每次迭代中使用的资源量必须是 min_resources_ 的倍数,最后一次迭代中实际使用的资源量可能小于 max_resources_

min_resources_整数

第一次迭代中为每个候选者分配的资源量。

n_iterations_整数

实际运行的迭代次数。如果 aggressive_eliminationTrue ,则等于 n_required_iterations_ 。否则,等于 min(n_possible_iterations_, n_required_iterations_)

n_possible_iterations_整数

min_resources_ 资源开始且不超过 max_resources_ 的情况下可能的迭代次数。

n_required_iterations_整数

min_resources_ 资源开始,最终在最后一次迭代中剩余少于 factor 候选者所需的迭代次数。当资源不足时,这将小于 n_possible_iterations_

cv_results_包含 numpy (masked) ndarrays 的字典

一个字典,键为列标题,值为列,可以导入到 pandas DataFrame 中。它包含大量用于分析搜索结果的信息。请参阅 用户指南 了解更多详情。

best_estimator_估计器或字典

由搜索选择的估计器,即在留出数据上给出最高分数(或最小损失,如果指定)的估计器。如果 refit=False ,则不可用。

best_score_浮点数

best_estimator 的平均交叉验证分数。

best_params_字典

在留出数据上给出最佳结果的参数设置。

best_index_整数

cv_results_ 数组中对应于最佳候选参数设置的索引。

字典 search.cv_results_['params'][search.best_index_] 给出了最佳模型的参数设置,该模型给出了最高的平均分数 ( search.best_score_ )。

scorer_函数或字典

用于在留出数据上选择最佳参数的评分函数。

n_splits_整数

交叉验证拆分的数量(折/迭代)。

refit_time_浮点数

在全数据集上重新拟合最佳模型所用的秒数。

仅当 refit 不为 False 时存在。

multimetric_布尔值

评分器是否计算多个指标。

classes_形状为 (n_classes,) 的 ndarray

类标签。

n_features_in_整数

Number of features seen during fit .

feature_names_in_形状为 ( n_features_in_ ,) 的 ndarray

fit 期间看到的特征名称。仅当定义了 best_estimator_ 时定义(有关 refit 参数的更多详情,请参阅文档),并且 best_estimator_ 在拟合时暴露 feature_names_in_

Added in version 1.0.

See also

HalvingRandomSearchCV

使用连续减半方法对一组参数进行随机搜索。

Notes

选择的参数是那些根据评分参数最大化留出数据分数的参数。

所有用 NaN 评分的参数组合将共享最低排名。

Examples

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.experimental import enable_halving_search_cv  # noqa
>>> from sklearn.model_selection import HalvingGridSearchCV
...
>>> X, y = load_iris(return_X_y=True)
>>> clf = RandomForestClassifier(random_state=0)
...
>>> param_grid = {"max_depth": [3, None],
...               "min_samples_split": [5, 10]}
>>> search = HalvingGridSearchCV(clf, param_grid, resource='n_estimators',
...                              max_resources=10,
...                              random_state=0).fit(X, y)
>>> search.best_params_  
{'max_depth': None, 'min_samples_split': 10, 'n_estimators': 9}
property classes_#

类标签。

仅在 refit=True 且估计器是分类器时可用。

decision_function(X)#

调用具有最佳发现参数的估计器的决策函数。

仅在 refit=True 且底层估计器支持 decision_function 时可用。

Parameters:
Xindexable, length n_samples

必须满足底层估计器的输入假设。

Returns:
y_scorendarray of shape (n_samples,) or (n_samples, n_classes) 或 (n_samples, n_classes * (n_classes-1) / 2)

基于具有最佳发现参数的估计器对 X 的决策函数结果。

fit(X, y=None, **params)#

运行所有参数集的拟合。

Parameters:
Xarray-like, shape (n_samples, n_features)

训练向量,其中 n_samples 是样本的数量, n_features 是特征的数量。

yarray-like, shape (n_samples,) 或 (n_samples, n_output), 可选

相对于 X 的分类或回归目标; 无监督学习时为 None。

**paramsdict of string -> object

传递给估计器 fit 方法的参数。

Returns:
selfobject

已拟合估计器的实例。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Added in version 1.4.

Returns:
routingMetadataRouter

MetadataRouter 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

inverse_transform(X=None, Xt=None)#

调用具有最佳找到参数的估计器的 inverse_transform

仅在底层估计器实现 inverse_transformrefit=True 时可用。

Parameters:
X可索引对象, 长度为 n_samples

必须满足底层估计器的输入假设。

Xt可索引对象, 长度为 n_samples

必须满足底层估计器的输入假设。

Deprecated since version 1.5: Xt 在 1.5 版本中已弃用,并将在 1.7 版本中移除。请使用 X 代替。

Returns:
X{ndarray, sparse matrix} 形状为 (n_samples, n_features)

基于具有最佳找到参数的估计器,对 Xt 执行 inverse_transform 函数的结果。

property n_features_in_#

Number of features seen during fit .

仅当 refit=True 时可用。

predict(X)#

调用具有最佳发现参数的估计器的预测方法。

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

Parameters:
X可索引对象, 长度为 n_samples

必须满足底层估计器的输入假设。

Returns:
y_predndarray 形状为 (n_samples,)

基于具有最佳发现参数的估计器对 X 的预测标签或值。

predict_log_proba(X)#

调用具有最佳发现参数的估计器的predict_log_proba。

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

Parameters:
X可索引, 长度为n_samples

必须满足基础估计器的输入假设。

Returns:
y_predndarray, 形状为(n_samples,)或(n_samples, n_classes)

基于具有最佳发现参数的估计器预测的 X 的类对数概率。类的顺序 对应于拟合属性中的:term:classes_

predict_proba(X)#

调用具有最佳发现参数的估计器的predict_proba方法。

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

Parameters:
Xindexable, length n_samples

必须满足底层估计器的输入假设。

Returns:
y_predndarray of shape (n_samples,) or (n_samples, n_classes)

基于具有最佳发现参数的估计器,为 X 预测的类概率。类的顺序对应于拟合属性:term:classes_ 中的顺序。

score(X, y=None, **params)#

返回给定数据的分数,如果估计器已经重新拟合。

这使用由 scoring 定义的分数(如果提供),否则使用 best_estimator_.score 方法。

Parameters:
X形状为 (n_samples, n_features) 的类数组

输入数据,其中 n_samples 是样本的数量, n_features 是特征的数量。

y形状为 (n_samples, n_output) 或 (n_samples,) 的类数组,默认=None

相对于 X 的分类或回归目标; 无监督学习则为 None。

**paramsdict

要传递给底层评分器的参数。

..versionadded:: 1.4

仅在 enable_metadata_routing=True 时可用。有关更多详细信息,请参见 Metadata Routing User Guide

Returns:
scorefloat

scoring 定义的分数(如果提供),否则为 best_estimator_.score 方法。

score_samples(X)#

调用具有最佳发现参数的估计器的 score_samples 方法。

仅在 refit=True 且底层估计器支持 score_samples 时可用。

Added in version 0.24.

Parameters:
X可迭代对象

要预测的数据。必须满足底层估计器的输入要求。

Returns:
y_scorendarray 形状为 (n_samples,)

底层估计器的 best_estimator_.score_samples 方法。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

transform(X)#

调用具有最佳发现参数的估计器的transform方法。

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

Parameters:
Xindexable, length n_samples

必须满足基础估计器的输入假设。

Returns:
Xt{ndarray, sparse matrix} of shape (n_samples, n_features)

基于具有最佳发现参数的估计器,在新的空间中变换的 X