【问题标题】:Does sklearn's implementation of PCA preserve order of input?sklearn 的 PCA 实现是否保留输入顺序?
【发布时间】:2018-09-10 05:03:12
【问题描述】:

假设这就是我使用 sklearns sklearn.decomposition.PCA 进行 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]吗?

【问题讨论】:

    标签: python scikit-learn pca


    【解决方案1】:

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

    加载

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

    因此您可以假设X[i] 对应于arr[i]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      相关资源
      最近更新 更多