class_docstr: Partial Least Square SVD
  
  Simply perform a svd on the crosscovariance matrix: X'Y
  There are no iterative deflation here.
  
  Read more in the :ref:`User Guide <cross_decomposition>`.
  
  Parameters
  ----------
  n_components : int, default 2
      Number of components to keep.
  
  scale : boolean, default True
      Whether to scale X and Y.
  
  copy : boolean, default True
      Whether to copy X and Y, or perform in-place computations.
  
  Attributes
  ----------
  x_weights_ : array, [p, n_components]
      X block weights vectors.
  
  y_weights_ : array, [q, n_components]
      Y block weights vectors.
  
  x_scores_ : array, [n_samples, n_components]
      X scores.
  
  y_scores_ : array, [n_samples, n_components]
      Y scores.
  
  See also
  --------
  PLSCanonical
  CCA
code: def __init__(self, n_components=2, scale=True, copy=True):
      self.n_components = n_components
      self.scale = scale
      self.copy = copy
  
imports: from distutils.version import LooseVersion
  from sklearn.utils.extmath import svd_flip
  from ..base import BaseEstimator, RegressorMixin, TransformerMixin
  from ..utils import check_array, check_consistent_length
  from ..externals import six
  import warnings
  from abc import ABCMeta, abstractmethod
  import numpy
  from scipy import linalg
  from ..utils import arpack
  from ..utils.validation import check_is_fitted, FLOAT_DTYPES
  import scipy
label_desc: Use image node_id 1 to create a new PLSSVD object from inherited base classes: BaseEstimator, TransformerMixin with example: obj = PLSSVD(n_components, scale, copy)