class_docstr: Grid of parameters with a discrete number of values for each.
  
  Can be used to iterate over parameter value combinations with the
  Python built-in function iter.
  
  Read more in the :ref:`User Guide <search>`.
  
  Parameters
  ----------
  param_grid : dict of string to sequence, or sequence of such
      The parameter grid to explore, as a dictionary mapping estimator
      parameters to sequences of allowed values.
  
      An empty dict signifies default parameters.
  
      A sequence of dicts signifies a sequence of grids to search, and is
      useful to avoid exploring parameter combinations that make no sense
      or have no effect. See the examples below.
  
  Examples
  --------
  >>> from sklearn.model_selection import ParameterGrid
  >>> param_grid = {'a': [1, 2], 'b': [True, False]}
  >>> list(ParameterGrid(param_grid)) == (
  ...    [{'a': 1, 'b': True}, {'a': 1, 'b': False},
  ...     {'a': 2, 'b': True}, {'a': 2, 'b': False}])
  True
  
  >>> grid = [{'kernel': ['linear']}, {'kernel': ['rbf'], 'gamma': [1, 10]}]
  >>> list(ParameterGrid(grid)) == [{'kernel': 'linear'},
  ...                               {'kernel': 'rbf', 'gamma': 1},
  ...                               {'kernel': 'rbf', 'gamma': 10}]
  True
  >>> ParameterGrid(grid)[1] == {'kernel': 'rbf', 'gamma': 1}
  True
  
  See also
  --------
  :class:`GridSearchCV`:
      Uses :class:`ParameterGrid` to perform a full parallelized parameter
      search.
class_docstr_tok: ["Grid","of","parameters","with","a","discrete","number","of","values","for","each",".","Can","be","used","to","iterate","over","parameter","value","combinations","with","the","Python","built-in","function","iter",".","Read","more","in","the",":","ref",":","`","User","Guide","<","search",">","`",".","Parameters","--","--","--","--","--","param_grid",":","dict","of","string","to","sequence",",","or","sequence","of","such","The","parameter","grid","to","explore",",","as","a","dictionary","mapping","estimator","parameters","to","sequences","of","allowed","values",".","An","empty","dict","signifies","default","parameters",".","A","sequence","of","dicts","signifies","a","sequence","of","grids","to","search",",","and","is","useful","to","avoid","exploring","parameter","combinations","that","make","no","sense","or","have","no","effect",".","See","the","examples","below",".","Examples","--","--","--","--",">",">",">","from","sklearn.model_selection","import","ParameterGrid",">",">",">","param_grid","=","{","'","a","'",":","[","1",",","2","]",",","'","b","'",":","[","True",",","False","]","}",">",">",">","list","(","ParameterGrid","(","param_grid",")",")","==","(","...","[","{","'","a","'",":","1",",","'","b","'",":","True","}",",","{","'","a","'",":","1",",","'","b","'",":","False","}",",","...","{","'","a","'",":","2",",","'","b","'",":","True","}",",","{","'","a","'",":","2",",","'","b","'",":","False","}","]",")","True",">",">",">","grid","=","[","{","'kernel","'",":","[","'linear","'","]","}",",","{","'kernel","'",":","[","'rbf","'","]",",","'gamma","'",":","[","1",",","10","]","}","]",">",">",">","list","(","ParameterGrid","(","grid",")",")","==","[","{","'kernel","'",":","'linear","'","}",",","...","{","'kernel","'",":","'rbf","'",",","'gamma","'",":","1","}",",","...","{","'kernel","'",":","'rbf","'",",","'gamma","'",":","10","}","]","True",">",">",">","ParameterGrid","(","grid",")","[","1","]","==","{","'kernel","'",":","'rbf","'",",","'gamma","'",":","1","}","True","See","also","--","--","--","--",":","class",":","`","GridSearchCV","`",":","Uses",":","class",":","`","ParameterGrid","`","to","perform","a","full","parallelized","parameter","search","."]
docstr: Number of points on the grid.
code: def __len__(self):
      """Number of points on the grid."""
      # Product function that can handle iterables (np.product can't).
      product = partial(reduce, operator.mul)
      return sum(
          product(len(v) for v in p.values()) if p else 1
          for p in self.param_grid
      )
  
imports: from __future__ import print_function
  from __future__ import division
  from abc import ABCMeta, abstractmethod
  from collections import Mapping, namedtuple, Sized, defaultdict, Sequence
  from functools import partial, reduce
  from itertools import product
  import operator
  import warnings
  import numpy
  from ..base import BaseEstimator, is_classifier, clone
  from ..base import MetaEstimatorMixin
  from ._split import check_cv
  from ._validation import _fit_and_score
  from ..exceptions import NotFittedError
  from ..externals.joblib import Parallel, delayed
  from ..externals import six
  from ..utils import check_random_state
  from ..utils.fixes import sp_version
  from ..utils.fixes import rankdata
  from ..utils.fixes import MaskedArray
  from ..utils.random import sample_without_replacement
  from ..utils.validation import indexable, check_is_fitted
  from ..utils.metaestimators import if_delegate_has_method
  from ..metrics.scorer import check_scoring
label_desc: Use image node_id 3 for calling the ParameterGrid obj's underlying member method code with example usage: obj.__len__() and returns: sum