-1
雖然我在用scikit-learn進行PCA時,發現它使用svd來獲得eigenvalue
和eigenvector
,然後使用svd_flip
來獲得真正的特徵向量。爲什麼在做PCA時,scikit-learn使用svd來獲得特徵值,而傳統的方法是使用eig?
這裏是我的代碼eigenvalue
和eigenvector
。
pca = PCA(data.shape[1])
newData = pca.fit_transform(data)
eigenvalue, eigenvector = np.linalg.eig(np.cov(data.transpose()))
explained_variance_ratio_sum_ = np.cumsum(pca.explained_variance_ratio_)
index = eigenvalue.argsort()[::-1]
eigenvalue = eigenvalue[index]
eigenvector = eigenvector[:, index]
爲什麼sklearn使用svd?有沒有優點或缺點?而且我對svd_flip
函數不太熟悉,你會告訴我它的用法嗎?
非常感謝。
這可能不是討論算法的正確位置。請查看https://stats.stackexchange.com/questions/79043/why-pca-of-data-by-means-of-svd-of-the-data –