本文简要介绍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_distributions:dict
以参数名称(字符串)作为键和分布或要尝试的参数列表的字典。发行版必须提供
rvs
抽样方法(例如来自 scipy.stats.distributions 的抽样方法)。如果给出一个列表,则对其进行均匀采样。- n_candidates:int,默认='排气'
在第一次迭代时要采样的候选参数的数量。使用 ‘exhaust’ 将根据
min_resources
、max_resources
和factor
对足够多的候选者进行采样,以便最后一次迭代使用尽可能多的资源。在这种情况下,min_resources
不能是‘exhaust’。- factor:int 或浮点数,默认=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 * 2
当resource='n_samples'
用于回归问题n_classes * n_splits * 2
当resource='n_samples'
用于分类问题1
当resource != 'n_samples'
‘exhaust’ 将设置
r0
使得最后的迭代使用尽可能多的资源。也就是说,最后一次迭代将使用小于的最大值max_resources
这是两者的倍数min_resources
和factor
.通常,使用‘exhaust’ 会导致更准确的估计器,但会稍微耗时一些。 ‘exhaust’ 在以下情况下不可用n_candidates='exhaust'
.
请注意,每次迭代使用的资源量始终是
min_resources
的倍数。- aggressive_elimination:布尔,默认=假
这仅适用于在最后一次迭代后没有足够资源将剩余候选者减少到最多
factor
的情况。如果True
,则搜索过程将根据需要进行 ‘replay’ 第一次迭代,直到候选的数量足够少。默认情况下这是False
,这意味着最后一次迭代可能评估超过factor
候选。有关详细信息,请参阅积极消除候选人。- cv:int,交叉验证生成器或可迭代的,默认=5
确定交叉验证拆分策略。 cv 的可能输入是:
- 整数,指定
(Stratified)KFold
中的折叠数, - CV分配器,
- 一个可迭代的 yield (train, test) 拆分为索引数组。
对于整数/无输入,如果估计器是分类器并且
y
是二进制或多类,则使用StratifiedKFold
。在所有其他情况下,使用KFold
。这些拆分器使用shuffle=False
实例化,因此拆分在调用之间将是相同的。有关可在此处使用的各种交叉验证策略,请参阅用户指南。
注意
由于实现细节,
cv
产生的折叠在多次调用cv.split()
时必须相同。对于内置的scikit-learn
迭代器,这可以通过停用改组 (shuffle=False
) 或将cv
的random_state
参数设置为整数来实现。- 整数,指定
- scoring:str,可调用,或无,默认=无
单个字符串(参见评分参数:定义模型评估规则)或可调用的(见从度量函数定义你的评分策略) 来评估对测试集的预测。如果没有,则使用估计器的评分方法。
- refit:布尔,默认=真
如果为真,则使用整个数据集上找到的最佳参数重新拟合估计器。
重新安装的估计器在
best_estimator_
属性中可用,并允许直接在此HalvingRandomSearchCV
实例上使用predict
。- error_score:‘raise’ 或数字
如果在估计器拟合中发生错误,则分配给分数的值。如果设置为‘raise’,则会引发错误。如果给出数值,则引发FitFailedWarning。此参数不影响改装步骤,这将始终引发错误。默认为
np.nan
。- return_train_score:布尔,默认=假
如果
False
,则cv_results_
属性将不包括训练分数。计算训练分数用于深入了解不同的参数设置如何影响过拟合/欠拟合权衡。然而,在训练集上计算分数可能在计算上很昂贵,并且不严格要求选择产生最佳泛化性能的参数。- random_state:int、RandomState 实例或无,默认=无
resources != 'n_samples'
时用于对数据集进行二次采样的伪随机数生成器状态。也用于从可能值列表而不是 scipy.stats 分布中随机均匀抽样。传递 int 以获得跨多个函数调用的可重现输出。请参阅词汇表。- n_jobs:int 或无,默认=无
并行运行的作业数。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关详细信息,请参阅词汇表。- verbose:int
控制详细程度:越高,消息越多。
- 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_elimination
是True
。否则,这等于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}
相关用法
- Python sklearn HalvingGridSearchCV用法及代码示例
- Python sklearn HashingVectorizer用法及代码示例
- Python sklearn HistGradientBoostingRegressor用法及代码示例
- Python sklearn HuberRegressor用法及代码示例
- Python sklearn HistGradientBoostingClassifier用法及代码示例
- Python sklearn Hyperparameter用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
- Python sklearn MLPClassifier用法及代码示例
- Python sklearn train_test_split用法及代码示例
- Python sklearn RandomTreesEmbedding用法及代码示例
- Python sklearn GradientBoostingRegressor用法及代码示例
- Python sklearn GridSearchCV用法及代码示例
- Python sklearn log_loss用法及代码示例
- Python sklearn r2_score用法及代码示例
- Python sklearn ndcg_score用法及代码示例
- Python sklearn ShrunkCovariance用法及代码示例
- Python sklearn SelfTrainingClassifier用法及代码示例
- Python sklearn load_svmlight_file用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.model_selection.HalvingRandomSearchCV。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。