sklearn.model_selection.RandomizedSearchCV

class sklearn.model_selection.RandomizedSearchCVestimatorparam_distributions,*,n_iter = 10,评分= Nonen_jobs = Noneiid ='deprecated',refit = Truecv = Noneverbose = 0,pre_dispatch ='2 * n_jobs',random_state = Noneerror_score = nanreturn_train_score = False )

[源码]

随机搜索超参数。

RandomizedSearchCV可以实现“fit”和“score”方法。如果在所使用的估计器中实现了“predict”,“predict_proba”,“decision_function”,“transform”和“inverse_transform”,则RandomizedSearchCV也可以实现它们。

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

与GridSearchCV相比,并非所有参数值都经过试验,而是从指定的分布中采样了固定数量的参数设置。尝试的参数设置数由n_iter给出。

如果所有参数均以列表形式显示,则执行采样而无需替换。如果给定至少一个参数作为分布,则使用替换抽样。强烈建议对连续参数使用连续分布。

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

版本0.14中的新功能。

参数 说明
estimator estimator object.
将为每个网格点实例化该类型的对象。假定这样做是为了实现scikit-learn估计器接口。估计器需要提供score功能,或者scoring必须通过。
param_distributions dict or list of dicts
以参数名称(str)作为键以及要尝试的分布或参数列表的字典。分布必须提供一种rvs 抽样方法(例如scipy.stats.distributions中的抽样方法)。如果给出列表,则对其进行统一采样。如果给出了字典列表,则首先对一个字典进行统一采样,然后如上所述使用该字典对参数进行采样。
n_iter int, default=10
采样的参数设置数量。n_iter权衡了运行时间和解决方案质量。
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=None
控制在并行执行期间分派的CPU内核数。当调度的CPU内核数量超过CPU的处理能力时,减少此数量可能有助于避免内存消耗激增。该参数可以是:

-None,在这种情况下,将立即创建并派生所有CPU内核。将此用于轻量级和快速运行的CPU内核,以避免由于按需生成CPU内核而造成的延迟
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设置为一个函数,该函数在给定cv_results时返回所选的best_index_。在这种情况下,当best_score_ 不可用时,best_estimator_best_params_将根据返回的best_index_值进行设置。

调整后的估计器在该best_estimator_ 属性上可用,并允许predict直接在RandomizedSearchCV实例上使用。

同样对于多指标估计,best_index_best_score_best_params_属性仅在设置refit时可用,并且所有属性都将根据这个特定的评分器来确定。

请参阅scoring参数以了解有关多指标评估的更多信息。

在0.20版中进行了更改:添加了对Callable的支持。
verbose integer
控制详细程度:越高,消息越多。
random_state int or RandomState instance, default=None
伪随机数生成器状态,用于从可能值列表而不是scipy.stats分布进行随机统一采样。为多个函数调用传递可重复输出的int值。请参阅词汇表
error_score ‘raise’ or numeric, default=np.nan

在估计器拟合中出现错误时分配给分数的值。如果设置为“ raise”,则会引发错误。如果给出数值,则引发FitFailedWarning。此参数不会影响重新拟合步骤,这将总是引发错误。
return_train_score bool, default=False
如果为False,则cv_results_属性将不包括训练集准确率。计算训练集准确率用于了解不同的参数设置如何影响过拟合或欠拟合的权衡。但是,在训练集上计算准确率可能在计算上很耗时,并且不严格要求选择输出最优泛化性能的参数。

版本0.19中的新功能。

版本0.21中更改:默认值从更改TrueFalse
属性 说明
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指定后此属性才存在 。

有关refit允许值的更多信息,请参见参数。
best_score_ float
best_estimator的平均交叉验证准确率。

对于多指标评估,如果refitFalse,则不可用。有关refit更多信息,请参见参数。

如果refit为函数,则此属性不可用。
best_params_ dict
参数设置,为保留数据提供最优结果。

对于多指标评估,如果refitFalse,则不可用。有关refit更多信息,请参见参数。
best_index_ int
对应于最优候选参数设置的(cv_results_数组的)索引。

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

对于多指标评估,如果refitFalse ,则不可用。有关refit更多信息,请参见参数。
scorer_ function or a dict
在保留的数据上使用评分器功能,为模型选择优参数。

对于多指标评估,此属性包含已验证的 scoring字典,该字典将评分器键映射到可调用的评分器。
n_splits_ int
交叉验证切分(折叠或迭代)的数量。
refit_time_ float
在整个数据集中重新拟合最优模型的秒数。

仅当refit不是False 时才存在。

0.20版中的新功能。

另见:

GridSearchCV 对参数网格进行详尽搜索。

ParameterSampler 由param_distributions构造的参数设置生成器。

根据评分参数,所选参数是那些使保留数据的准确率最大化的参数。

如果n_jobs设置为大于1的值,则会为每个参数设置(而不是n_jobs次数)复制数据。如果出于效率考虑,这样做是因为单个任务花费的时间很少,但是如果数据集很大且没有足够的可用内存,则可能会引发错误。在这种情况下,解决方法是设置pre_dispatch。然后,内存仅复制 pre_dispatch多次。pre_dispatch的合理值是2 * n_jobs

示例

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import RandomizedSearchCV
>>> from scipy.stats import uniform
>>> iris = load_iris()
>>> logistic = LogisticRegression(solver='saga', tol=1e-2, max_iter=200,
...                               random_state=0)
>>> distributions = dict(C=uniform(loc=0, scale=4),
...                      penalty=['l2''l1'])
>>> clf = RandomizedSearchCV(logistic, distributions, random_state=0)
>>> search = clf.fit(iris.data, iris.target)
>>> search.best_params_
{'C'2..., 'penalty''l1'}

方法

方法 说明
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。
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_distributions,*,n_iter = 10,得分= None,n_jobs = None,iid =' preprecated ',refit = True,cv = None,verbose = 0,pre_dispatch ='2 * n_jobs',random_state = None,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
必须满足基础估计器的输入假设。

sklearn.model_selection.RandomizedSearchCV使用示例