如何用sklearn获得所有三个SVD矩阵?

时间:2017-08-24 15:06:43

标签: python numpy scikit-learn pca svd

大小为M的矩阵(M,N)

Singular value decomposition表示分解

enter image description here

如何从scikit-learnnumpy包中获取所有三个矩阵?

我想我可以Sigma获取import numpy as np from sklearn.decomposition import PCA model = PCA(N, copy=True, random_state=0) model.fit(X) Sigma = model.singular_values_ Sigma = np.diag(singular_values)

strncat

其他矩阵怎么样?

2 个答案:

答案 0 :(得分:1)

您可以使用numpy.linalg.svd获取这些矩阵,如下所示:

a=np.array([[1,2,3],[4,5,6],[7,8,9]])
U, S, V = np.linalg.svd(a, full_matrices=True)

S是一个1D数组,表示Sigma中的对角线条目。 UV是分解的相应矩阵。

顺便提一下,请注意,当您使用PCA时,数据会在应用svd之前居中(与numpy.linalg.svd不同,其中svd直接应用于矩阵本身。请参阅第409-410行{ {3}})。

答案 1 :(得分:0)

不能对Mirian的回答发表评论,因为我没有足够的声誉,但从查看Miriam的链接,sklearn实际上称为scipy的{{1}这似乎与np.linalg.svd (discussion here)

相同

因此,最好使用linalg.svd