用法:
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
一起工作。- parameters:dict
以参数名称(字符串)作为键和分布或要尝试的参数列表的字典。发行版必须提供
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_state:int,RandomState 实例或无,可选,默认值:无
如果是int,random_state是随机数生成器使用的种子;如果是RandomState实例,random_state是随机数生成器;如果没有,随机数生成器是
np.random
使用的 RandomState 实例。- scoring:字符串,可调用,列表/元组,字典或无,默认值:无
单个字符串(参见评分参数:定义模型评估规则)或可调用的(见从度量函数定义你的评分策略) 来评估对测试集的预测。
为了评估多个指标,或者给出一个(唯一的)字符串列表,或者给出一个名称作为键、可调用对象作为值的字典。
请注意,使用自定义记分器时,每个记分器应返回一个值。返回值列表/数组的度量函数可以包装到多个记分器中,每个记分器返回一个值。
有关示例,请参阅指定多个指标进行评估。
如果没有,则使用估计器的默认记分器(如果可用)。
- verbose:bool,float,int,可选,默认值:False
如果为 False(默认),则不打印日志(或将它们通过管道传输到标准输出)。但是,仍将使用标准日志记录。
如果为 True,则打印日志并使用标准日志记录。
如果浮点数,打印/记录大约
verbose
部分时间。- prefix:str,可选,默认=””
记录时,将
prefix
添加到每条消息。- predict_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer):
与估计器
predict
调用的输出类型匹配的空pd.Series
,pd.DataFrame
,np.array
。对于某些估算器使用dask.dataframe
和dask.array
而言,此元是必需的- predict_proba_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer):
与估计器
predict_proba
调用的输出类型匹配的空pd.Series
,pd.DataFrame
,np.array
。对于某些估算器使用dask.dataframe
和dask.array
而言,此元是必需的- transform_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer):
与估计器
transform
调用的输出类型匹配的空pd.Series
,pd.DataFrame
,np.array
。对于某些估算器使用dask.dataframe
和dask.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}
,其中key
是params
中的每个键。
test_score
键中的值对应于模型在保留数据集上收到的最后一个分数。键model_id
对应于history_
。这个字典可以导入到 Pandas 中。- model_history_:字典列表的字典
每个模型历史的字典。这是
history_
的重组:存在相同的信息,但按模型组织。该数据具有
{model_id: hist}
结构,其中hist
是history_
的子集,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)
通常,额外的训练在训练结束时会导致很少或根本没有分数增长。在这些情况下,停止训练是有益的,因为更多的训练没有任何好处,并且需要更少的计算。两个参数控制检测“增益很小或没有增益”:
patience
和tol
。如果在最近对model.partial_fit
的patience
调用中至少一个分数高于其他分数tol
,则训练继续。例如,设置
tol=0
和patience=2
意味着训练将在连续两次调用model.partial_fit
后停止,或者在达到max_iter
总调用model.partial_fit
时停止。
相关用法
- Python dask_ml.model_selection.GridSearchCV用法及代码示例
- Python dask_ml.model_selection.train_test_split用法及代码示例
- Python dask_ml.model_selection.HyperbandSearchCV用法及代码示例
- Python dask_ml.model_selection.RandomizedSearchCV用法及代码示例
- 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.IncrementalSearchCV。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。