PLSSVD#

class sklearn.cross_decomposition.PLSSVD(n_components=2, *, scale=True, copy=True)[源码]#

偏最小二乘SVD。

此变换器(transformer)仅对交叉协方差矩阵 X'y 执行SVD。它能够同时投影训练数据 X 和目标 y。训练数据 X 投影在左奇异向量上,而目标则投影在右奇异向量上。

用户指南中阅读更多内容。

版本 0.8 中新增。

参数:
n_components整型,默认值为 2

要保留的组件数量。应在 [1, min(n_samples, n_features, n_targets)] 范围内。

scale布尔型,默认值为 True

是否对 Xy 进行缩放。

copy布尔型,默认值为 True

在应用中心化和(可能)缩放之前,是否在 `fit` 中复制 Xy。如果为 False,这些操作将原地完成,修改两个数组。

属性:
x_weights_形状为 (n_features, n_components) 的 ndarray

交叉协方差矩阵SVD的左奇异向量。用于在 transform 中投影 X

y_weights_形状为 (n_targets, n_components) 的 ndarray

交叉协方差矩阵SVD的右奇异向量。用于在 transform 中投影 X

n_features_in_整型

拟合(fit)期间看到的特征数量。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

拟合(fit)期间看到的特征名称。仅当 X 的所有特征名称都是字符串时才定义。

版本 1.0 中新增。

另请参见

PLSCanonical

偏最小二乘变换器和回归器。

CCA

典型相关分析。

示例

>>> import numpy as np
>>> from sklearn.cross_decomposition import PLSSVD
>>> X = np.array([[0., 0., 1.],
...               [1., 0., 0.],
...               [2., 2., 2.],
...               [2., 5., 4.]])
>>> y = np.array([[0.1, -0.2],
...               [0.9, 1.1],
...               [6.2, 5.9],
...               [11.9, 12.3]])
>>> pls = PLSSVD(n_components=2).fit(X, y)
>>> X_c, y_c = pls.transform(X, y)
>>> X_c.shape, y_c.shape
((4, 2), (4, 2))
fit(X, y)[源码]#

将模型拟合到数据。

参数:
X形状为 (n_samples, n_features) 的类数组对象

训练样本。

y形状为 (n_samples,) 或 (n_samples, n_targets) 的类数组对象

目标。

返回:
self对象

已拟合的估计器。

fit_transform(X, y=None)[源码]#

学习并应用降维。

参数:
X形状为 (n_samples, n_features) 的类数组对象

训练样本。

y形状为 (n_samples,) 或 (n_samples, n_targets) 的类数组对象,默认值为 None

目标。

返回:
out类数组对象或类数组对象的元组

如果 y is not None,则为转换后的数据 X_transformed;否则为 (X_transformed, y_transformed)

get_feature_names_out(input_features=None)[源码]#

获取转换的输出特征名称。

输出特征名称将以小写类名称为前缀。例如,如果变换器输出 3 个特征,则输出特征名称为:["class_name0", "class_name1", "class_name2"]

参数:
input_features字符串的类数组对象或 None,默认值为 None

仅用于验证特征名称与 fit 中看到的名称是否一致。

返回:
feature_names_out字符串对象组成的 ndarray

转换后的特征名称。

get_metadata_routing()[源码]#

获取此对象的元数据路由。

请查看用户指南以了解路由机制的工作原理。

返回:
routingMetadataRequest

一个封装路由信息的 MetadataRequest 对象。

get_params(deep=True)[源码]#

获取此估计器的参数。

参数:
deep布尔型,默认值为 True

如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:
params字典

参数名称及其对应值的映射。

set_output(*, transform=None)[源码]#

设置输出容器。

请参阅set_output API 介绍以了解如何使用该 API 的示例。

参数:
transform{“default”,“pandas”,“polars”},默认值为 None

配置 transformfit_transform 的输出。

  • "default": 变换器的默认输出格式

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置不变

版本 1.4 新增: 添加了 "polars" 选项。

返回:
self估计器实例

估计器实例。

set_params(**params)[源码]#

设置此估计器的参数。

该方法适用于简单的估计器以及嵌套对象(例如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,因此可以更新嵌套对象的每个组件。

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。

transform(X, y=None)[源码]#

应用降维。

参数:
X形状为 (n_samples, n_features) 的类数组对象

待转换的样本。

y形状为 (n_samples,) 或 (n_samples, n_targets) 的类数组对象,默认值为 None

目标。

返回:
x_scores类数组对象或类数组对象的元组

如果 y is not None,则为转换后的数据 X_transformed;否则为 (X_transformed, y_transformed)