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, random_state=0)           

[源码]

因子分析(FA)

一个简单的高斯潜变量线性生成模型。

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

如果我们进一步限制模型,假设高斯噪声是均匀各向同性的(所有对角项都相同),我们将得到PPCA

因子分析采用基于奇异值分解的方法,对所谓的加载矩阵进行最大似然估计,将潜在变量转化为观察变量。

更多信息请参阅用户指南.。

新版本0.13。

参数 说明
n_components int\None
潜在空间的维度,transform后得到的X分量的个数。如果没有,则将n_components设置为特性的数量。
tol float
停止容忍对数似然增长。
copy bool
是否复制X,如果为False,则在拟合过程中覆盖输入X。
max_iter int
最大迭代次数。
noise_variance_init None\array, shape=(n_features,)
每个特征的噪声方差的初始猜测。如果没有,则默认为np.ones(n_features)
svd_method {‘lapack’, ‘randomized’}
使用哪种SVD方法。如果“lapack”使用scipy.linalg中的标准SVD,如果“随机化”使用快速randomized_svd函数。默认为“随机”。对于大多数应用程序,“随机化”将足够精确,同时提供显著的速度增益。还可以通过为iterated_power设置更高的值来提高准确性。如果这还不够,为了获得最大的精度,你应该选择“lapack”。
iterated_power int, optional
幂次法的迭代次数。默认3。仅在svd_method等于“随机化”时使用
random_state int, RandomState instance, default=0
仅在svd_method = ' randomize '时使用。在多个函数调用中传递可重复的结果。详见术语表.
属性 说明
components_ array, [n_components, n_features]
方差最大的分量。
loglike_ list, [n_iterations]
每次迭代的对数似然。
noise_variance_ array, shape=(n_features,)
估计每个特征的噪声方差。
n_iter_ int
运行的迭代次数。
mean_ array, shape (n_features,)
每个特征的经验平均数,从训练集估计。

另见:

主成分分析

主成分分析也是一种潜在的线性变量模型,但假设每个特征的噪声方差相等。这个额外的假设使得概率主成分分析更快,因为它可以以封闭的形式进行计算。

FastICA

独立分量分析,非高斯潜变量模型。

参考资料

示例

>>> 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
(17977)py

方法

方法 说明
fit(self, X[, y]) 利用基于奇异值分解的方法将因子分析模型拟合到X上
fit_transform(self, X[, y]) 拟合数据,然后转换它。
get_covariance(self) 用因子分析模型计算数据协方差。
get_params(self[, deep]) 获取这个估计器的参数。
get_precision(self) 利用因子分析模型计算数据精度矩阵。
score(self, X[, y]) 计算样本的平均对数似然
score_samples(self, X) 计算每个样本的对数似然
set_params(self, **params) 设置这个估计器的参数。
transform(self, X) 利用模型对X进行降维。
__init__(self, n_components=None, *, tol=0.01, copy=True, max_iter=1000, noise_variance_init=None, svd_method='randomized', iterated_power=3, random_state=0)       

[源码]

初始化self. See 请参阅help(type(self))以获得准确的说明。

fit(self, X, y=None)    

[源码]

利用基于奇异值分解的方法将因子分析模型拟合到X上

参数 说明
X array-like, shape (n_samples, n_features)
训练数据
y Ignored
返回值 说明
self
fit_transform(self, X, y=None, **fit_params)        

[源码]

拟合数据,然后转换它。

使用可选参数fit_paramstransformerXy匹配,并返回X的转换版本。

参数 说明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
Y ndarray of shape (n_samples,), default=None 目标值
fit_params dict
其他拟合参数。
返回值 说明
X_new ndarray array of shape (n_samples, n_features_new)
转换过的数据
get_covariance(self)          

[源码]

用因子分析模型计算数据协方差。

cov = components_.T * components_ + diag(noise_variance)
返回值 说明
cov array, shape (n_features, n_features)
数据的协方差估计。
get_params(self, deep=True

[源码]

获取估计器的参数。

参数 说明
deep bool, default=True
如果为真,将返回此估计器的参数以及包含的作为估计器的子对象。
返回值 说明
params mapping of string to any
参数名称映射到它们的值。
get_precision(self)

[源码]

利用因子分析模型计算数据精度矩阵。

返回值 说明
precision array, shape (n_features, n_features)
数据的预测精度。
score(self, X, y=None)

[源码]

计算样本的平均似然对数

参数 说明
X array, shape (n_samples, n_features)
数据
y Ignored
返回值 说明
II float
样本在当前模型下的对数似然平均数。
score_samples(self, X)

[源码]

计算每个样本的似然对数

参数 说明
X array, shape (n_samples, n_features)
数据
返回值 说明
II array, shape (n_samples,)
每个样本在当前模型下的对数似然
set_params(self, **params)

[源码]

设置这个估计器的参数。

该方法适用于简单估计器和嵌套对象(如管道)。后者具有形式为__的参数,这样就可以更新嵌套对象的每个样本。

参数 说明
**params dict
估计参数
返回值 说明
self object
估计参数
transform(self, X)

利用模型对X进行降维。

计算潜在变量的期望平均值。见Barber, 21.2.33 (or Bishop, 12.66).

参数 说明
X array-like, shape (n_samples, n_features)
训练数据
参数 说明
X_new array-like, shape (n_samples, n_components)
X的潜变量。