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
docstr: Learn and apply the dimension reduction on the train data.
  
  Parameters
  ----------
  X : array-like of predictors, shape = [n_samples, p]
      Training vectors, where n_samples in the number of samples and
      p is the number of predictors.
  
  Y : array-like of response, shape = [n_samples, q], optional
      Training vectors, where n_samples in the number of samples and
      q is the number of response variables.
  
  Returns
  -------
  x_scores if Y is not given, (x_scores, y_scores) otherwise.
docstr_tok: ["Learn","and","apply","the","dimension","reduction","on","the","train","data",".","Parameters","--","--","--","--","--","X",":","array-like","of","predictors",",","shape","=","[","n_samples",",","p","]","Training","vectors",",","where","n_samples","in","the","number","of","samples","and","p","is","the","number","of","predictors",".","Y",":","array-like","of","response",",","shape","=","[","n_samples",",","q","]",",","optional","Training","vectors",",","where","n_samples","in","the","number","of","samples","and","q","is","the","number","of","response","variables",".","Returns","--","--","--","-","x_scores","if","Y","is","not","given",",","(","x_scores",",","y_scores",")","otherwise","."]
code: def fit_transform(self, X, y=None, **fit_params):
      """Learn and apply the dimension reduction on the train data.
  
      Parameters
      ----------
      X : array-like of predictors, shape = [n_samples, p]
          Training vectors, where n_samples in the number of samples and
          p is the number of predictors.
  
      Y : array-like of response, shape = [n_samples, q], optional
          Training vectors, where n_samples in the number of samples and
          q is the number of response variables.
  
      Returns
      -------
      x_scores if Y is not given, (x_scores, y_scores) otherwise.
      """
      return self.fit(X, y, **fit_params).transform(X, y)
  
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 4 for calling the PLSSVD obj's underlying member method code with example usage: obj.fit_transform(X, y) and returns: self