sklearn.model_selection.RandomizedSearchCV¶
class sklearn.model_selection.RandomizedSearchCV(estimator,param_distributions,*,n_iter = 10,评分= None,n_jobs = None,iid ='deprecated',refit = True,cv = None,verbose = 0,pre_dispatch ='2 * n_jobs',random_state = None,error_score = nan,return_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中更改:默认值从更改 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 指定后此属性才存在 。有关 refit 允许值的更多信息,请参见参数。 |
best_score_ | float best_estimator的平均交叉验证准确率。 对于多指标评估,如果 refit 为 False ,则不可用。有关refit 更多信息,请参见参数。如果 refit 为函数,则此属性不可用。 |
best_params_ | dict 参数设置,为保留数据提供最优结果。 对于多指标评估,如果 refit 为 False ,则不可用。有关refit 更多信息,请参见参数。 |
best_index_ | int 对应于最优候选参数设置的( cv_results_ 数组的)索引。search.cv_results_['params'][search.best_index_] 处的字典给出了最优模型的参数设置,该模型给出了最高平均得分(search.best_score_ )。对于多指标评估,如果 refit 为False ,则不可用。有关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_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 必须满足基础估计器的输入假设。 |