-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 –