使用sklearn进行因子加载

时间:2014-01-19 14:03:01

标签: python scikit-learn pca

我想要python中各个变量和主要组件之间的相关性。 我在sklearn中使用PCA。我不明白在分解数据后如何实现加载矩阵?我的代码在这里。

iris = load_iris()
data, y = iris.data, iris.target
pca = PCA(n_components=2)
transformed_data = pca.fit(data).transform(data)
eigenValues = pca.explained_variance_ratio_

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html没有提到如何实现这一目标。

3 个答案:

答案 0 :(得分:11)

根据this blogpca.components_行是加载向量。所以:

loadings = pca.components_

答案 1 :(得分:10)

将每个分量乘以其对应特征值的平方根:

pca.components_.T * np.sqrt(pca.explained_variance_)

这应该产生你的加载矩阵。

答案 2 :(得分:9)

我认为@RickardSjogren正在描述特征向量,而@BigPanda正在给出负载。有一个很大的区别:Loadings vs eigenvectors in PCA: when to use one or another?

我使用loadings方法创建了this PCA class

pca.components_ * np.sqrt(pca.explained_variance_)给出的加载更类似于多元线性回归中的系数。我这里不使用.T,因为在上面链接的PCA类中,组件已经转置。 numpy.linalg.svd生成u, s, and vt,其中vt是Hermetian转置,因此您首先需要使用v返回vt.T

另外还有一个重要细节:sklearn.PCA中组件和负载的符号(正/负)可能与R等包不同。  更多相关内容:

In sklearn.decomposition.PCA, why are components_ negative?

相关问题