特征值分解:线代里的相似对角化,必须是方阵
奇异值分解:可以不是方阵
P(m*m维)为左奇异矩阵,Q(n*n维)为右奇异矩阵,∑对角矩阵(m*n维)
左奇异矩阵对矩阵进行行压缩,右奇异矩阵对矩阵进行列压缩。
奇异值分解的应用:降维和压缩
numpy.linalg.svd函数
函数:np.linalg.svd(a,full_matrices=1,compute_uv=1)。
参数:
- a是一个形如(M,N)矩阵
- full_matrices的取值是为0或者1,默认值为1,这时u的大小为(M,M),v的大小为(N,N) 。否则u的大小为(M,K),v的大小为(K,N) ,K=min(M,N)。
- compute_uv的取值是为0或者1,默认值为1,表示计算u,s,v。为0的时候只计算s。
返回值:
- 总共有三个返回值u,s,v
- u大小为(M,M),s大小为(M,N),v大小为(N,N)。
- A = u*s*v
- 其中s是对矩阵a的奇异值分解。s除了对角元素不为0,其他元素都为0,并且对角元素从大到小排列。s中有n个奇异值,一般排在后面的比较接近0,所以仅保留比较大的r个奇异值。