class_docstr: A simple pipeline, which acts as an estimator. A Pipeline consists
  of a sequence of stages, each of which is either an
  :py:class:`Estimator` or a :py:class:`Transformer`. When
  :py:meth:`Pipeline.fit` is called, the stages are executed in
  order. If a stage is an :py:class:`Estimator`, its
  :py:meth:`Estimator.fit` method will be called on the input
  dataset to fit a model. Then the model, which is a transformer,
  will be used to transform the dataset as the input to the next
  stage. If a stage is a :py:class:`Transformer`, its
  :py:meth:`Transformer.transform` method will be called to produce
  the dataset for the next stage. The fitted model from a
  :py:class:`Pipeline` is a :py:class:`PipelineModel`, which
  consists of fitted models and transformers, corresponding to the
  pipeline stages. If stages is an empty list, the pipeline acts as an
  identity transformer.
  
  .. versionadded:: 3.5.0
  
  Examples
  --------
  >>> from pyspark.ml.connect import Pipeline
  >>> from pyspark.ml.connect.classification import LogisticRegression
  >>> from pyspark.ml.connect.feature import StandardScaler
  >>> scaler = StandardScaler(inputCol='features', outputCol='scaled_features')
  >>> lor = LogisticRegression(maxIter=20, learningRate=0.01)
  >>> pipeline=Pipeline(stages=[scaler, lor])
  >>> dataset = spark.createDataFrame([
  ...     ([1.0, 2.0], 1),
  ...     ([2.0, -1.0], 1),
  ...     ([-3.0, -2.0], 0),
  ...     ([-1.0, -2.0], 0),
  ... ], schema=['features', 'label'])
  >>> pipeline_model = pipeline.fit(dataset)
  >>> transformed_dataset = pipeline_model.transform(dataset)
  >>> transformed_dataset.show()
  +------------+-----+--------------------+----------+--------------------+
  |    features|label|     scaled_features|prediction|         probability|
  +------------+-----+--------------------+----------+--------------------+
  |  [1.0, 2.0]|    1|[0.56373452100212...|         1|[0.02423273026943...|
  | [2.0, -1.0]|    1|[1.01472213780381...|         1|[0.09334788471460...|
  |[-3.0, -2.0]|    0|[-1.2402159462046...|         0|[0.99808156490325...|
  |[-1.0, -2.0]|    0|[-0.3382407126012...|         0|[0.96210002899169...|
  +------------+-----+--------------------+----------+--------------------+
  >>> pipeline_model.saveToLocal("/tmp/pipeline")
  >>> loaded_pipeline_model = PipelineModel.loadFromLocal("/tmp/pipeline")
docstr: setParams(self, \*, stages=None)
  Sets params for Pipeline.
docstr_tok: ["setParams","(","self",",","\\","*",",","stages=None",")","Sets","params","for","Pipeline","."]
code: def setParams(
      self, *, stages: Optional[List[Params]] = None
  ) -> "Pipeline":
      """
      setParams(self, \\*, stages=None)
      Sets params for Pipeline.
      """
      kwargs = self._input_kwargs
      return self._set(**kwargs)
  
imports: from typing import Any, Dict, List, Optional, Union, cast, TYPE_CHECKING
  import pandas
  from pyspark import keyword_only, since
  from pyspark.ml.connect.base import Estimator, Model, Transformer
  from pyspark.ml.connect.io_utils import ParamsReadWrite, MetaAlgorithmReadWrite
  from pyspark.ml.param import Param, Params
  from pyspark.ml.common import inherit_doc
  from pyspark.sql.dataframe import DataFrame
label_desc: Use image node_id 4 for calling the Pipeline obj's underlying member method code with example usage: obj.setParams() and returns: self