class_docstr: Components that take parameters. This also provides an internal
  param map to store parameter values attached to the instance.
  
  .. versionadded:: 1.3.0
docstr: Creates a copy of this instance with the same uid and some
  extra params. The default implementation creates a
  shallow copy using :py:func:`copy.copy`, and then copies the
  embedded and extra parameters over and returns the copy.
  Subclasses should override this method if the default approach
  is not sufficient.
  
  Parameters
  ----------
  extra : dict, optional
      Extra parameters to copy to the new instance
  
  Returns
  -------
  :py:class:`Params`
      Copy of this instance
docstr_tok: ["Creates","a","copy","of","this","instance","with","the","same","uid","and","some","extra","params",".","The","default","implementation","creates","a","shallow","copy","using",":","py",":","func",":","`","copy.copy","`",",","and","then","copies","the","embedded","and","extra","parameters","over","and","returns","the","copy",".","Subclasses","should","override","this","method","if","the","default","approach","is","not","sufficient",".","Parameters","--","--","--","--","--","extra",":","dict",",","optional","Extra","parameters","to","copy","to","the","new","instance","Returns","--","--","--","-",":","py",":","class",":","`","Params","`","Copy","of","this","instance"]
code: def copy(self: P, extra: Optional["ParamMap"] = None) -> P:
      """
      Creates a copy of this instance with the same uid and some
      extra params. The default implementation creates a
      shallow copy using :py:func:`copy.copy`, and then copies the
      embedded and extra parameters over and returns the copy.
      Subclasses should override this method if the default approach
      is not sufficient.
  
      Parameters
      ----------
      extra : dict, optional
          Extra parameters to copy to the new instance
  
      Returns
      -------
      :py:class:`Params`
          Copy of this instance
      """
      if extra is None:
          extra = dict()
      that = copy.copy(self)
      that._paramMap = {}
      that._defaultParamMap = {}
      return self._copyValues(that, extra)
  
imports: import array
  from abc import ABCMeta
  import copy
  from typing import Any, Callable, Generic, List, Optional, overload, TypeVar, Union, TYPE_CHECKING
  import numpy
  from py4j.java_gateway import JavaObject
  from pyspark.ml.linalg import DenseVector, Vector, Matrix
  from pyspark.ml.util import Identifiable
label_desc: Use image node_id 15 for calling the Params obj's underlying member method code with example usage: obj.copy(extra) and returns: self