本篇文章用来总结在使用numpy库使用到的函数,方便自己回过头来查阅,在开始默认导入如下设置
import numpy as np
1. 奇异值分解会用到
numpy.linalg.svd(a, full_matrices=True, compute_uv=True)
a : 维度大于等于2的矩阵
full_matrices: 默认为True ,用来表示u, vh是否维度分别为(M,M)和(N,N),不然的话维度就为(M,K)和(K,N)
compute_uv: 默认为True,是否在s外组合u和vh
返回值为
u : 是个(M,M)或者(M,K)的矩阵
s :返回的是除了主对角线以外全为0,主对角线上的值被称为奇异值,这里返回的时候只返回奇异值数组,而且奇异值是从大到小排序的,这里在做奇异值能量占比的时候会使用到。
vh : 是个(N,N)或者(K,N)的矩阵
拓展:这里解释下SVD ,假设矩阵A 是一个m*n的矩阵,那么定义矩阵A的SVD为
, 所以上述的函数就是将一个矩阵进行分解,但是在实际的操作中是要将矩阵进行降维,降维主要是对中间的 进行调整,这是个对角矩阵,因为除了主对角线以外其余的元素全为0,而在做奇异值分解后实际返回的奇异值大小是从大往小排序的,我们在实际操作中只取前面的k个值,前10%的奇异值之和就占了全部奇异值之和的80%以上的比例,从而达到降维的效果。
进行降维后就可以这样来进行表示