当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask_ml.model_selection.IncrementalSearchCV用法及代码示例


用法:

class dask_ml.model_selection.IncrementalSearchCV(estimator, parameters, n_initial_parameters=10, decay_rate=<object object>, test_size=None, patience=False, tol=0.001, fits_per_score=1, max_iter=100, random_state=None, scoring=None, verbose=False, prefix='', scores_per_fit=None, predict_meta=None, predict_proba_meta=None, transform_meta=None)

在支持partial_fit的模型上逐步搜索hyper-parameters

这个增量hyper-parameter 优化类开始在少量数据上对许多hyper-parameters 模型进行训练,然后只继续训练那些似乎表现良好的模型。

有关更多信息,请参阅用户指南。

参数

estimator估计器对象。

为每个初始超参数组合实例化该类型的对象。假设这实现了scikit-learn 估计器接口。估计器需要提供score` 函数,或者必须传递scoring。估计器必须实现 partial_fit , set_params ,并与 clone 一起工作。

parametersdict

以参数名称(字符串)作为键和分布或要尝试的参数列表的字典。发行版必须提供 rvs 抽样方法(例如来自 scipy.stats.distributions 的抽样方法)。如果给出一个列表,则对其进行均匀采样。

n_initial_parameters整数,默认=10

采样的参数设置数。这权衡了运行时间与解决方案的质量。

或者,您可以将其设置为 "grid" 以进行完整的网格搜索。

decay_rate浮点数,默认 1.0

减少部分未来适合调用的数量的速度。

patience整数,默认为假

如果指定,则在 patience 调用 partial_fit 后分数没有增加 tol 时训练停止。默认关闭。

fits_per_score整数,可选,默认=1

如果使用 patience,则 score 调用之间的最大 partial_fit 调用数。

scores_per_fit整数,默认 1

如果使用 patience,则 score 调用之间的最大 partial_fit 调用数。

tol浮点数,默认 0.001

考虑停止对该模型的训练所需的改进水平。最近的分数最多只能比该模型之前的所有 patience 分数高 tol。增加 tol 将倾向于减少训练时间,但代价是模型更差。

max_iter整数,默认 100

每个模型的最大部分拟合调用数。

test_size浮点数

用于计算测试分数的数据集的一部分。默认为输入训练集的单个分区的大小

注意

训练数据集应该适合单台机器的内存。根据需要调整test_size 参数以实现此目的。

random_stateint,RandomState 实例或无,可选,默认值:无

如果是int,random_state是随机数生成器使用的种子;如果是RandomState实例,random_state是随机数生成器;如果没有,随机数生成器是 np.random 使用的 RandomState 实例。

scoring字符串,可调用,列表/元组,字典或无,默认值:无

单个字符串(参见评分参数:定义模型评估规则)或可调用的(见从度量函数定义你的评分策略) 来评估对测试集的预测。

为了评估多个指标,或者给出一个(唯一的)字符串列表,或者给出一个名称作为键、可调用对象作为值的字典。

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

有关示例,请参阅指定多个指标进行评估。

如果没有,则使用估计器的默认记分器(如果可用)。

verbosebool,float,int,可选,默认值:False

如果为 False(默认),则不打印日志(或将它们通过管道传输到标准输出)。但是,仍将使用标准日志记录。

如果为 True,则打印日志并使用标准日志记录。

如果浮点数,打印/记录大约 verbose 部分时间。

prefixstr,可选,默认=””

记录时,将prefix 添加到每条消息。

predict_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer)

与估计器 predict 调用的输出类型匹配的空 pd.Series , pd.DataFrame , np.array。对于某些估算器使用 dask.dataframedask.array 而言,此元是必需的

predict_proba_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer)

与估计器 predict_proba 调用的输出类型匹配的空 pd.Series , pd.DataFrame , np.array。对于某些估算器使用 dask.dataframedask.array 而言,此元是必需的

transform_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer)

与估计器 transform 调用的输出类型匹配的空 pd.Series , pd.DataFrame , np.array。对于某些估算器使用 dask.dataframedask.array 而言,此元是必需的

属性

cv_results_np.ndarrays 的字典

这本字典有键

  • mean_partial_fit_time
  • mean_score_time
  • std_partial_fit_time
  • std_score_time
  • test_score
  • rank_test_score
  • model_id
  • partial_fit_calls
  • params
  • param_{key} ,其中 keyparams 中的每个键。

test_score 键中的值对应于模型在保留数据集上收到的最后一个分数。键 model_id 对应于 history_ 。这个字典可以导入到 Pandas 中。

model_history_字典列表的字典

每个模型历史的字典。这是 history_ 的重组:存在相同的信息,但按模型组织。

该数据具有{model_id: hist} 结构,其中histhistory_ 的子集,model_id 是模型标识符。

history_字典列表

每次partial_fit 调用后有关每个模型的信息。每个 dict 键

  • partial_fit_time
  • score_time
  • score
  • model_id
  • params
  • partial_fit_calls
  • elapsed_wall_time

model_id 对应于 cv_results_ 中的 model_id。这个字典列表可以导入到 Pandas 中。

best_estimator_基估计器

“inverse decay”算法保留的所有模型中验证分数最高的模型。

best_score_浮点数

最终调用 partial_fit 后,best_estimator_ 在验证集上获得的分数。

best_index_int

指示cv_results_ 中哪个估计器对应于最高分数的索引。

best_params_dict

hold-out 数据中找到的最佳参数字典。

scorer_ :

用于对模型进行评分的函数,其调用签名为 scorer_(estimator, X, y)

n_splits_int

交叉验证拆分的数量。

multimetric_bool

此交叉验证搜索是否使用多个指标。

例子

连接到客户端并创建数据

>>> from dask.distributed import Client
>>> client = Client()
>>> import numpy as np
>>> from dask_ml.datasets import make_classification
>>> X, y = make_classification(n_samples=5000000, n_features=20,
...                            chunks=100000, random_state=0)

我们的基础估计器是一个 SGDClassifier。我们为估计器的每个克隆指定了一些共同的参数。

>>> from sklearn.linear_model import SGDClassifier
>>> model = SGDClassifier(tol=1e-3, penalty='elasticnet', random_state=0)

我们将从中采样的参数分布。

>>> params = {'alpha': np.logspace(-2, 1, num=1000),
...           'l1_ratio': np.linspace(0, 1, num=1000),
...           'average': [True, False]}
>>> search = IncrementalSearchCV(model, params, random_state=0)
>>> search.fit(X, y, classes=[0, 1])
IncrementalSearchCV(...)

或者,您可以提供以更多 hyper-parameters 开头的关键字,但停止使用更多数据似乎没有改善的关键字。

>>> search = IncrementalSearchCV(model, params, random_state=0,
...                              n_initial_parameters=1000,
...                              patience=20, max_iter=100)

通常,额外的训练在训练结束时会导致很少或根本没有分数增长。在这些情况下,停止训练是有益的,因为更多的训练没有任何好处,并且需要更少的计算。两个参数控制检测“增益很小或没有增益”:patiencetol。如果在最近对 model.partial_fitpatience 调用中至少一个分数高于其他分数 tol ,则训练继续。

例如,设置 tol=0patience=2 意味着训练将在连续两次调用 model.partial_fit 后停止,或者在达到 max_iter 总调用 model.partial_fit 时停止。

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask_ml.model_selection.IncrementalSearchCV。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。