【发布时间】:2016-03-23 05:44:06
【问题描述】:
我编写了一个简单的 PCA 代码来计算协方差矩阵,然后在该协方差矩阵上使用 linalg.eig 来查找主成分。当我对三个主要组件使用 scikit 的 PCA 时,我得到了几乎相同的结果。我的 PCA 函数将带有翻转符号的第三列转换数据输出到 scikit 的 PCA 函数所做的事情。现在我认为 scikit 的内置 PCA 正确的可能性比假设我的代码正确的可能性更高。我注意到第三个主成分/特征向量在我的例子中已经翻转了符号。因此,如果 scikit 的第三个特征向量是 (a,-b,-c,-d),那么我的是 (-a,b,c,d)。我的线性代数可能有点破旧,但我认为这些是不同的结果。我得出特征向量的方法是使用linalg.eig 计算协方差矩阵的特征向量和特征值。我很乐意尝试手动查找特征向量,但是为 4x4 矩阵(我使用的是 iris 数据集)这样做并不有趣。
Iris 数据集有 4 个维度,所以我最多可以为 4 个组件运行 PCA。当我为一个组件运行时,结果是相同的。当我跑 2 时,也等价。对于三个,正如我所说,我的函数在第三列中输出翻转的符号。当我跑四次时,第三列中的标志再次翻转,所有其他列都很好。恐怕我无法为此提供代码。这是一个项目。
【问题讨论】:
标签: python python-2.7 numpy pca