PLSRegression#

classsklearn.cross_decomposition.PLSRegression(n_components=2,*,scale=True,max_iter=500,tol=1e-06,copy=True)[source]#

PLS regression.

PLSRegression is also known as PLS2 or PLS1, depending on the number oftargets.

For a comparison between other cross decomposition algorithms, seeCompare cross decomposition methods.

Read more in theUser Guide.

Added in version 0.8.

Parameters:
n_componentsint, default=2

Number of components to keep. Should be in[1,n_features].

scalebool, default=True

Whether to scaleX andy.

max_iterint, default=500

The maximum number of iterations of the power method whenalgorithm='nipals'. Ignored otherwise.

tolfloat, default=1e-06

The tolerance used as convergence criteria in the power method: thealgorithm stops whenever the squared norm ofu_i-u_{i-1} is lessthantol, whereu corresponds to the left singular vector.

copybool, default=True

Whether to copyX andy infit before applying centering,and potentially scaling. IfFalse, these operations will be doneinplace, modifying both arrays.

Attributes:
x_weights_ndarray of shape (n_features, n_components)

The left singular vectors of the cross-covariance matrices of eachiteration.

y_weights_ndarray of shape (n_targets, n_components)

The right singular vectors of the cross-covariance matrices of eachiteration.

x_loadings_ndarray of shape (n_features, n_components)

The loadings ofX.

y_loadings_ndarray of shape (n_targets, n_components)

The loadings ofy.

x_scores_ndarray of shape (n_samples, n_components)

The transformed training samples.

y_scores_ndarray of shape (n_samples, n_components)

The transformed training targets.

x_rotations_ndarray of shape (n_features, n_components)

The projection matrix used to transformX.

y_rotations_ndarray of shape (n_targets, n_components)

The projection matrix used to transformy.

coef_ndarray of shape (n_target, n_features)

The coefficients of the linear model such thaty is approximated asy=X@coef_.T+intercept_.

intercept_ndarray of shape (n_targets,)

The intercepts of the linear model such thaty is approximated asy=X@coef_.T+intercept_.

Added in version 1.1.

n_iter_list of shape (n_components,)

Number of iterations of the power method, for eachcomponent.

n_features_in_int

Number of features seen duringfit.

feature_names_in_ndarray of shape (n_features_in_,)

Names of features seen duringfit. Defined only whenXhas feature names that are all strings.

Added in version 1.0.

See also

PLSCanonical

Partial Least Squares transformer and regressor.

Examples

>>>fromsklearn.cross_decompositionimportPLSRegression>>>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)

For a comparison between PLS Regression andPCA, seePrincipal Component Regression vs Partial Least Squares Regression.

fit(X,y)[source]#

Fit model to data.

Parameters:
Xarray-like of shape (n_samples, n_features)

Training vectors, wheren_samples is the number of samples andn_features is the number of predictors.

yarray-like of shape (n_samples,) or (n_samples, n_targets)

Target vectors, wheren_samples is the number of samples andn_targets is the number of response variables.

Returns:
selfobject

Fitted model.

fit_transform(X,y=None)[source]#

Learn and apply the dimension reduction on the train data.

Parameters:
Xarray-like of shape (n_samples, n_features)

Training vectors, wheren_samples is the number of samples andn_features is the number of predictors.

yarray-like of shape (n_samples, n_targets), default=None

Target vectors, wheren_samples is the number of samples andn_targets is the number of response variables.

Returns:
selfndarray of shape (n_samples, n_components)

Returnx_scores ify is not given,(x_scores,y_scores) otherwise.

get_feature_names_out(input_features=None)[source]#

Get output feature names for transformation.

The feature names out will prefixed by the lowercased class name. Forexample, if the transformer outputs 3 features, then the feature namesout are:["class_name0","class_name1","class_name2"].

Parameters:
input_featuresarray-like of str or None, default=None

Only used to validate feature names with the names seen infit.

Returns:
feature_names_outndarray of str objects

Transformed feature names.

get_metadata_routing()[source]#

Get metadata routing of this object.

Please checkUser Guide on how the routingmechanism works.

Returns:
routingMetadataRequest

AMetadataRequest encapsulatingrouting information.

get_params(deep=True)[source]#

Get parameters for this estimator.

Parameters:
deepbool, default=True

If True, will return the parameters for this estimator andcontained subobjects that are estimators.

Returns:
paramsdict

Parameter names mapped to their values.

inverse_transform(X,y=None)[source]#

Transform data back to its original space.

Parameters:
Xarray-like of shape (n_samples, n_components)

New data, wheren_samples is the number of samplesandn_components is the number of pls components.

yarray-like of shape (n_samples,) or (n_samples, n_components)

New target, wheren_samples is the number of samplesandn_components is the number of pls components.

Returns:
X_originalndarray of shape (n_samples, n_features)

Return the reconstructedX data.

y_originalndarray of shape (n_samples, n_targets)

Return the reconstructedX target. Only returned wheny is given.

Notes

This transformation will only be exact ifn_components=n_features.

predict(X,copy=True)[source]#

Predict targets of given samples.

Parameters:
Xarray-like of shape (n_samples, n_features)

Samples.

copybool, default=True

Whether to copyX or perform in-place normalization.

Returns:
y_predndarray of shape (n_samples,) or (n_samples, n_targets)

Returns predicted values.

Notes

This call requires the estimation of a matrix of shape(n_features,n_targets), which may be an issue in high dimensionalspace.

score(X,y,sample_weight=None)[source]#

Returncoefficient of determination on test data.

The coefficient of determination,\(R^2\), is defined as\((1 - \frac{u}{v})\), where\(u\) is the residualsum 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 themodel can be arbitrarily worse). A constant model that always predictsthe expected value ofy, disregarding the input features, would geta\(R^2\) score of 0.0.

Parameters:
Xarray-like of shape (n_samples, n_features)

Test samples. For some estimators this may be a precomputedkernel matrix or a list of generic objects instead with shape(n_samples,n_samples_fitted), wheren_samples_fittedis the number of samples used in the fitting for the estimator.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

True values forX.

sample_weightarray-like of shape (n_samples,), default=None

Sample weights.

Returns:
scorefloat

\(R^2\) ofself.predict(X) w.r.t.y.

Notes

The\(R^2\) score used when callingscore on a regressor usesmultioutput='uniform_average' from version 0.23 to keep consistentwith default value ofr2_score.This influences thescore method of all the multioutputregressors (except forMultiOutputRegressor).

set_output(*,transform=None)[source]#

Set output container.

SeeIntroducing the set_output APIfor an example on how to use the API.

Parameters:
transform{“default”, “pandas”, “polars”}, default=None

Configure output oftransform andfit_transform.

  • "default": Default output format of a transformer

  • "pandas": DataFrame output

  • "polars": Polars output

  • None: Transform configuration is unchanged

Added in version 1.4:"polars" option was added.

Returns:
selfestimator instance

Estimator instance.

set_params(**params)[source]#

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects(such asPipeline). The latter haveparameters of the form<component>__<parameter> so that it’spossible to update each component of a nested object.

Parameters:
**paramsdict

Estimator parameters.

Returns:
selfestimator instance

Estimator instance.

set_predict_request(*,copy:bool|None|str='$UNCHANGED$')PLSRegression[source]#

Configure whether metadata should be requested to be passed to thepredict method.

Note that this method is only relevant when this estimator is used as asub-estimator within ameta-estimator and metadata routing is enabledwithenable_metadata_routing=True (seesklearn.set_config).Please check theUser Guide on how the routingmechanism works.

The options for each parameter are:

  • True: metadata is requested, and passed topredict if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it topredict.

  • None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str: metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default (sklearn.utils.metadata_routing.UNCHANGED) retains theexisting request. This allows you to change the request for someparameters and not others.

Added in version 1.3.

Parameters:
copystr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing forcopy parameter inpredict.

Returns:
selfobject

The updated object.

set_score_request(*,sample_weight:bool|None|str='$UNCHANGED$')PLSRegression[source]#

Configure whether metadata should be requested to be passed to thescore method.

Note that this method is only relevant when this estimator is used as asub-estimator within ameta-estimator and metadata routing is enabledwithenable_metadata_routing=True (seesklearn.set_config).Please check theUser Guide on how the routingmechanism works.

The options for each parameter are:

  • True: metadata is requested, and passed toscore if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it toscore.

  • None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str: metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default (sklearn.utils.metadata_routing.UNCHANGED) retains theexisting request. This allows you to change the request for someparameters and not others.

Added in version 1.3.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing forsample_weight parameter inscore.

Returns:
selfobject

The updated object.

set_transform_request(*,copy:bool|None|str='$UNCHANGED$')PLSRegression[source]#

Configure whether metadata should be requested to be passed to thetransform method.

Note that this method is only relevant when this estimator is used as asub-estimator within ameta-estimator and metadata routing is enabledwithenable_metadata_routing=True (seesklearn.set_config).Please check theUser Guide on how the routingmechanism works.

The options for each parameter are:

  • True: metadata is requested, and passed totransform if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it totransform.

  • None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str: metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default (sklearn.utils.metadata_routing.UNCHANGED) retains theexisting request. This allows you to change the request for someparameters and not others.

Added in version 1.3.

Parameters:
copystr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing forcopy parameter intransform.

Returns:
selfobject

The updated object.

transform(X,y=None,copy=True)[source]#

Apply the dimension reduction.

Parameters:
Xarray-like of shape (n_samples, n_features)

Samples to transform.

yarray-like of shape (n_samples, n_targets), default=None

Target vectors.

copybool, default=True

Whether to copyX andy, or perform in-place normalization.

Returns:
x_scores, y_scoresarray-like or tuple of array-like

Returnx_scores ify is not given,(x_scores,y_scores) otherwise.

Gallery examples#

Compare cross decomposition methods

Compare cross decomposition methods

Principal Component Regression vs Partial Least Squares Regression

Principal Component Regression vs Partial Least Squares Regression