class_docstr: Soft Voting/Majority Rule classifier for unfitted estimators.
  
  .. versionadded:: 0.17
  
  Read more in the :ref:`User Guide <voting_classifier>`.
  
  Parameters
  ----------
  estimators : list of (string, estimator) tuples
      Invoking the ``fit`` method on the ``VotingClassifier`` will fit clones
      of those original estimators that will be stored in the class attribute
      `self.estimators_`.
  
  voting : str, {'hard', 'soft'} (default='hard')
      If 'hard', uses predicted class labels for majority rule voting.
      Else if 'soft', predicts the class label based on the argmax of
      the sums of the predicted probabilities, which is recommended for
      an ensemble of well-calibrated classifiers.
  
  weights : array-like, shape = [n_classifiers], optional (default=`None`)
      Sequence of weights (`float` or `int`) to weight the occurrences of
      predicted class labels (`hard` voting) or class probabilities
      before averaging (`soft` voting). Uses uniform weights if `None`.
  
  n_jobs : int, optional (default=1)
      The number of jobs to run in parallel for ``fit``.
      If -1, then the number of jobs is set to the number of cores.
  
  Attributes
  ----------
  estimators_ : list of classifiers
      The collection of fitted sub-estimators.
  
  classes_ : array-like, shape = [n_predictions]
      The classes labels.
  
  Examples
  --------
  >>> import numpy as np
  >>> from sklearn.linear_model import LogisticRegression
  >>> from sklearn.naive_bayes import GaussianNB
  >>> from sklearn.ensemble import RandomForestClassifier, VotingClassifier
  >>> clf1 = LogisticRegression(random_state=1)
  >>> clf2 = RandomForestClassifier(random_state=1)
  >>> clf3 = GaussianNB()
  >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
  >>> y = np.array([1, 1, 1, 2, 2, 2])
  >>> eclf1 = VotingClassifier(estimators=[
  ...         ('lr', clf1), ('rf', clf2), ('gnb', clf3)], voting='hard')
  >>> eclf1 = eclf1.fit(X, y)
  >>> print(eclf1.predict(X))
  [1 1 1 2 2 2]
  >>> eclf2 = VotingClassifier(estimators=[
  ...         ('lr', clf1), ('rf', clf2), ('gnb', clf3)],
  ...         voting='soft')
  >>> eclf2 = eclf2.fit(X, y)
  >>> print(eclf2.predict(X))
  [1 1 1 2 2 2]
  >>> eclf3 = VotingClassifier(estimators=[
  ...        ('lr', clf1), ('rf', clf2), ('gnb', clf3)],
  ...        voting='soft', weights=[2,1,1])
  >>> eclf3 = eclf3.fit(X, y)
  >>> print(eclf3.predict(X))
  [1 1 1 2 2 2]
  >>>
docstr: Return estimator parameter names for GridSearch support
docstr_tok: ["Return","estimator","parameter","names","for","GridSearch","support"]
code: def get_params(self, deep=True):
      """Return estimator parameter names for GridSearch support"""
      if not deep:
          return super(VotingClassifier, self).get_params(deep=False)
      else:
          out = super(VotingClassifier, self).get_params(deep=False)
          out.update(self.named_estimators.copy())
          for name, step in six.iteritems(self.named_estimators):
              for key, value in six.iteritems(
                  step.get_params(deep=True)
              ):
                  out["%s__%s" % (name, key)] = value
          return out
  
imports: import numpy
  from ..base import BaseEstimator
  from ..base import ClassifierMixin
  from ..base import TransformerMixin
  from ..base import clone
  from ..preprocessing import LabelEncoder
  from ..externals import six
  from ..externals.joblib import Parallel, delayed
  from ..utils.validation import has_fit_parameter, check_is_fitted
label_desc: Use image node_id 8 for calling the VotingClassifier obj's underlying member method code with example usage: obj.get_params(deep) and returns: super, out