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
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toinverse_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 toinverse_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 ininverse_transform
.
- Returns:
- selfobject
The updated object.
- set_output(*, transform=None)#
设置输出容器。
请参阅 介绍 set_output API 以了解如何使用API的示例。
- Parameters:
- transform{“default”, “pandas”, “polars”}, 默认=None
配置
transform
和fit_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
(seesklearn.set_config
). Please see User Guide on how the routing mechanism 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 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 intransform
.
- 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
通过使用估计的解混矩阵转换数据获得的估计源。
Gallery examples#
sphx_glr_auto_examples_decomposition_plot_ica_vs_pca.py