当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn HalvingRandomSearchCV用法及代码示例


本文简要介绍python语言中 sklearn.model_selection.HalvingRandomSearchCV 的用法。

用法:

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

超参数的随机搜索。

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

候选者从参数空间中随机抽样,抽样候选者的数量由n_candidates确定。

在用户指南中阅读更多信息。

注意

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

>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> # now you can import normally from model_selection
>>> from sklearn.model_selection import HalvingRandomSearchCV

参数

estimator估计器对象

假设这实现了scikit-learn 估计器接口。估计器需要提供score 函数,或者必须传递scoring

param_distributionsdict

以参数名称(字符串)作为键和分布或要尝试的参数列表的字典。发行版必须提供 rvs 抽样方法(例如来自 scipy.stats.distributions 的抽样方法)。如果给出一个列表,则对其进行均匀采样。

n_candidatesint,默认='排气'

在第一次迭代时要采样的候选参数的数量。使用 ‘exhaust’ 将根据 min_resourcesmax_resourcesfactor 对足够多的候选者进行采样,以便最后一次迭代使用尽可能多的资源。在这种情况下,min_resources 不能是‘exhaust’。

factorint 或浮点数,默认=3

‘halving’ 参数,确定每次后续迭代选择的候选者的比例。例如,factor=3 表示只选择了三分之一的候选者。

resource'n_samples' 或 str,默认='n_samples'

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

max_resources整数,默认='自动'

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

min_resources{‘exhaust’, ‘smallest’} 或 int,默认 ='smallest'

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

  • ‘smallest’ 是一种将 r0 设置为较小值的启发式算法:

    • n_splits * 2resource='n_samples' 用于回归问题

    • n_classes * n_splits * 2resource='n_samples' 用于分类问题

    • 1resource != 'n_samples'

  • ‘exhaust’ 将设置r0使得最后的迭代使用尽可能多的资源。也就是说,最后一次迭代将使用小于的最大值max_resources这是两者的倍数min_resourcesfactor.通常,使用‘exhaust’ 会导致更准确的估计器,但会稍微耗时一些。 ‘exhaust’ 在以下情况下不可用n_candidates='exhaust'.

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

aggressive_elimination布尔,默认=假

这仅适用于在最后一次迭代后没有足够资源将剩余候选者减少到最多 factor 的情况。如果 True ,则搜索过程将根据需要进行 ‘replay’ 第一次迭代,直到候选的数量足够少。默认情况下这是False,这意味着最后一次迭代可能评估超过factor 候选。有关详细信息,请参阅积极消除候选人。

cvint,交叉验证生成器或可迭代的,默认=5

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

  • 整数,指定 (Stratified)KFold 中的折叠数,
  • CV分配器,
  • 一个可迭代的 yield (train, test) 拆分为索引数组。

对于整数/无输入,如果估计器是分类器并且y 是二进制或多类,则使用 StratifiedKFold 。在所有其他情况下,使用 KFold 。这些拆分器使用 shuffle=False 实例化,因此拆分在调用之间将是相同的。

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

注意

由于实现细节,cv 产生的折叠在多次调用 cv.split() 时必须相同。对于内置的 scikit-learn 迭代器,这可以通过停用改组 (shuffle=False) 或将 cvrandom_state 参数设置为整数来实现。

scoringstr,可调用,或无,默认=无

单个字符串(参见评分参数:定义模型评估规则)或可调用的(见从度量函数定义你的评分策略) 来评估对测试集的预测。如果没有,则使用估计器的评分方法。

refit布尔,默认=真

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

重新安装的估计器在best_estimator_ 属性中可用,并允许直接在此HalvingRandomSearchCV 实例上使用predict

error_score‘raise’ 或数字

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

return_train_score布尔,默认=假

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

random_stateint、RandomState 实例或无,默认=无

resources != 'n_samples' 时用于对数据集进行二次采样的伪随机数生成器状态。也用于从可能值列表而不是 scipy.stats 分布中随机均匀抽样。传递 int 以获得跨多个函数调用的可重现输出。请参阅词汇表。

n_jobsint 或无,默认=无

并行运行的作业数。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关详细信息,请参阅词汇表。

verboseint

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

属性

n_resources_int列表

每次迭代使用的资源量。

n_candidates_int列表

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

n_remaining_candidates_int

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

max_resources_int

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

min_resources_int

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

n_iterations_int

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

n_possible_iterations_int

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

n_required_iterations_int

在最后一次迭代中以少于 factor 的候选者结束所需的迭代次数,从 min_resources_ 资源开始。当没有足够的资源时,这将小于n_possible_iterations_

cv_results_numpy(屏蔽)ndarrays的字典

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

best_estimator_估计器或听写器

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

best_score_浮点数

best_estimator 的平均 cross-validated 得分。

best_params_dict

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

best_index_int

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

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

scorer_函数或字典

用于保留数据的记分器函数为模型选择最佳参数。

n_splits_int

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

refit_time_浮点数

用于在整个数据集上重新拟合最佳模型的秒数。

仅当 refit 不为 False 时才存在。

multimetric_bool

记分员是否计算多个指标。

classes_ndarray 形状 (n_classes,)

类标签。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅在定义了 best_estimator_ 时才定义(有关更多详细信息,请参阅 refit 参数的文档)并且 best_estimator_ 在适合时公开 feature_names_in_

注意

根据评分参数,选择的参数是使held-out 数据的评分最大化的参数。

例子

>>> 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 HalvingRandomSearchCV
>>> from scipy.stats import randint
>>> import numpy as np
...
>>> X, y = load_iris(return_X_y=True)
>>> clf = RandomForestClassifier(random_state=0)
>>> np.random.seed(0)
...
>>> param_distributions = {"max_depth": [3, None],
...                        "min_samples_split": randint(2, 11)}
>>> search = HalvingRandomSearchCV(clf, param_distributions,
...                                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}

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.model_selection.HalvingRandomSearchCV。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。