在 PCA 中选择 K 分量后,我们如何找出算法选择了哪些分量(列名)?

After choosing K-components in PCA how do we find out which components(names of the columns) have algorithm selected?

我是数据科学的新手,我需要一些帮助来理解 PCA.I 知道每一列构成一个轴,但是当 PCA 完成并且组件减少到某个 k 值时,如何知道哪个已选择所有列?

你必须看看 PCA 的特征向量。每个特征值都是每个“新轴”的"force",特征向量提供原始特征的线性组合。

有了scikit-learn,你应该看看属性components_

import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=2)
pca.fit(X)  
print(pca.components_) # << eigenvector matrix

在 PCA 中,您计算​​协方差矩阵的特征向量和特征值以确定主成分。
主成分是作为初始变量的线性组合或混合构造的新变量。这些组合的完成方式使得新变量(即主成分)不相关,并且初始变量中的大部分信息被挤压或压缩到第一成分中。所以,这个想法是 10 维数据给你 10 个主成分,但 PCA 试图在第一个成分中放入最大可能的信息,然后在第二个成分中放入最大剩余信息,依此类推。

从几何上讲,主成分代表了解释最大方差量的数据的方向,也就是说,捕获了数据大部分信息的线。 s 主成分与数据中的变量一样多,主成分的构造方式是第一个主成分占数据集中最大可能的方差。

根据我的经验,如果本征值的累积和百分比可以超过 80% 或 90%,则转换后的向量就足以表示旧向量。

为了解释清楚,让我们使用@Nicholas M 的代码。

import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=1)
pca.fit(X)  

您必须增加 n_components 才能获得 %90 的方差。

输入:

pca.explained_variance_ratio_

输出:

array([0.99244289])

在此示例中,只需 1 个组件就足够了。

我希望一切都明白。

资源:
https://towardsdatascience.com/pca-using-python-scikit-learn-e653f8989e60 https://towardsdatascience.com/a-step-by-step-explanation-of-principal-component-analysis-b836fb9c97e2