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: Apply the dimension reduction learned on the train data.
docstr_tok: ["Apply","the","dimension","reduction","learned","on","the","train","data","."]
code: def transform(self, X, Y=None):
      """Apply the dimension reduction learned on the train data."""
      check_is_fitted(self, "x_mean_")
      X = check_array(X, dtype=np.float64)
      Xr = (X - self.x_mean_) / self.x_std_
      x_scores = np.dot(Xr, self.x_weights_)
      if Y is not None:
          if Y.ndim == 1:
              Y = Y.reshape(-1, 1)
          Yr = (Y - self.y_mean_) / self.y_std_
          y_scores = np.dot(Yr, self.y_weights_)
          return x_scores, y_scores
      return x_scores
  
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 3 for calling the PLSSVD obj's underlying member method code with example usage: obj.transform(X, Y) and returns: x_scores, x_scores,  y_scores