numpy.linalg,eig(a)函数

函数:numpy.linalg.eig(a)

参数:

  • a:想要计算奇异值和右奇异值的方阵

返回值:

  • w:特征值。每个特征值根据它的多重性重复。这个数组将是复杂类型,除非虚数部分为0。当传进的参数a是实数时,得到的特征值是实数。
  • v:特征向量。

例子:

当我们想要求解一个非方阵的奇异值之前,我们需要先把这个矩阵转换为方阵。

>>> from numpy import *
>>> import numpy as np
>>> A = mat([[4,5,6],[1,2,3]])
>>> U = A*A.T
>>> lamda,hU=linalg.eig(U)
>>> sigma=sqrt(lamda)
>>> print sigma
[9.508032   0.77286964]

在开头先进行矩阵的乘法,把矩阵和矩阵的转置相乘,得到一个方阵,然后这个方阵作为参数,可以得到特征值和特征向量。

其中返回的第一个值w进行开根号就是data这个矩阵的奇异值。至于为什么w开根号的值就是svd函数的第二个返回值,可以查看我之前写的svd函数的解释。numpy.linalg.svd

我们可以用svd函数来验证一下。

>>> Q,S,VT=linalg.svd(A)
>>> print S
[9.508032   0.77286964]

官方手册:numpy.linalg.eig

你可能感兴趣的:(机器学习)