dask_ml.model_selection
.SuccessiveHalvingSearchCV¶

class
dask_ml.model_selection.
SuccessiveHalvingSearchCV
(estimator, parameters, n_initial_parameters=10, n_initial_iter=None, max_iter=None, aggressiveness=3, test_size=None, patience=False, tol=0.001, random_state=None, scoring=None, verbose=False, prefix='')¶ Perform the successive halving algorithm [1].
This algorithm trains estimators for a certain number
partial_fit
calls topartial_fit
, then kills the worst performing half. It trains the surviving estimators for twice as long, and repeats this until one estimator survives.The value of \(1/2\) above is used for a clear explanation. This class defaults to killing the worst performing
1  1 // aggressiveness
fraction of models, and trains estimators foraggressiveness
times longer, and waits until the number of models left is less thanaggressiveness
.Parameters:  estimator : estimator object.
A object of that type is instantiated for each initial hyperparameter combination. This is assumed to implement the scikitlearn estimator interface. Either estimator needs to provide a
score
function, orscoring
must be passed. The estimator must implementpartial_fit
,set_params
, and work well withclone
. parameters : dict
Dictionary with parameters names (string) as keys and distributions or lists of parameters to try. Distributions must provide a
rvs
method for sampling (such as those from scipy.stats.distributions). If a list is given, it is sampled uniformly. aggressiveness : float, default=3
How aggressive to be in culling off the different estimators. Higher values imply higher confidence in scoring (or that the hyperparameters influence the
estimator.score
more than the data). n_initial_parameters : int, default=10
Number of parameter settings that are sampled. This trades off runtime vs quality of the solution.
 n_initial_iter : int
Number of times to call partial fit initially before scoring. Estimators are trained for
n_initial_iter
calls topartial_fit
initially. Higher values ofn_initial_iter
train the estimators longer before making a decision. Metadata on the number of calls topartial_fit
is inmetadata
(andmetadata_
). max_iter : int, default None
Maximum number of partial fit calls per model. If None, will allow SuccessiveHalvingSearchCV to run until (about) one model survives. If specified, models will stop being trained when
max_iter
calls topartial_fit
are reached. test_size : float
Fraction of the dataset to hold out for computing test scores. Defaults to the size of a single partition of the input training set
Note
The training dataset should fit in memory on a single machine. Adjust the
test_size
parameter as necessary to achieve this. patience : int, default False
If specified, training stops when the score does not increase by
tol
afterpatience
calls topartial_fit
. Off by default. tol : float, default 0.001
The required level of improvement to consider stopping training on that model. The most recent score must be at at most
tol
better than the all of the previouspatience
scores for that model. Increasingtol
will tend to reduce training time, at the cost of worse models. scoring : string, callable, None. default: None
A single string (see The scoring parameter: defining model evaluation rules) or a callable (see Defining your scoring strategy from metric functions) to evaluate the predictions on the test set.
If None, the estimator’s default scorer (if available) is used.
 random_state : int, RandomState instance or None, optional, default: None
If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.
 verbose : bool, float, int, optional, default: False
If False (default), don’t print logs (or pipe them to stdout). However, standard logging will still be used.
If True, print logs and use standard logging.
If float, print/log approximately
verbose
fraction of the time. prefix : str, optional, default=””
While logging, add
prefix
to each message.
Attributes:  cv_results_ : dict of np.ndarrays
This dictionary has keys
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}
, wherekey
is every key inparams
.
The values in the
test_score
key correspond to the last score a model received on the hold out dataset. The keymodel_id
corresponds withhistory_
. This dictionary can be imported into Pandas. metadata and metadata_ : dict[key, int]
Dictionary describing the computation.
metadata
describes the computation that will be performed, andmetadata_
describes the computation that has been performed. Both dictionaries have keysn_models
: the number of models for this run of successive halvingmax_iter
: the maximum number of timespartial_fit
is called. At least one model will have this manypartial_fit
calls.partial_fit_calls
: the total number ofpartial_fit
calls. All models together will receive this manypartial_fit
calls.
When
patience
is specified, the reduced computation will be reflected inmetadata_
but notmetadata
. model_history_ : dict of lists of dict
A dictionary of each models history. This is a reorganization of
history_
: the same information is present but organized per model.This data has the structure
{model_id: hist}
wherehist
is a subset ofhistory_
andmodel_id
are model identifiers. history_ : list of dicts
Information about each model after each
partial_fit
call. Each dict the keyspartial_fit_time
score_time
score
model_id
params
partial_fit_calls
The key
model_id
corresponds to themodel_id
incv_results_
. This list of dicts can be imported into Pandas. best_estimator_ : BaseEstimator
The model with the highest validation score among all the models retained by the “inverse decay” algorithm.
 best_score_ : float
Score achieved by
best_estimator_
on the validation set after the final call topartial_fit
. best_index_ : int
Index indicating which estimator in
cv_results_
corresponds to the highest score. best_params_ : dict
Dictionary of best parameters found on the holdout data.
 scorer_ :
The function used to score models, which has a call signature of
scorer_(estimator, X, y)
. n_splits_ : int
Number of cross validation splits.
 multimetric_ : bool
Whether this cross validation search uses multiple metrics.
References
[1] “Nonstochastic best arm identification and hyperparameter optimization” by Jamieson, Kevin and Talwalkar, Ameet. 2016. https://arxiv.org/abs/1502.07943 Methods
decision_function
(X)fit
(X[, y])Find the best parameters for a particular model. get_params
([deep])Get parameters for this estimator. inverse_transform
(Xt)predict
(X)Predict for X. predict_log_proba
(X)Log of probability estimates. predict_proba
(X)Probability estimates. score
(X[, y])Returns the score on the given data. set_params
(**params)Set the parameters of this estimator. transform
(X)partial_fit 
__init__
(estimator, parameters, n_initial_parameters=10, n_initial_iter=None, max_iter=None, aggressiveness=3, test_size=None, patience=False, tol=0.001, random_state=None, scoring=None, verbose=False, prefix='')¶ Initialize self. See help(type(self)) for accurate signature.

fit
(X, y=None, **fit_params)¶ Find the best parameters for a particular model.
Parameters:  X, y : arraylike
 **fit_params
Additional partial fit keyword arguments for the estimator.

get_params
(deep=True)¶ Get parameters for this estimator.
Parameters:  deep : bool, default=True
If True, will return the parameters for this estimator and contained subobjects that are estimators.
Returns:  params : dict
Parameter names mapped to their values.

predict
(X)¶ Predict for X.
For dask inputs, a dask array or dataframe is returned. For other inputs (NumPy array, pandas dataframe, scipy sparse matrix), the regular return value is returned.
Parameters:  X : arraylike
Returns:  y : arraylike

predict_log_proba
(X)¶ Log of probability estimates.
For dask inputs, a dask array or dataframe is returned. For other inputs (NumPy array, pandas dataframe, scipy sparse matrix), the regular return value is returned.
If the underlying estimator does not have a
predict_proba
method, then anAttributeError
is raised.Parameters:  X : array or dataframe
Returns:  y : arraylike

predict_proba
(X)¶ Probability estimates.
For dask inputs, a dask array or dataframe is returned. For other inputs (NumPy array, pandas dataframe, scipy sparse matrix), the regular return value is returned.
If the underlying estimator does not have a
predict_proba
method, then anAttributeError
is raised.Parameters:  X : array or dataframe
Returns:  y : arraylike

score
(X, y=None) → float¶ Returns the score on the given data.
Parameters:  X : arraylike, shape = [n_samples, n_features]
Input data, where n_samples is the number of samples and n_features is the number of features.
 y : arraylike, shape = [n_samples] or [n_samples, n_output], optional
Target relative to X for classification or regression; None for unsupervised learning.
Returns:  score : float
return self.estimator.score(X, y)

set_params
(**params)¶ Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects (such as
Pipeline
). The latter have parameters of the form<component>__<parameter>
so that it’s possible to update each component of a nested object.Parameters:  **params : dict
Estimator parameters.
Returns:  self : estimator instance
Estimator instance.