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)[源码]#
因子分析 (FA)。
具有高斯隐变量的简单线性生成模型。
该模型假设观测值是由低维隐因子的线性变换加上高斯噪声产生的。在不失一般性的情况下,因子遵循零均值和单位协方差的高斯分布。噪声也是零均值,并具有任意的对角协方差矩阵。
如果我们通过假设高斯噪声甚至是各向同性的(所有对角线元素都相同)来进一步限制模型,我们将得到
PCA。FactorAnalysis 使用基于 SVD 的方法,对所谓的
loading矩阵(从隐变量到观测变量的变换矩阵)进行极大似然估计。更多内容请参阅 用户指南。
在版本 0.13 中添加。
- 参数:
- n_componentsint, default=None
隐空间的维度,即
transform之后获得的X的组件数。如果为 None,则 n_components 设置为特征数量。- tolfloat, 默认=1e-2
对数似然增加的停止容差。
- copy布尔值, 默认为 True
是否制作 X 的副本。如果为
False,则在拟合期间输入 X 会被覆盖。- max_iterint, default=1000
最大迭代次数。
- noise_variance_init形状为 (n_features,) 的类数组, 默认=None
每个特征噪声方差的初始猜测。如果为 None,则默认为 np.ones(n_features)。
- svd_method{‘lapack’, ‘randomized’}, 默认=’randomized’
使用哪种 SVD 方法。如果为 ‘lapack’,则使用 scipy.linalg 中的标准 SVD;如果为 ‘randomized’,则使用快速的
randomized_svd函数。默认为 ‘randomized’。对于大多数应用,‘randomized’ 将具有足够的精度,同时提供显著的速度提升。通过为iterated_power设置更高的值,也可以提高精度。如果这还不够,为了获得最高精度,应选择 ‘lapack’。- iterated_powerint, 默认=3
幂法的迭代次数。默认为 3。仅在
svd_method等于 ‘randomized’ 时使用。- rotation{‘varimax’, ‘quartimax’}, 默认=None
如果不为 None,则应用指定的旋转。目前已实现 varimax 和 quartimax。参见 “The varimax criterion for analytic rotation in factor analysis” H. F. Kaiser, 1958。
0.24 版本新增。
- random_stateint 或 RandomState 实例, 默认=0
仅在
svd_method等于 ‘randomized’ 时使用。传递一个 int 以在多次函数调用中获得可复现的结果。参见 术语表。
- 属性:
- components_ndarray of shape (n_components, n_features)
具有最大方差的组件。
- loglike_形状为 (n_iterations,) 的列表
每次迭代时的对数似然。
- noise_variance_形状为 (n_features,) 的 ndarray
估算的每个特征的噪声方差。
- 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)[源码]#
使用基于 SVD 的方法将 FactorAnalysis 模型拟合到 X。
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
训练数据。
- y被忽略
被忽略的参数。
- 返回:
- selfobject
FactorAnalysis 类实例。
- fit_transform(X, y=None, **fit_params)[源码]#
拟合数据,然后对其进行转换。
使用可选参数
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()[源码]#
使用 FactorAnalysis 模型计算数据协方差。
cov = components_.T * components_ + diag(noise_variance)- 返回:
- cov形状为 (n_features, n_features) 的 ndarray
估计的数据协方差。
- get_feature_names_out(input_features=None)[源码]#
获取转换的输出特征名称。
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()[源码]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[源码]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- get_precision()[源码]#
使用 FactorAnalysis 模型计算数据精度矩阵。
- 返回:
- precision形状为 (n_features, n_features) 的 ndarray
估计的数据精度。
- score(X, y=None)[源码]#
计算样本的平均对数似然。
- 参数:
- Xndarray of shape (n_samples, n_features)
数据。
- y被忽略
被忽略的参数。
- 返回:
- llfloat
当前模型下样本的平均对数似然。
- score_samples(X)[源码]#
计算每个样本的对数似然。
- 参数:
- Xndarray of shape (n_samples, n_features)
数据。
- 返回:
- ll形状为 (n_samples,) 的 ndarray
当前模型下每个样本的对数似然。
- set_output(*, transform=None)[源码]#
设置输出容器。
请参阅 用户指南 以了解更多详细信息,并参考 引入 set_output API 获取关于如何使用该 API 的示例。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_transform的输出。"default": 转换器的默认输出格式"pandas": DataFrame 输出"polars": Polars 输出None: 转换配置保持不变
1.4 版本新增: 添加了
"polars"选项。
- 返回:
- selfestimator instance
估计器实例。