Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过sklearn.decomposition.PCA执行svd,如何从中获取U S V?_Python_Pca_Svd - Fatal编程技术网

Python 通过sklearn.decomposition.PCA执行svd,如何从中获取U S V?

Python 通过sklearn.decomposition.PCA执行svd,如何从中获取U S V?,python,pca,svd,Python,Pca,Svd,我执行SVD与 从奇异值分解方程出发 A=U x S x V\t V_t=V的转置矩阵 (对不起,我无法粘贴原始方程式) 如果我想要矩阵U、S和V,如果我使用?首先,根据矩阵的大小,PCA的sklearn实现并不总是计算完整的SVD分解。以下资料摘自: 印刷品 (array([[ -3.55731195e-01, 5.05615563e-01], [ 2.88830295e-04, -3.68261259e-01], [ 7.10884729e-01,

我执行SVD与

从奇异值分解方程出发

A=U x S x V\t

V_t=V的转置矩阵 (对不起,我无法粘贴原始方程式)


如果我想要矩阵U、S和V,如果我使用?

首先,根据矩阵的大小,PCA的sklearn实现并不总是计算完整的SVD分解。以下资料摘自:

印刷品

(array([[ -3.55731195e-01,   5.05615563e-01],
        [  2.88830295e-04,  -3.68261259e-01],
        [  7.10884729e-01,  -2.74708608e-01],
        [ -5.68187889e-01,  -4.43103380e-01],
        [  2.12745524e-01,   5.80457684e-01]]),
 array([ 9.950385  ,  0.76800941]),
 array([[ 0.69988535,  0.71425521],
        [ 0.71425521, -0.69988535]]))

但是,如果您只想对原始数据进行SVD分解,我建议您使用

我不熟悉python,因此这对我来说很难。还有一个问题是,如果数据量很大,“随机化”和“完整”之间有什么更好的选择。我应该为我的数据集选择什么?“随机化”和“完全”之间的结果是否不同?一个选项是不选择,然后默认为“自动”,解算器将选择使用哪种方法(基于矩阵大小和组件数量)。其思想是,如果矩阵非常大,并且不需要所有的组件(即,需要数据最小维度的80%),那么进行随机svd更有效,并且这样做不会造成太大的损失。在任何情况下,如果您确实需要所有组件(或超过80%),则“自动”保证将使用完整的svd。随机svd基于以下文件:
from sklearn.decomposition import PCA
X = np.array([[1, 2], [3,5], [8,10], [-1, 1], [5,6]])
pca = PCA(n_components=2)
pca._fit(X)
(array([[ -3.55731195e-01,   5.05615563e-01],
        [  2.88830295e-04,  -3.68261259e-01],
        [  7.10884729e-01,  -2.74708608e-01],
        [ -5.68187889e-01,  -4.43103380e-01],
        [  2.12745524e-01,   5.80457684e-01]]),
 array([ 9.950385  ,  0.76800941]),
 array([[ 0.69988535,  0.71425521],
        [ 0.71425521, -0.69988535]]))