sklearn中的因子分析:解释方差

vvk*_*itk 1 factor-analysis scikit-learn

scikit-learn中的PCA具有称为"explain_variance"的属性,该属性捕获每个组件解释的方差.在scikit-learn中,我没有看到像FactorAnalysis这样的类似事情.如何计算因子分析的每个组件所解释的方差?

Gau*_*ama 7

以下是如何做到这一点:

首先进行因子分析后得到组件矩阵和噪声方差,让fa成为您的拟合模型

m = fa.components_
n = fa.noise_variance_
Run Code Online (Sandbox Code Playgroud)

将此矩阵平方

m1 = m**2
Run Code Online (Sandbox Code Playgroud)

计算m1的每列的总和

m2 = np.sum(m1,axis=1)
Run Code Online (Sandbox Code Playgroud)

现在由第一个因素解释的%方差将是

pvar1 = (100*m2[0])/np.sum(m2)
Run Code Online (Sandbox Code Playgroud)

同样,第二个因素

pvar2 = (100*m2[1])/np.sum(m2)
Run Code Online (Sandbox Code Playgroud)

但是,噪声分量也会解释差异,如果您在解释的方差中考虑了这一差异,则需要计算

pvar1_with_noise = (100*m2[0])/(np.sum(m2)+np.sum(n))
pvar2_with_noise = (100*m2[1])/(np.sum(m2)+np.sum(n))
Run Code Online (Sandbox Code Playgroud)

等等.希望这可以帮助.