sklearn 的 PCA 实现是否保留输入顺序?

Does sklearn's implementation of PCA preserve order of input?

假设这就是我使用 sklearns 进行 PCA 的方式 sklearn.decomposition.PCA:

def doPCA(arr):
    scaler =  StandardScaler()
    scaler.fit(arr)
    arr =scaler.transform(arr)
    pca =PCA(n_components=2)
    X = pca.fit_transform(arr)
    return X

我目前的理解是,我得到了一个相同长度的输出数组,但每个样本现在都是 2 维的。

现在,我感兴趣的是原始数组 arr 中的值在 PCA 之后的位置。


我的问题是:

我可以假设 X[i] 对应于 arr[i] 吗?

您获得的 X,即 U[:, :n_components]*S[:n_components],在您的代码中是第一个 n_components 上的 PCA 加载。要理解为什么 X[i] 应该对应 arr[i],让我们看看 loadings 是什么意思。

加载

将特征向量想象成新维度阶数的基向量 n_components。载荷有助于定义每个数据点在这个新维度上的位置 space。换句话说,原始数据点从完整特征 space 投影到降维 space。这些是线性组合 (np.dot(X, n_components)) 中的系数,通过(标准化的)组件预测原始的全套特征。

所以你可以假设X[i]对应于arr[i]