FactorAnalysis#
- class sklearn.decomposition.FactorAnalysis(n_components=None, *, tol=0.01, copy=True, max_iter=1000, noise_variance_init=None, svd_method='randomized', iterated_power=3, rotation=None, random_state=0)[source]#
因子分析 (FA)。
具有高斯潜变量的简单线性生成模型。
观测值被假定为由低维潜在因子经过线性变换并添加高斯噪声所引起。在不失一般性的情况下,这些因子服从零均值和单位协方差的高斯分布。噪声也是零均值的,并具有任意对角协方差矩阵。
如果我们对模型做进一步限制,假设高斯噪声甚至是各向同性的(所有对角项都相同),我们将得到
PCA。FactorAnalysis 使用基于 SVD 的方法,对所谓的“加载”矩阵(潜在变量到观测变量的转换)进行最大似然估计。
在用户指南中了解更多信息。
在版本 0.13 中添加。
- 参数:
- n_componentsint, default=None
潜在空间的维度,即
transform后获得的X的组件数量。如果为None,n_components将设置为特征数量。- tolfloat, default=1e-2
对数似然增加的停止容差。
- copy布尔值, 默认为 True
是否创建X的副本。如果为
False,则在拟合过程中会覆盖输入X。- max_iterint, default=1000
最大迭代次数。
- noise_variance_initarray-like of shape (n_features,), default=None
每个特征的噪声方差初始猜测。如果为None,则默认为 np.ones(n_features)。
- svd_method{‘lapack’, ‘randomized’}, default=’randomized’
要使用的 SVD 方法。如果为 ‘lapack’,则使用 scipy.linalg 中的标准 SVD;如果为 ‘randomized’,则使用快速的
randomized_svd函数。默认为 ‘randomized’。对于大多数应用,‘randomized’ 具有足够的精度,同时提供显著的速度增益。通过设置更高的iterated_power值也可以提高精度。如果这还不够,为了获得最大精度,应选择 ‘lapack’。- iterated_powerint, default=3
幂方法的迭代次数。默认为 3。仅在
svd_method等于 ‘randomized’ 时使用。- rotation{‘varimax’, ‘quartimax’}, default=None
如果不为 None,则应用指示的旋转。目前实现了 varimax 和 quartimax。参见 “The varimax criterion for analytic rotation in factor analysis” H. F. Kaiser, 1958。
0.24 版本新增。
- random_stateint or RandomState instance, default=0
仅当
svd_method等于 ‘randomized’ 时使用。传入一个整数可以在多次函数调用中获得可重现的结果。参见词汇表。
- 属性:
- components_ndarray of shape (n_components, n_features)
具有最大方差的组件。
- loglike_list of shape (n_iterations,)
每次迭代的对数似然。
- noise_variance_ndarray of shape (n_features,)
每个特征的估计噪声方差。
- n_iter_int
运行的迭代次数。
- mean_shape 为 (n_features,) 的 ndarray
每个特征的经验均值,从训练集中估计。
- n_features_in_int
在 拟合 期间看到的特征数。
0.24 版本新增。
- feature_names_in_shape 为 (
n_features_in_,) 的 ndarray 在 fit 期间看到的特征名称。仅当
X具有全部为字符串的特征名称时才定义。1.0 版本新增。
另请参阅
References
David Barber, Bayesian Reasoning and Machine Learning, 算法 21.1。
Christopher M. Bishop: Pattern Recognition and Machine Learning, 第 12.2.4 章。
示例
>>> from sklearn.datasets import load_digits >>> from sklearn.decomposition import FactorAnalysis >>> X, _ = load_digits(return_X_y=True) >>> transformer = FactorAnalysis(n_components=7, random_state=0) >>> X_transformed = transformer.fit_transform(X) >>> X_transformed.shape (1797, 7)
- fit(X, y=None)[source]#
使用基于 SVD 的方法将 FactorAnalysis 模型拟合到 X。
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
训练数据。
- y被忽略
被忽略的参数。
- 返回:
- selfobject
FactorAnalysis 类实例。
- fit_transform(X, y=None, **fit_params)[source]#
拟合数据,然后对其进行转换。
使用可选参数
fit_params将转换器拟合到X和y,并返回X的转换版本。- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象,默认=None
目标值(对于无监督转换,为 None)。
- **fit_paramsdict
额外的拟合参数。仅当估计器在其
fit方法中接受额外的参数时才传递。
- 返回:
- X_newndarray array of shape (n_samples, n_features_new)
转换后的数组。
- get_covariance()[source]#
使用 FactorAnalysis 模型计算数据协方差。
cov = components_.T * components_ + diag(noise_variance)- 返回:
- covndarray of shape (n_features, n_features)
估计的数据协方差。
- get_feature_names_out(input_features=None)[source]#
获取转换的输出特征名称。
The feature names out will prefixed by the lowercased class name. For example, if the transformer outputs 3 features, then the feature names out are:
["class_name0", "class_name1", "class_name2"].- 参数:
- input_featuresarray-like of str or None, default=None
Only used to validate feature names with the names seen in
fit.
- 返回:
- feature_names_outstr 对象的 ndarray
转换后的特征名称。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- get_precision()[source]#
使用 FactorAnalysis 模型计算数据精度矩阵。
- 返回:
- precisionndarray of shape (n_features, n_features)
估计的数据精度。
- score(X, y=None)[source]#
计算样本的平均对数似然。
- 参数:
- Xndarray of shape (n_samples, n_features)
数据。
- y被忽略
被忽略的参数。
- 返回:
- llfloat
当前模型下样本的平均对数似然。
- score_samples(X)[source]#
计算每个样本的对数似然。
- 参数:
- Xndarray of shape (n_samples, n_features)
数据。
- 返回:
- llndarray of shape (n_samples,)
当前模型下每个样本的对数似然。
- set_output(*, transform=None)[source]#
设置输出容器。
有关如何使用 API 的示例,请参阅引入 set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_transform的输出。"default": 转换器的默认输出格式"pandas": DataFrame 输出"polars": Polars 输出None: 转换配置保持不变
1.4 版本新增: 添加了
"polars"选项。
- 返回:
- selfestimator instance
估计器实例。