FastICA#

class sklearn.decomposition.FastICA(n_components=None, *, algorithm='parallel', whiten='unit-variance', fun='logcosh', fun_args=None, max_iter=200, tol=0.0001, w_init=None, whiten_solver='svd', random_state=None)#

FastICA: 一种用于独立成分分析的快速算法。

该实现基于[1]。

更多信息请参阅 用户指南

Parameters:
n_componentsint, 默认=None

使用的成分数量。如果传递None,则使用所有成分。

algorithm{‘parallel’, ‘deflation’}, 默认=’parallel’

指定用于FastICA的算法。

whitenstr 或 bool, 默认=’unit-variance’

指定使用的白化策略。

  • 如果为’arbitrary-variance’,则使用具有任意方差的白化。

  • 如果为’unit-variance’,白化矩阵会重新缩放以确保每个恢复的源具有单位方差。

  • 如果为False,则认为数据已经白化,不执行白化。

Changed in version 1.3: 在1.3版本中, whiten 的默认值更改为’unit-variance’。

fun{‘logcosh’, ‘exp’, ‘cube’} 或 callable, 默认=’logcosh’

在近似负熵时使用的G函数的函数形式。可以是’logcosh’、’exp’或’cube’。 您也可以提供自己的函数。它应返回一个包含函数在点的值及其导数的元组。导数应在最后一个维度上平均。 示例:

def my_g(x):
    return x ** 3, (3 * x ** 2).mean(axis=-1)
fun_argsdict, 默认=None

发送给函数形式的参数。 如果为空或None且fun=’logcosh’,fun_args将取值{‘alpha’ : 1.0}。

max_iterint, 默认=200

fit期间的最大迭代次数。

tolfloat, 默认=1e-4

一个正标量,表示解混矩阵被认为收敛的容差。

w_init形状为(n_components, n_components)的类数组, 默认=None

初始解混数组。如果 w_init=None ,则使用从正态分布中抽取的值数组。

whiten_solver{“eigh”, “svd”}, 默认=”svd”

用于白化的求解器。

  • “svd”在问题退化时在数值上更稳定,并且在 n_samples <= n_features 时通常更快。

  • “eigh”在 n_samples >= n_features 时通常更具内存效率,并且在 n_samples >= 50 * n_features 时可以更快。

Added in version 1.2.

random_stateint, RandomState实例或None, 默认=None

用于在未指定时初始化 w_init ,使用正态分布。传递一个int,以在多次函数调用中获得可重复的结果。 参见 术语

Attributes:
components_形状为(n_components, n_features)的ndarray

应用于数据以获得独立源的线性算子。当 whiten 为False时,这等于解混矩阵,当 whiten 为True时,等于 np.dot(unmixing_matrix, self.whitening_)

mixing_形状为(n_features, n_components)的ndarray

components_ 的伪逆。它是将独立源映射到数据的线性算子。

mean_形状为(n_features,)的ndarray

特征上的均值。仅在 self.whiten 为True时设置。

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_形状为( n_features_in_ ,)的ndarray

fit 期间看到的特征名称。仅当 X 的所有特征名称均为字符串时定义。

Added in version 1.0.

n_iter_int

如果算法是”deflation”,n_iter是所有成分中运行的最大迭代次数。否则,它们只是收敛所需的迭代次数。

whitening_形状为(n_components, n_features)的ndarray

仅在whiten为’True’时设置。这是将数据投影到前 n_components 个主成分上的预白化矩阵。

See also

PCA

主成分分析(PCA)。

IncrementalPCA

增量主成分分析(IPCA)。

KernelPCA

核主成分分析(KPCA)。

MiniBatchSparsePCA

小批量稀疏主成分分析。

SparsePCA

稀疏主成分分析(SparsePCA)。

References

[1]

A. Hyvarinen 和 E. Oja, 独立成分分析: 算法和应用, 神经网络, 13(4-5), 2000, pp. 411-430.

Examples

>>> from sklearn.datasets import load_digits
>>> from sklearn.decomposition import FastICA
>>> X, _ = load_digits(return_X_y=True)
>>> transformer = FastICA(n_components=7,
...         random_state=0,
...         whiten='unit-variance')
>>> X_transformed = transformer.fit_transform(X)
>>> X_transformed.shape
(1797, 7)
fit(X, y=None)#

拟合模型到X。

Parameters:
X形状为 (n_samples, n_features) 的类数组

训练数据,其中 n_samples 是样本数量 而 n_features 是特征数量。

y忽略

未使用,为了API一致性而存在。

Returns:
selfobject

返回实例本身。

fit_transform(X, y=None)#

拟合模型并从X中恢复源。

Parameters:
X形状为 (n_samples, n_features) 的类数组

训练数据,其中 n_samples 是样本数量 且 n_features 是特征数量。

y忽略

未使用,为保持API一致性而存在。

Returns:
X_new形状为 (n_samples, n_components) 的 ndarray

通过估计的解混矩阵变换数据得到的估计源。

get_feature_names_out(input_features=None)#

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

输出特征名称将以小写的类名作为前缀。例如,如果转换器输出3个特征,那么输出特征名称将是: ["class_name0", "class_name1", "class_name2"]

Parameters:
input_features类似数组的对象或None,默认为None

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

Returns:
feature_names_outndarray of str对象

转换后的特征名称。

get_metadata_routing()#

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

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

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

inverse_transform(X, copy=True)#

将源数据转换回混合数据(应用混合矩阵)。

Parameters:
X形状为 (n_samples, n_components) 的类数组

源数据,其中 n_samples 是样本数量 且 n_components 是组件数量。

copybool, 默认为 True

如果为 False,传递给 fit 的数据将被覆盖。默认为 True。

Returns:
X_new形状为 (n_samples, n_features) 的 ndarray

使用混合矩阵获得的重构数据。

set_inverse_transform_request(*, copy: bool | None | str = '$UNCHANGED$') FastICA#

Request metadata passed to the inverse_transform method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

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

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

  • 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 the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

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

Metadata routing for copy parameter in inverse_transform .

Returns:
selfobject

The updated object.

set_output(*, transform=None)#

设置输出容器。

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

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

配置 transformfit_transform 的输出。

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

  • "pandas" : DataFrame 输出

  • "polars" : Polars 输出

  • None : 转换配置不变

Added in version 1.4: "polars" 选项已添加。

Returns:
self估计器实例

估计器实例。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_transform_request(*, copy: bool | None | str = '$UNCHANGED$') FastICA#

Request metadata passed to the transform method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

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

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

  • 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 the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

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

Metadata routing for copy parameter in transform .

Returns:
selfobject

The updated object.

transform(X, copy=True)#

从X中恢复源(应用解混矩阵)。

Parameters:
X形状为(n_samples, n_features)的类数组

要转换的数据,其中 n_samples 是样本的数量, n_features 是特征的数量。

copy布尔值, 默认为True

如果为False,传递给fit的数据可以被覆盖。默认为True。

Returns:
X_new形状为(n_samples, n_components)的ndarray

通过使用估计的解混矩阵转换数据获得的估计源。