当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn FactorAnalysis用法及代码示例


本文简要介绍python语言中 sklearn.decomposition.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)。

具有高斯潜变量的简单线性生成模型。

假设观察结果是由低维潜在因子的线性变换和添加的高斯噪声引起的。在不失一般性的情况下,因子根据具有零均值和单位协方差的高斯分布。噪声也是零均值并且具有任意对角协方差矩阵。

如果我们进一步限制模型,假设高斯噪声甚至是各向同性的(所有对角线条目都相同),我们将获得 PPCA

FactorAnalysis 使用基于 SVD 的方法对所谓的 loading 矩阵执行最大似然估计,将潜在变量转换为观测变量。

在用户指南中阅读更多信息。

参数

n_components整数,默认=无

潜在空间的维度,在transform之后得到的X的分量数。如果没有,n_components 设置为特征数。

tol浮点数,默认=1e-2

停止对对数似然增加的容忍。

copy布尔,默认=真

是否复制 X。如果是 False ,则输入 X 在拟合期间被覆盖。

max_iter整数,默认=1000

最大迭代次数。

noise_variance_initndarray 形状 (n_features,),默认 = 无

每个特征的噪声方差的初始猜测。如果没有,它默认为 np.ones(n_features)。

svd_method{‘lapack’, ‘randomized’},默认='随机'

使用哪种 SVD 方法。如果 ‘lapack’ 使用来自 scipy.linalg 的标准 SVD,如果 ‘randomized’ 使用快速 randomized_svd 函数。默认为‘randomized’。对于大多数应用,‘randomized’ 将足够精确,同时提供显著的速度增益。通过为 iterated_power 设置更高的值也可以提高准确性。如果这还不够,为了获得最大精度,您应该选择‘lapack’。

iterated_power整数,默认=3

幂方法的迭代次数。 3 默认。仅在 svd_method 等于 ‘randomized’ 时使用。

rotation{‘varimax’, ‘quartimax’},默认=无

如果不是无,则应用指示的旋转。目前,实现了 varimax 和 quartimax。看“因子分析中解析旋转的最大方差标准”H. F. 凯撒,1958 年。

random_stateint 或 RandomState 实例,默认=0

仅当svd_method等于‘randomized’时使用。传递 int 以获得跨多个函数调用的可重现结果。请参阅术语表。

属性

components_ndarray 形状(n_components,n_features)

具有最大方差的组件。

loglike_形状列表(n_iterations,)

每次迭代的对数似然。

noise_variance_ndarray 形状 (n_features,)

每个特征的估计噪声方差。

n_iter_int

运行的迭代次数。

mean_ndarray 形状 (n_features,)

Per-feature 经验平均值,根据训练集估计。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

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

参考

  • David Barber,贝叶斯推理和机器学习,算法 21.1。
  • Christopher M. Bishop:模式识别和机器学习,第 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)

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.decomposition.FactorAnalysis。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。