用法:
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”,它还实现了它们。
用于应用这些方法的估计器的参数通过 cross-validated 搜索参数设置进行优化。
与 GridSearchCV 相比,并非所有参数值都被尝试,而是从指定分布中采样固定数量的参数设置。尝试的参数设置数量由 n_iter 给出。
如果所有参数都以列表形式呈现,则执行无替换采样。如果至少有一个参数作为分布给出,则使用带放回抽样。强烈建议对连续参数使用连续分布。
- estimator:估计器对象。
为每个参数实例化此类型的对象。假设这实现了scikit-learn 估计器接口。估计器需要提供
score
函数,或者必须传递scoring
。如果给定一个字典列表,首先对字典进行均匀采样,然后使用该字典对参数进行采样,如上所述。- param_distributions:dict
以参数名称(字符串)作为键和分布或要尝试的参数列表的字典。发行版必须提供
rvs
抽样方法(例如来自 scipy.stats.distributions 的抽样方法)。如果给出一个列表,则对其进行均匀采样。- n_iter:整数,默认=10
采样的参数设置数。 n_iter 权衡运行时间与解决方案的质量。
- random_state:int 或 RandomState
伪随机数生成器状态用于从可能值列表中随机均匀抽样,而不是 scipy.stats 分布。跨多个函数调用传递一个 int 以实现可重现的输出。
- scoring:字符串,可调用,列表/元组,字典或无,默认值:无
用于评估测试集预测的单个字符串或可调用对象。
为了评估多个指标,或者给出一个(唯一的)字符串列表,或者给出一个名称作为键、可调用对象作为值的字典。
请注意,使用自定义记分器时,每个记分器应返回一个值。返回值列表/数组的度量函数可以包装到多个记分器中,每个记分器返回一个值。
如果没有,则使用估计器的默认记分器(如果可用)。
- iid:布尔值,默认 = True
如果为 True,则假定数据在折叠中均匀分布,最小化的损失是每个样本的总损失,而不是折叠的平均损失。
- cv:int,交叉验证生成器或可迭代的,可选的
确定交叉验证拆分策略。 cv 的可能输入是:
无,使用默认的 3 折交叉验证,
整数,指定
(Stratified)KFold
中的折叠数,用作交叉验证生成器的对象。
一个可迭代的 yield (train, test) 拆分为索引数组。
对于整数/无输入,如果估计器是分类器并且
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
已被弃用,并且在未明确询问火车分数的情况下访问火车分数结果时会发出警告。- scheduler:字符串,可调用,客户端,或无,默认=无
要使用的 dask 调度程序。默认是使用全局调度器(如果设置),否则回退到线程调度器。要使用不同的调度程序,请按名称指定它(“threading”, “multiprocessing”, or “synchronous”),传入
dask.distributed.Client
,或提供调度程序get
函数。- n_jobs:整数,默认=-1
并行运行的作业数。忽略同步和分布式调度程序。如果
n_jobs == -1
[default] 使用所有 CPU。使用n_jobs < -1
,(n_cpus + 1 + n_jobs)
。- cache_cv:布尔,默认=真
是否在每个工作进程中最多提取每个训练/测试子集一次,或者每次需要该子集时。缓存拆分可以加快计算速度,但会增加每个工作进程的内存使用量。
如果为 True,最坏情况下的内存使用量是每个工作人员
(n_splits + 1) * (X.nbytes + y.nbytes)
。如果为 False,最坏情况下的内存使用量是每个工作人员(n_threads_per_worker + 1) * (X.nbytes + y.nbytes)
。
- cv_results_:numpy(屏蔽)ndarrays的字典
一个带有键作为列标题和值作为列的字典,可以导入到 pandas
DataFrame
中。例如下面给出的表格
param_kernel
param_gamma
param_degree
split0_test_score
…
秩…..
‘poly’
-
2
0.8
…
2
‘poly’
-
3
0.7
…
4
‘rbf’
0.1
-
0.8
…
3
‘rbf’
0.2
-
0.9
…
1
将由
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_time
,std_fit_time
,mean_score_time
和std_score_time
都以秒为单位。- best_estimator_:估计器
搜索选择的估计器,即在遗漏数据上给出最高分数(或最小损失,如果指定)的估计器。如果 refit=False,则不可用。
- best_score_:浮点数或浮点数
best_estimator 在遗漏数据上的得分。当使用多个指标时,
best_score_
将是一个字典,其中键是记分员的姓名,值是该记分员的平均测试分数。- best_params_:dict
在保留数据上给出最佳结果的参数设置。
- best_index_:整数或整数的字典
对应于最佳候选参数设置的索引(
cv_results_
数组)。search.cv_results_['params'][search.best_index_]
处的 dict 给出了最佳模型的参数设置,它给出了最高的平均分数 (search.best_score_
)。当使用多个指标时,
best_index_
将是一个字典,其中键是记分员的姓名,值是该记分员的平均得分最高的索引,如上所述。- scorer_:函数或函数字典
用于保留数据的记分器函数为模型选择最佳参数。使用多个指标时的
{scorer_name: scorer}
字典。- n_splits_:int
交叉验证拆分(折叠/迭代)的数量。
参数:
属性:
注意:
选择的参数是那些最大化遗漏数据分数的参数,除非传递了明确的分数,在这种情况下使用它来代替。
例子:
>>> 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'...]
相关用法
- Python dask_ml.model_selection.GridSearchCV用法及代码示例
- Python dask_ml.model_selection.train_test_split用法及代码示例
- Python dask_ml.model_selection.IncrementalSearchCV用法及代码示例
- Python dask_ml.model_selection.HyperbandSearchCV用法及代码示例
- Python dask_ml.metrics.mean_squared_log_error用法及代码示例
- Python dask_ml.metrics.r2_score用法及代码示例
- Python dask_ml.metrics.mean_squared_error用法及代码示例
- Python dask_ml.metrics.accuracy_score用法及代码示例
- Python dask_ml.metrics.mean_absolute_error用法及代码示例
- Python dask_ml.metrics.log_loss用法及代码示例
- Python dask_ml.wrappers.ParallelPostFit用法及代码示例
- Python dask_ml.feature_extraction.text.CountVectorizer用法及代码示例
- Python dask_ml.preprocessing.MinMaxScaler用法及代码示例
- Python dask_ml.preprocessing.Categorizer用法及代码示例
- Python dask_ml.linear_model.LinearRegression用法及代码示例
- Python dask_ml.wrappers.Incremental用法及代码示例
- Python dask_ml.preprocessing.OrdinalEncoder用法及代码示例
- Python dask_ml.feature_extraction.text.FeatureHasher用法及代码示例
- Python dask_ml.preprocessing.LabelEncoder用法及代码示例
- Python dask_ml.ensemble.BlockwiseVotingClassifier用法及代码示例
注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask_ml.model_selection.RandomizedSearchCV。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。