Toggle Menu
Prev Up Next

scikit-learn 1.3.2
Other versions

Please cite us if you use the software.

# `sklearn.model_selection`.ParameterSampler

class sklearn.model_selection.ParameterSampler(param_distributions, n_iter, *, random_state=None)

  Generator on parameters sampled from given distributions.

  Non-deterministic iterable over random candidate combinations for hyper- parameter search. If all parameters are presented as a list, sampling without replacement is performed. If at least one parameter is given as a distribution, sampling with replacement is used. It is highly recommended to use continuous distributions for continuous parameters.

  Read more in the User Guide.

  Parameters:
    param_distributions dict

      Dictionary with parameters names (`str`) 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. If a list of dicts is given, first a dict is sampled uniformly, and then a parameter is sampled using that dict as above.

    n_iter int

      Number of parameter settings that are produced.

    random_state int, RandomState instance or None, default=None

      Pseudo random number generator state used for random uniform sampling from lists of possible values instead of scipy.stats distributions. Pass an int for reproducible output across multiple function calls. See Glossary.

  Returns:
    params dict of str to any

      Yields dictionaries mapping each estimator parameter to as sampled value.

  Examples

      >>> from sklearn.model_selection import ParameterSampler
      >>> from scipy.stats.distributions import expon
      >>> import numpy as np
      >>> rng = np.random.RandomState(0)
      >>> param_grid = {'a':[1, 2], 'b': expon()}
      >>> param_list = list(ParameterSampler(param_grid, n_iter=4,
      ...                                    random_state=rng))
      >>> rounded_list = [dict((k, round(v, 6)) for (k, v) in d.items())
      ...                 for d in param_list]
      >>> rounded_list == [{'b': 0.89856, 'a': 1},
      ...                  {'b': 0.923223, 'a': 1},
      ...                  {'b': 1.878964, 'a': 2},
      ...                  {'b': 1.038159, 'a': 2}]
      True