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)[source]#

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

该实现基于 [1]

更多信息请参阅用户指南

参数:
n_componentsint,默认为None

使用的组件数量。如果传递None,则使用所有组件。

algorithm{'parallel', 'deflation'},默认为'parallel'

指定用于FastICA的算法。

whitenstr或bool,默认为'unit-variance'

指定要使用的白化策略。

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

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

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

1.3版本中的变更: whiten的默认值在1.3版本中更改为'unit-variance'。

fun{'logcosh', 'exp', 'cube'} 或可调用对象,默认为'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

拟合期间的最大迭代次数。

tolfloat,默认为1e-4

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

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

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

whiten_solver{'eigh', 'svd'},默认为'svd'

用于白化的求解器。

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

  • n_samples >= n_features时,“eigh”通常更节省内存,并且当n_samples >= 50 * n_features时可能更快。

1.2版本中添加。

random_stateint、RandomState实例或None,默认为None

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

属性:
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

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

0.24版本中添加。

feature_names_in_形状为(n_features_in_,)的ndarray

拟合期间看到的特征名称。仅当X具有全是字符串的特征名称时定义。

1.0版本中添加。

n_iter_int

如果算法是“deflation”,则n_iter是所有组件运行的最大迭代次数。否则,它们只是收敛所用的迭代次数。

whitening_形状为(n_components, n_features)的ndarray

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

另请参见

PCA

主成分分析 (PCA)。

IncrementalPCA

增量主成分分析 (IPCA)。

KernelPCA

核主成分分析 (KPCA)。

MiniBatchSparsePCA

小批量稀疏主成分分析。

SparsePCA

稀疏主成分分析 (SparsePCA)。

参考文献

[1]

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

示例

>>> 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)[source]#

将模型拟合到X。

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

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

y忽略

未使用,出于惯例,为了API一致性而存在。

返回:
self对象

返回实例本身。

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

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

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

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

y忽略

未使用,出于惯例,为了API一致性而存在。

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

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

get_feature_names_out(input_features=None)[source]#

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

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

参数:
input_featuresstr数组或None,默认为None

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

返回:
feature_names_outndarray of str objects

转换后的特征名称。

get_metadata_routing()[source]#

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

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

返回:
routingMetadataRequest

一个 MetadataRequest 封装了路由信息。

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, default=True

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

返回:
paramsdict

参数名称与其值的映射。

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

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

参数:
Xarray-like of shape (n_samples, n_components)

源,其中 n_samples 是样本数,n_components 是成分数。

copybool, default=True

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

返回:
X_newndarray of shape (n_samples, n_features)

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

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

请求传递给 inverse_transform 方法的元数据。

请注意,只有在 enable_metadata_routing=True 时(参见 sklearn.set_config)此方法才相关。请参阅 用户指南,了解路由机制的工作原理。

每个参数的选项为

  • True:请求元数据,如果提供则传递给 inverse_transform。如果未提供元数据,则忽略请求。

  • False:不请求元数据,元估计器不会将其传递给 inverse_transform

  • None:不请求元数据,如果用户提供元数据,则元估计器将引发错误。

  • str:元数据应使用此给定的别名而不是原始名称传递给元估计器。

默认值(sklearn.utils.metadata_routing.UNCHANGED)保留现有请求。这允许您更改某些参数的请求而无需更改其他参数。

版本 1.3 中新增。

注意

仅当此估计器用作元估计器的子估计器时(例如,在 Pipeline 中使用)此方法才相关。否则,它无效。

参数:
copystr, True, False, 或 None, default=sklearn.utils.metadata_routing.UNCHANGED

inverse_transformcopy 参数的元数据路由。

返回:
self对象

更新后的对象。

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

设置输出容器。

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

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

配置 transformfit_transform 的输出。

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

  • "pandas":DataFrame 输出

  • "polars":Polars 输出

  • None:转换配置保持不变

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

返回:
selfestimator instance

估计器实例。

set_params(**params)[source]#

设置该估计器的参数。

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

参数:
**params**dict

估计器参数。

返回:
selfestimator instance

估计器实例。

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

请求传递给 transform 方法的元数据。

请注意,只有在 enable_metadata_routing=True 时(参见 sklearn.set_config)此方法才相关。请参阅 用户指南,了解路由机制的工作原理。

每个参数的选项为

  • True:请求元数据,如果提供则传递给 transform。如果未提供元数据,则忽略请求。

  • False:不请求元数据,元估计器不会将其传递给 transform

  • None:不请求元数据,如果用户提供元数据,则元估计器将引发错误。

  • str:元数据应使用此给定的别名而不是原始名称传递给元估计器。

默认值(sklearn.utils.metadata_routing.UNCHANGED)保留现有请求。这允许您更改某些参数的请求而无需更改其他参数。

版本 1.3 中新增。

注意

仅当此估计器用作元估计器的子估计器时(例如,在 Pipeline 中使用)此方法才相关。否则,它无效。

参数:
copystr, True, False, 或 None, default=sklearn.utils.metadata_routing.UNCHANGED

transformcopy 参数的元数据路由。

返回:
self对象

更新后的对象。

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

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

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

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

copybool, default=True

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

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

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