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

时间:2018-03-31 10:06:07

标签: python scikit-learn pca

让我们说这就是我使用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]吗?

1 个答案:

答案 0 :(得分:2)

您在代码中X获得的内容U[:, :n_components]*S[:n_components]是第一个n_components上的PCA加载数。要了解X[i]arr[i]对应的原因,请让我们看看加载的含义。

<强>荷载

想象一下,特征向量是订单n_components的新维度的基础向量。加载有助于定义每个数据点位于此新维度空间的位置。换句话说,原始数据从投影到缩小尺寸空间的完整特征空间指向。这些是线性组合的系数(np.dot(X, n_components)),用于预测(标准化)组件的原始完整特征集。

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