大学的记忆
理工科的小伙伴们都还记得吧,线性代数是大学里逃不掉的课程,今天我们就聊聊numpy中与线性代数相关的模块。
线性代数是数学的一个重要分支。同时它也是机器学习和深度学习的关键组成部分,有些算法的理论,要借助线性代数的相关概念来阐述,某些算法的结论也要通过线性代数的推演来获得。而且几乎所有的机器学习和深度学习的运算都是通过线性代数来实现的。可见线性代数在人工智能领域是多么的重要。
numpy中与线性代数相关的运算有很多,我们这里介绍一些较为重要的运算,放心,这些运算在numpy的领地都非常简洁!
linalg模块
1.计算逆矩阵
在线性代数中,矩阵 与其逆矩阵 相乘后会得到一个单位矩阵 。该定义可以写为 。numpy.linalg 模块中的inv函数可以计算逆矩阵。
如果输入矩阵是奇异的或非方阵,则会抛出LinAlgError异常。
2.求解线性方程组
矩阵可以对向量进行线性变换,这对应于数学中的线性方程组。numpy.linalg中的函数solve可以求解形如 Ax = b 的线性方程组,其中 A 为系数矩阵,b 为一维或二维的常量数组,x 是未知变量。
3.求解特征值和特征向量
特征值(eigenvalue)即方程 Ax = ax 的根,是一个标量。其中,A 是一个二维矩阵,x 是一个一维向量。特征向量(eigenvector)是关于特征值的向量。在numpy.linalg模块中,eigvals函数可以计算矩阵的特征值,而eig函数可以返回一个包含特征值和对应的特征向量的元组。
4.奇异值分解
SVD(Singular Value Decomposition,奇异值分解)是一种因子分解运算,将一个矩阵分解
为3个矩阵的乘积。奇异值分解是前面讨论过的特征值分解的一种推广。在numpy.linalg模块中的svd函数可以对矩阵进行奇异值分解。该函数返回3个矩阵——U、Sigma和V,其中U和V是正交矩阵,Sigma包含输入矩阵的奇异值。
星号表示厄米共轭(Hermitian conjugate)或共轭转置(conjugate transpose)。
5.广义逆矩阵
在numpy.linalg模块中的pinv函数可以求矩阵的广义逆矩阵。
6.行列式
行列式(determinant)是与方阵相关的一个标量值,在数学中得到广泛应用。对于一个n×n的实数矩阵,行列式描述的是一个线性变换对“有向体积”所造成的影响。行列式的值为正表示保持了空间的定向(顺时针或逆时针),为负则表示颠倒了空间的定向。numpy.linalg模块中的det函数可以计算矩阵的行列式。
fft模块
1.快速傅里叶变换
在NumPy中,有一个名为fft的模块提供了快速傅里叶变换的功能。在这个模块中,许多函数都是成对存在的,也就是说许多函数存在对应的逆操作函数。例如,fft和ifft函数就是其中的一对。
连续分布和离散分布
1.超几何分布
超几何分布(hypergeometric distribution)是一种离散概率分布,它描述的是一个罐子里有
两种物件,无放回地从中抽取指定数量的物件后,抽出指定种类物件的数量。
2.正态分布
随机数可以从正态分布中产生,它们的直方图能够直观地刻画正态分布。
3.对数正态分布
对数正态分布(lognormal distribution) 是自然对数服从正态分布的任意随机变量的概率分布。
作者这水平有限,有不足之处欢迎留言指正