class_docstr: Pipeline of transforms with a final estimator.
  
  Sequentially apply a list of transforms and a final estimator.
  Intermediate steps of the pipeline must be 'transforms', that is, they
  must implement fit and transform methods.
  The final estimator only needs to implement fit.
  
  The purpose of the pipeline is to assemble several steps that can be
  cross-validated together while setting different parameters.
  For this, it enables setting parameters of the various steps using their
  names and the parameter name separated by a '__', as in the example below.
  A step's estimator may be replaced entirely by setting the parameter
  with its name to another estimator, or a transformer removed by setting
  to None.
  
  Read more in the :ref:`User Guide <pipeline>`.
  
  Parameters
  ----------
  steps : list
      List of (name, transform) tuples (implementing fit/transform) that are
      chained, in the order in which they are chained, with the last object
      an estimator.
  
  Attributes
  ----------
  named_steps : dict
      Read-only attribute to access any step parameter by user given name.
      Keys are step names and values are steps parameters.
  
  Examples
  --------
  >>> from sklearn import svm
  >>> from sklearn.datasets import samples_generator
  >>> from sklearn.feature_selection import SelectKBest
  >>> from sklearn.feature_selection import f_regression
  >>> from sklearn.pipeline import Pipeline
  >>> # generate some data to play with
  >>> X, y = samples_generator.make_classification(
  ...     n_informative=5, n_redundant=0, random_state=42)
  >>> # ANOVA SVM-C
  >>> anova_filter = SelectKBest(f_regression, k=5)
  >>> clf = svm.SVC(kernel='linear')
  >>> anova_svm = Pipeline([('anova', anova_filter), ('svc', clf)])
  >>> # You can set the parameters using the names issued
  >>> # For instance, fit using a k of 10 in the SelectKBest
  >>> # and a parameter 'C' of the svm
  >>> anova_svm.set_params(anova__k=10, svc__C=.1).fit(X, y)
  ...                                              # doctest: +ELLIPSIS
  Pipeline(steps=[...])
  >>> prediction = anova_svm.predict(X)
  >>> anova_svm.score(X, y)                        # doctest: +ELLIPSIS
  0.829...
  >>> # getting the selected features chosen by anova_filter
  >>> anova_svm.named_steps['anova'].get_support()
  ... # doctest: +NORMALIZE_WHITESPACE
  array([False, False,  True,  True, False, False, True,  True, False,
         True,  False,  True,  True, False, True,  False, True, True,
         False, False], dtype=bool)
code: def __init__(self, steps):
      # shallow copy of steps
      self.steps = tosequence(steps)
      self._validate_steps()
  
imports: from collections import defaultdict
  from warnings import warn
  from abc import ABCMeta, abstractmethod
  import numpy
  from scipy import sparse
  from .base import BaseEstimator, TransformerMixin
  from .externals.joblib import Parallel, delayed
  from .externals import six
  from .utils import tosequence
  from .utils.metaestimators import if_delegate_has_method
label_desc: Use image node_id 1 to create a new Pipeline object from inherited base classes: _BasePipeline with example: obj = Pipeline(steps)