dask_ml.model_selection.RandomizedSearchCV

dask_ml.model_selection.RandomizedSearchCV

class dask_ml.model_selection.RandomizedSearchCV(estimator, param_distributions, n_iter=10, random_state=None, scoring=None, iid=True, refit=True, cv=None, error_score='raise', return_train_score=False, scheduler=None, n_jobs=- 1, cache_cv=True)[源代码]

超参数的随机搜索。

RandomizedSearchCV 实现了 “fit” 和 “score” 方法。如果使用的估计器中实现了这些方法,它还实现了 “predict”、“predict_proba”、“decision_function”、“transform” 和 “inverse_transform”。

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

与 GridSearchCV 不同,并非所有参数值都会被尝试,而是从指定的分布中采样固定数量的参数设置。尝试的参数设置数量由 n_iter 给出。

如果所有参数都以列表形式呈现,则执行不放回抽样。如果至少有一个参数以分布形式给出,则使用放回抽样。强烈建议对连续参数使用连续分布。

参数
估计器估计器对象。

此类型的对象为每个参数实例化。假定它实现了 scikit-learn 估计器接口。估计器需要提供一个 score 函数,或者必须传递 scoring。如果给定的是字典列表,首先均匀采样一个字典,然后使用该字典如上所述采样参数。

param_distributionsdict

包含参数名称(字符串)作为键和要尝试的分布或参数列表的字典。分布必须提供用于采样的 rvs 方法(例如来自 scipy.stats.distributions 的那些)。如果给定一个列表,则均匀采样。

n_iterint, 默认=10

采样的参数设置数量。n_iter 在运行时间和解决方案质量之间进行权衡。

random_stateint 或 RandomState

伪随机数生成器状态,用于从可能值列表中进行随机均匀采样,而不是使用 scipy.stats 分布。传递一个整数以在多次函数调用中获得可重现的输出。

评分字符串, 可调用对象, 列表/元组, 字典 或 None, 默认: None

一个字符串或一个可调用的对象,用于评估测试集上的预测结果。

对于评估多个指标,可以提供一个字符串列表(唯一)或一个字典,其中键为名称,值为可调用对象。

注意,当使用自定义评分器时,每个评分器应返回一个单一值。返回值列表/数组的度量函数可以包装成多个评分器,每个评分器返回一个值。

如果为 None,则使用估计器的默认评分器(如果可用)。

iid布尔值,默认=True

如果为真,则假设数据在各折中是同分布的,最小化的损失是每个样本的总损失,而不是各折的平均损失。

cvint, 交叉验证生成器或可迭代对象, 可选

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

  • None,使用默认的3折交叉验证,

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

  • 一个用作交叉验证生成器的对象。

  • 一个生成 (train, test) 分割的迭代器,作为索引数组。

对于整数/None输入,如果估计器是分类器且 y 是二分类或多分类,则使用 StratifiedKFold。在所有其他情况下,使用 KFold

refit布尔值,或字符串,默认=True

在整个数据集上使用找到的最佳参数重新拟合估计器。

对于多指标评估,这需要是一个字符串,表示评分器用于在最后为重新拟合估计器找到最佳参数。

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

同样地,对于多指标评估,属性 best_index_best_score_best_parameters_ 只有在设置了 refit 时才会可用,并且它们都将根据此特定评分器来确定。

参见 scoring 参数以了解更多关于多指标评估的信息。

error_score‘raise’ (默认) 或数值

如果在估计器拟合过程中发生错误,则分配给分数的值。如果设置为 ‘raise’,则错误会被抛出。如果给定一个数值,则会引发 FitFailedWarning。此参数不影响重拟合步骤,重拟合步骤将始终抛出错误。

return_train_score布尔值,默认=True

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

请注意,对于 scikit-learn >= 0.19.1,默认值 True 已被弃用,并且在未明确请求训练分数结果的情况下访问训练分数结果时,将引发警告。

调度器字符串、可调用对象、客户端或无,默认=无

要使用的 dask 调度器。默认情况下,如果设置了全局调度器,则使用它,否则回退到线程调度器。要使用不同的调度器,可以通过名称(如 “threading”、”multiprocessing” 或 “synchronous”)指定,传递 dask.distributed.Client,或提供调度器 get 函数。

n_jobsint, 默认=-1

并行运行的作业数量。对于同步和分布式调度器,此设置将被忽略。如果 n_jobs == -1 [默认],则使用所有CPU。对于 n_jobs < -1,将使用 (n_cpus + 1 + n_jobs) 个CPU。

cache_cvbool, 默认=True

是否在每个工作进程中最多提取每个训练/测试子集一次,或者每次需要该子集时都提取。缓存分割可以加快计算速度,但会增加每个工作进程的内存使用量。

如果为 True,最坏情况下的内存使用量为 (n_splits + 1) * (X.nbytes + y.nbytes) 每个工作线程。如果为 False,最坏情况下的内存使用量为 (n_threads_per_worker + 1) * (X.nbytes + y.nbytes) 每个工作线程。

属性
cv_results_numpy (masked) ndarrays 的字典

一个字典,键为列标题,值为列,可以导入到 pandas 的 DataFrame 中。

例如,下面给出的表格

param_kernel

param_gamma

参数_度

split0_test_score

排名….

‘多边形’

2

0.8

2

‘多边形’

3

0.7

4

‘rbf’

0.1

0.8

3

‘rbf’

0.2

0.9

toctree 是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。

将由一个 cv_results_ 字典表示,如下:

{
'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'],
                                mask = [False False False False]...)
'param_gamma': masked_array(data = [-- -- 0.1 0.2],
                            mask = [ True  True False False]...),
'param_degree': masked_array(data = [2.0 3.0 -- --],
                                mask = [False False  True  True]...),
'split0_test_score'  : [0.8, 0.7, 0.8, 0.9],
'split1_test_score'  : [0.82, 0.5, 0.7, 0.78],
'mean_test_score'    : [0.81, 0.60, 0.75, 0.82],
'std_test_score'     : [0.02, 0.01, 0.03, 0.03],
'rank_test_score'    : [2, 4, 3, 1],
'split0_train_score' : [0.8, 0.7, 0.8, 0.9],
'split1_train_score' : [0.82, 0.7, 0.82, 0.5],
'mean_train_score'   : [0.81, 0.7, 0.81, 0.7],
'std_train_score'    : [0.03, 0.04, 0.03, 0.03],
'mean_fit_time'      : [0.73, 0.63, 0.43, 0.49],
'std_fit_time'       : [0.01, 0.02, 0.01, 0.01],
'mean_score_time'    : [0.007, 0.06, 0.04, 0.04],
'std_score_time'     : [0.001, 0.002, 0.003, 0.005],
'params'             : [{'kernel': 'poly', 'degree': 2}, ...],
}

注意,键 'params' 用于存储所有参数候选的参数设置字典列表。

mean_fit_timestd_fit_timemean_score_timestd_score_time 都是以秒为单位。

best_estimator_估计器

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

best_score_浮点数或浮点数的字典

最佳估计器在留出数据上的得分。当使用多个指标时,best_score_ 将是一个字典,其中键是评分器的名称,值是该评分器的平均测试得分。

best_params_dict

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

最佳索引_整数或整数的字典

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

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

当使用多个指标时,best_index_ 将是一个字典,其中键是评分器的名称,值是该评分器的最佳平均分数的索引,如上所述。

scorer_函数或函数的字典

在保留数据上使用的评分函数,用于为模型选择最佳参数。当使用多个指标时,这是一个 {评分器名称: 评分器} 的字典。

n_splits_整数

交叉验证的分裂次数(折数/迭代次数)。

注释

所选参数是那些最大化留出数据分数的参数,除非传入了显式分数,在这种情况下将使用该分数。

示例

>>> import dask_ml.model_selection as dcv
>>> from scipy.stats import expon
>>> from sklearn import svm, datasets
>>> iris = datasets.load_iris()
>>> parameters = {'C': expon(scale=100), 'kernel': ['linear', 'rbf']}
>>> svc = svm.SVC()
>>> clf = dcv.RandomizedSearchCV(svc, parameters, n_iter=100)
>>> clf.fit(iris.data, iris.target)  
RandomizedSearchCV(cache_cv=..., cv=..., error_score=...,
        estimator=SVC(C=..., cache_size=..., class_weight=..., coef0=...,
                      decision_function_shape=..., degree=..., gamma=...,
                      kernel=..., max_iter=..., probability=...,
                      random_state=..., shrinking=..., tol=...,
                      verbose=...),
        iid=..., n_iter=..., n_jobs=..., param_distributions=...,
        random_state=..., refit=..., return_train_score=...,
        scheduler=..., scoring=...)
>>> sorted(clf.cv_results_.keys())  
['mean_fit_time', 'mean_score_time', 'mean_test_score',...
 'mean_train_score', 'param_C', 'param_kernel', 'params',...
 'rank_test_score', 'split0_test_score',...
 'split0_train_score', 'split1_test_score', 'split1_train_score',...
 'split2_test_score', 'split2_train_score',...
 'std_fit_time', 'std_score_time', 'std_test_score', 'std_train_score'...]

方法

decision_function(X)

在具有最佳找到参数的估计器上调用 decision_function。

fit(X[, y, groups])

使用所有参数集运行拟合。

get_metadata_routing()

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

get_params([deep])

获取此估计器的参数。

inverse_transform(Xt)

使用找到的最佳参数对估计器调用 inverse_transform。

predict(X)

使用找到的最佳参数对估计器调用预测。

predict_log_proba(X)

使用找到的最佳参数对估计器调用 predict_log_proba。

predict_proba(X)

使用找到的最佳参数对估计器调用 predict_proba。

score(X[, y])

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

set_fit_request(*[, groups])

传递给 fit 方法的请求元数据。

set_params(**params)

设置此估计器的参数。

transform(X)

使用找到的最佳参数调用估计器的变换方法。

visualize([filename, format])

使用 graphviz 渲染此参数搜索的任务图。

__init__(estimator, param_distributions, n_iter=10, random_state=None, scoring=None, iid=True, refit=True, cv=None, error_score='raise', return_train_score=False, scheduler=None, n_jobs=- 1, cache_cv=True)[源代码]