必威体育Betway必威体育官网
当前位置:首页 > IT技术

python之SVD函数介绍

时间:2019-06-28 15:44:33来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

svd

详情:https://www.cnblogs.com/denny402/p/5096491.html

1、Python的mat函数

 我们看到一开始随机生成的数组与使用mat函数之后的类型是发生了变化的,尽管他们显示的东西没有什么区别,但是实质上,他们的类型是不同的。调用mat()函数可以将数组转换为矩阵,然后可以对矩阵进行一些线性代数的操作

2、在python中使用SVD

numpy中的linalg已经实现了SVD,可以直接调用

有一点需要注意,sigma本来应该跟A矩阵的大小2*3一样,但linalg.svd()只返回了一个行向量的sigma,并且只有2个奇异值(本来应该有3个),这是因为第三个奇异值为0,舍弃掉了。之所以这样做,是因为当A是非常大的矩阵时,只返回奇异值可以节省很大的存储空间。当然,如果我们要重构A,就必须先将sigma转化为矩阵。

3、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个奇异值。 

关于奇异值的解释:

  • 对于方阵而言A=QQ-1     其中的就是特征向量。但是对于不是方阵的矩阵而言就没有特征向量。
  • 非方阵的矩阵可以用奇异值分解来描述这个矩阵。A=UVT。其中U叫做左奇异值叫做奇异值V叫做右奇异值。因为只有对角线的数不为0,并且数值是从大到小排列,所以一般只取r个,r的值越接近A的列数,那么三个矩阵的乘法得到的矩阵越接近A。
  • 因为三个矩阵的面积之和远远小于原矩阵A,所以当我们向压缩空间表达A的时候,可以使用这三个矩阵。
  • 当A不是矩阵的时候,把A转置变为 AT。并且。其中的v就是右奇异值。,这里的就是上面的奇异值。,这里的u就是上面的左奇异值。

相关阅读

Python strip()方法

描述 Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。 语法 strip()方法语法: str.strip([chars]); 参数

python爬虫——爬取抽屉新热榜

爬取抽屉新热榜 爬取段子 抽屉网址https://dig.chouti.com/r/scoff/hot/ 爬虫的常规操作,根据需求进行分析。我们要爬取段子,也就

动态规划挖金矿问题——python实现

最近在复习动态规划问题,在处理挖金矿问题的时候发现网上以python实现的代码很少,于是自己整理一份。 问题描述:漫画图解 公式和讲解

Python——极客战记codecombat关卡代码

不到万不得已,请各位不要走这条捷径噢,毕竟思路比代码本身更重要。 成果不易,转载请注明出处,谢谢。 文章目录kithgard地牢地牢深藏

利用Python生成马赛克画,简单两步去除马赛克!

大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~ 马赛克画是一张由小图拼成的大图,本文的封面就是我们的效果图,放大看细节,每一

分享到:

栏目导航

推荐阅读

热门阅读