numpy.linalg.svd函数
转载自:python之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个奇异值。
举例:
from numpy import *
data = mat([[1,2,3],[4,5,6]])
U,sigma,VT = np.linalg.svd(data)
print U
[[-0.3863177 -0.92236578]
[-0.92236578 0.3863177 ]]
print sigma
[9.508032 0.77286964]
print VT
[[-0.42866713 -0.56630692 -0.7039467 ]
[ 0.80596391 0.11238241 -0.58119908]
[ 0.40824829 -0.81649658 0.40824829]]
因为sigma是除了对角元素不为0,其他元素都为0。所以返回的时候,作为一维矩阵返回。本来sigma应该是由3个值的,但是因为最后一个值为0,所以直接省略了。
关于奇异值:
- 对于方阵而言,\(A=QQ^{-1}\),其中\(Q\)为特征向量。但不是方阵的矩阵没有特征向量。
- 非方阵矩阵可以用奇异值分解描述矩阵。\(A=USV^T\),其中U叫做左奇异值,S叫做奇异值,V叫做右奇异值。因为\(S\)只有对角线的数不为0,并且数值是从大到小排列,所以一般只取r个。r的值越接近\(A\)的列数,那么三个矩阵的乘法得到的矩阵越接近\(A\)。
- 因为三个矩阵的面积之和远远小于原矩阵\(A\),所以当\(A\)是很大的矩阵,我们向压缩空间表达\(A\)的时候,可以使用这三个矩阵。
- 当\(A\)不是矩阵时,把\(A\)转置成\(A^T\)。且\((AA^T)v =\lambda v\),其中\(v\)是右奇异值,\(\partial v = \sqrt \lambda\),这里的\(\partial\)就是上述的奇异值。\(u=\frac {Av} {\partial}\),\(u\)就是上面的左奇异值。
numpy.linalg.svd函数的更多相关文章
- numpy linalg模块
# 线性代数# numpy.linalg模块包含线性代数的函数.使用这个模块,可以计算逆矩阵.求特征值.解线性方程组以及求解行列式等. import numpy as np # 1. 计算逆矩阵# 创 ...
- python中numpy计算数组的行列式numpy.linalg.det()
numpy.linalg.det numpy.linalg.det(a)[source] 计算任何一个数组a的行列式,但是这里要求数组的最后两个维度必须是方阵. 参数: a : (..., M, M) ...
- scipy几乎实现numpy的所有函数
NumPy和SciPy的关系? numpy提供了数组对象,面向的任何使用者.scipy在numpy的基础上,面向科学家和工程师,提供了更为精准和广泛的函数.scipy几乎实现numpy的所有函数, ...
- 为什么你用不好Numpy的random函数?
为什么你用不好Numpy的random函数? 在python数据分析的学习和应用过程中,经常需要用到numpy的随机函数,由于随机函数random的功能比较多,经常会混淆或记不住,下面我们一起来汇总学 ...
- np.random.random()函数 参数用法以及numpy.random系列函数大全
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.r ...
- NumPy数学算数函数
NumPy - 算数函数 很容易理解的是,NumPy 包含大量的各种数学运算功能. NumPy 提供标准的三角函数,算术运算的函数,复数处理函数等. 三角函数 NumPy 拥有标准的三角函数,它为弧度 ...
- Python之Numpy库常用函数大全(含注释)
前言:最近学习Python,才发现原来python里的各种库才是大头! 于是乎找了学习资料对Numpy库常用的函数进行总结,并带了注释.在这里分享给大家,对于库的学习,还是用到时候再查,没必要死记硬背 ...
- 【转】np.random.random()函数 参数用法以及numpy.random系列函数大全
转自:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.random((1000, 20) ...
- Numpy | 14 字符串函数
本章函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作. 它们基于 Python 内置库中的标准字符串函数. 这些函数在字符数组类(n ...
随机推荐
- elasticsearch原理学习笔记
https://mp.weixin.qq.com/s/dn1n2FGwG9BNQuJUMVmo7w 感谢,透彻的讲解 整理笔记 请说出 唐诗中 包含 前 的诗句 ...... 其实你都会,只是想不起 ...
- Python进阶(十四)----空间角度研究类,类与类之间的关系
Python进阶(十四)----空间角度研究类,类与类之间的关系 一丶从空间角度研究类 对象操作对象属性 class A(): address = '沙河' def __init__(self, na ...
- 2019-07-24 require 和 include的区别
require 和 include 都是文件引入的常用用法.那他们有什么区别吗? 首先我们创建一个需要引入的文件叫做test.php,里面写上简单的一行代码: echo "我是要被引入的文件 ...
- 【转载】C#中使用decimal.TryParse方法将字符串转换为十进制decimal类型
在C#编程过程中,将字符串string转换为decimal类型过程中,时常使用decimal.Parse方法,但decimal.Parse在无法转换的时候,会抛出程序异常,其实还有个decimal.T ...
- 全选全不选案例table表格
全选全不选案例table表格 案例一纯table表格 <table class="table table-bordered"> <thead class=&quo ...
- js数组【续】(相关方法)
一.数组的栈,队列方法[调用这些方法原数组会发生改变]var arr = [2,3,4,5,6];1.栈 LIFO (Last-In-First-Out)a.push() 可接受任意类型的参数,将它们 ...
- Navicat链接数据库报错1130解决方案
1.背景 使用localhost 可以正常连接mysql服务器,但是使用ip地址连接保存如下: 2.问题原因 默认情况下root用户只允许本机访问,即使用localhost访问,如下图: 解决方案:将 ...
- MySQL Replication--复制基本工作原理
复制工作原理(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events):(2) slave将master的binary lo ...
- django中使用AJAX时如何获取表单参数(按钮携带参数)
前提是函数和相应的视图路由都已经配置好了,然后就是表单了: <form id="SmsForm" method="post" class="a& ...
- 【转】Go调度器原理浅析
goroutine是golang的一大特色,或者可以说是最大的特色吧(据我了解),这篇文章主要翻译自Morsing的[这篇博客](http://morsmachine.dk/go-scheduler) ...