sklearn.cross_decomposition
.PLSRegression¶

class
sklearn.cross_decomposition.
PLSRegression
(n_components=2, scale=True, max_iter=500, tol=1e06, copy=True)[source]¶ PLS regression
PLSRegression implements the PLS 2 blocks regression known as PLS2 or PLS1 in case of one dimensional response. This class inherits from _PLS with mode=”A”, deflation_mode=”regression”, norm_y_weights=False and algorithm=”nipals”.
Read more in the User Guide.
 Parameters
 n_componentsint, (default 2)
Number of components to keep.
 scaleboolean, (default True)
whether to scale the data
 max_iteran integer, (default 500)
the maximum number of iterations of the NIPALS inner loop (used only if algorithm=”nipals”)
 tolnonnegative real
Tolerance used in the iterative algorithm default 1e06.
 copyboolean, default True
Whether the deflation should be done on a copy. Let the default value to True unless you don’t care about side effect
 Attributes
 x_weights_array, [p, n_components]
X block weights vectors.
 y_weights_array, [q, n_components]
Y block weights vectors.
 x_loadings_array, [p, n_components]
X block loadings vectors.
 y_loadings_array, [q, n_components]
Y block loadings vectors.
 x_scores_array, [n_samples, n_components]
X scores.
 y_scores_array, [n_samples, n_components]
Y scores.
 x_rotations_array, [p, n_components]
X block to latents rotations.
 y_rotations_array, [q, n_components]
Y block to latents rotations.
 coef_array, [p, q]
The coefficients of the linear model:
Y = X coef_ + Err
 n_iter_arraylike
Number of iterations of the NIPALS inner loop for each component.
Notes
Matrices:
T: x_scores_ U: y_scores_ W: x_weights_ C: y_weights_ P: x_loadings_ Q: y_loadings_
Are computed such that:
X = T P.T + Err and Y = U Q.T + Err T[:, k] = Xk W[:, k] for k in range(n_components) U[:, k] = Yk C[:, k] for k in range(n_components) x_rotations_ = W (P.T W)^(1) y_rotations_ = C (Q.T C)^(1)
where Xk and Yk are residual matrices at iteration k.
For each component k, find weights u, v that optimizes:
max corr(Xk u, Yk v) * std(Xk u) std(Yk u)
, such thatu = 1
Note that it maximizes both the correlations between the scores and the intrablock variances.
The residual matrix of X (Xk+1) block is obtained by the deflation on the current X score: x_score.
The residual matrix of Y (Yk+1) block is obtained by deflation on the current X score. This performs the PLS regression known as PLS2. This mode is prediction oriented.
This implementation provides the same results that 3 PLS packages provided in the R language (Rproject):
“mixOmics” with function pls(X, Y, mode = “regression”)
“plspm ” with function plsreg2(X, Y)
“pls” with function oscorespls.fit(X, Y)
References
Jacob A. Wegelin. A survey of Partial Least Squares (PLS) methods, with emphasis on the twoblock case. Technical Report 371, Department of Statistics, University of Washington, Seattle, 2000.
In french but still a reference: Tenenhaus, M. (1998). La regression PLS: theorie et pratique. Paris: Editions Technic.
Examples
>>> from sklearn.cross_decomposition import PLSRegression >>> X = [[0., 0., 1.], [1.,0.,0.], [2.,2.,2.], [2.,5.,4.]] >>> Y = [[0.1, 0.2], [0.9, 1.1], [6.2, 5.9], [11.9, 12.3]] >>> pls2 = PLSRegression(n_components=2) >>> pls2.fit(X, Y) PLSRegression() >>> Y_pred = pls2.predict(X)
Methods
fit
(self, X, Y)Fit model to data.
fit_transform
(self, X[, y])Learn and apply the dimension reduction on the train data.
get_params
(self[, deep])Get parameters for this estimator.
predict
(self, X[, copy])Apply the dimension reduction learned on the train data.
score
(self, X, y[, sample_weight])Returns the coefficient of determination R^2 of the prediction.
set_params
(self, \*\*params)Set the parameters of this estimator.
transform
(self, X[, Y, copy])Apply the dimension reduction learned on the train data.

__init__
(self, n_components=2, scale=True, max_iter=500, tol=1e06, copy=True)[source]¶ Initialize self. See help(type(self)) for accurate signature.

fit
(self, X, Y)[source]¶ Fit model to data.
 Parameters
 Xarraylike, shape = [n_samples, n_features]
Training vectors, where n_samples is the number of samples and n_features is the number of predictors.
 Yarraylike, shape = [n_samples, n_targets]
Target vectors, where n_samples is the number of samples and n_targets is the number of response variables.

fit_transform
(self, X, y=None)[source]¶ Learn and apply the dimension reduction on the train data.
 Parameters
 Xarraylike, shape = [n_samples, n_features]
Training vectors, where n_samples is the number of samples and n_features is the number of predictors.
 yarraylike, shape = [n_samples, n_targets]
Target vectors, where n_samples is the number of samples and n_targets is the number of response variables.
 Returns
 x_scores if Y is not given, (x_scores, y_scores) otherwise.

get_params
(self, deep=True)[source]¶ Get parameters for this estimator.
 Parameters
 deepboolean, optional
If True, will return the parameters for this estimator and contained subobjects that are estimators.
 Returns
 paramsmapping of string to any
Parameter names mapped to their values.

predict
(self, X, copy=True)[source]¶ Apply the dimension reduction learned on the train data.
 Parameters
 Xarraylike, shape = [n_samples, n_features]
Training vectors, where n_samples is the number of samples and n_features is the number of predictors.
 copyboolean, default True
Whether to copy X and Y, or perform inplace normalization.
Notes
This call requires the estimation of a p x q matrix, which may be an issue in high dimensional space.

score
(self, X, y, sample_weight=None)[source]¶ Returns the coefficient of determination R^2 of the prediction.
The coefficient R^2 is defined as (1  u/v), where u is the residual sum of squares ((y_true  y_pred) ** 2).sum() and v is the total sum of squares ((y_true  y_true.mean()) ** 2).sum(). The best possible score is 1.0 and it can be negative (because the model can be arbitrarily worse). A constant model that always predicts the expected value of y, disregarding the input features, would get a R^2 score of 0.0.
 Parameters
 Xarraylike, shape = (n_samples, n_features)
Test samples. For some estimators this may be a precomputed kernel matrix instead, shape = (n_samples, n_samples_fitted], where n_samples_fitted is the number of samples used in the fitting for the estimator.
 yarraylike, shape = (n_samples) or (n_samples, n_outputs)
True values for X.
 sample_weightarraylike, shape = [n_samples], optional
Sample weights.
 Returns
 scorefloat
R^2 of self.predict(X) wrt. y.
Notes
The R2 score used when calling
score
on a regressor will usemultioutput='uniform_average'
from version 0.23 to keep consistent withr2_score
. This will influence thescore
method of all the multioutput regressors (except forMultiOutputRegressor
). To specify the default value manually and avoid the warning, please either callr2_score
directly or make a custom scorer withmake_scorer
(the builtin scorer'r2'
usesmultioutput='uniform_average'
).

set_params
(self, **params)[source]¶ Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects (such as pipelines). The latter have parameters of the form
<component>__<parameter>
so that it’s possible to update each component of a nested object. Returns
 self

transform
(self, X, Y=None, copy=True)[source]¶ Apply the dimension reduction learned on the train data.
 Parameters
 Xarraylike, shape = [n_samples, n_features]
Training vectors, where n_samples is the number of samples and n_features is the number of predictors.
 Yarraylike, shape = [n_samples, n_targets]
Target vectors, where n_samples is the number of samples and n_targets is the number of response variables.
 copyboolean, default True
Whether to copy X and Y, or perform inplace normalization.
 Returns
 x_scores if Y is not given, (x_scores, y_scores) otherwise.