精华内容
下载资源
问答
  • “特征值”与“特征向量”中的“特征”译自 “eigen”,意为“特征的”、“自身的”。因而,“特征值”与“特征向量”分别与“eigenvalue”与 “eigenvector”相对应。这两个名词以的形式出现在我们的课本,其中为...

    dfc30aed46eb2ec5b1da08703a89245f.gif

    “特征值”与“特征向量”中的“特征”译自 “eigen”,意为“特征的”、“自身的”。因而,“特征值”与“特征向量”分别与“eigenvalue”与 “eigenvector”相对应。这两个名词以的形式出现在我们的课本,其中为方阵、 的特征值、 为属于特征值的特征向量。

    初学代数,可能很多同学,在面对这个等式时,都有或多或少的困惑:这个等号左边是矩阵和向量的乘积, 右边是数乘向量,两边怎么联系在一起的?虽然对于给定矩阵,求解特征值和特征向量没问题,但“特征值”和“特征向量“究竟是什么含义,为什么被冠以“特征”?可不可以给出直观一些的几何解释呢?

    答疑时间到了

    前几期推送内容,已经很好地解释了矩阵可以看作对空间的一种特定的线性变换。所以,当你看到这个等式时,也可以自然地把看作对空间的线性变换,这样就打开了对特征值和特征向量的理解之门。让我们一起来看看如何用线性变换的观点来理解特征值与特征向量吧!

    假如二维空间中的一个线性变换对应的矩阵为 。我们考虑这一线性变换对空间中向量的作用,关注向量在变换之后是否仍在自身生成的空间(通过原点和向量尖端的直线)里。

    89bb3c52c9e1265e0ea2b6836f7821ac.gif

    从图中,我们能够发现,除了两条直线上的特殊向量变换后仍然在它们各自生成的空间(向量在变换之前所在的直线)之外,其余任一向量在变换后都发生了或多或少的旋转,从而离开自身生成的空间。

    这两个变换后仍然不变的子空间(直线)的基向量是:

    1、向量 。  生成的空间是轴,经过变换后仍然留在轴上,只是被拉伸为原来的2倍。同时, 轴上的其他任一向量变换后也都还在轴上,且均被拉伸为原来的2倍。

    2、向量 。 生成的空间为对角线,经过变换后仍留在对角线上,只是被拉伸为原来的3倍。同时,这条对角线上的其他任一向量变换后还在这条线上,均被拉伸为原来的3倍。

    因此,矩阵  对基向量与向量的作用仅仅是拉伸了它们的长度,并没有改变它们的方向。此例中,伸长的倍数(衡量向量在线性变换后被拉伸或者收缩比例的因子)2和3为矩阵  的特征值,而与向量(线性变换后仍在自身生成的空间里的向量)为分别属于特征值2和3的特征向量,并且所在的轴以及所在的对角线上所有非零向量均为分别属于特征值2和3的特征向量。

    上例中的特征值均为正数,当矩阵的特征值有负数时,对应的变换又是什么样子的呢?比如 有两个特征值:-1和3,其中属于-1的特征向量为,属于3的特征向量为 我们来看看它对空间作用的结果吧!

    b40d9a0632d779878e9e46aef925dc30.gif

    从图中容易看出,变换后,没有发生旋转的直线共两条:其中一条为向量所在的对角线,向量的长度没变,但是方向相反了;另外一条为向量 所在的对角线。

    再来看看三维空间中的旋转变换:

    dfc30aed46eb2ec5b1da08703a89245f.gif

    c898cf40692b7c1659b6d97c691c6f2d.png

    它的特征向量就是旋转轴,因为只有旋转轴在旋转变换前后的位置保持不变。显然,把三维旋转看成绕某个轴(比如绕向量旋转),要比单纯考虑图中的矩阵要直观得多。这里,旋转变换的特征值一定为1,因为旋转变换并没有拉伸和收缩任何一个向量,所以向量的长度保持不变。从这个例子也可以看出特征向量的重要性。

    由上述可知,对于矩阵描述的线性变换,可以通过将矩阵的列看作变换后的基向量来理解,而理解线性变换的作用,更好的方法是求出它的特征值和特征向量。因为只有特征向量是线性变换后仍在自身生成空间里的向量,换句话说,特征向量只存在于线性变换后没有发生旋转的直线上,而特征值是衡量特征向量在线性变换后拉伸或者收缩比例的因子

    下面,再来介绍几种特殊情况:

    01

    二维线性变换不

    一定有实特征向量

    考虑逆时针旋转90度的变换 ,它就没有实特征向量。因为在这一变换的作用下,平面每一个向量都发生了旋转,离开了自身在平面生成的空间。当然,你不妨计算一下这个矩阵的特征值和特征向量,看看会发生什么。

    d7e0c444a11f59f19a1cb69a67ac0a3b.gif

    02

    二维线性变换的所有特

    量可能都在同一条直线上

    来看一下下面的切变变换

    c5674f5f8b518bcd7c9a3f9f1c4f7556.gif

    容易看出,轴上的所有非零向量都是属于特征值1的特征向量。实际上,它们也是的所有特征向量。自己动动手吧!看看你计算的结果与这里得到的“ 轴上的所有非零向量是属于特征值1的全部特征向量”的结果是否一致。

    03

    二维线性变换的特征向

    量可能存在于整个平面

    比如,将所有向量都变成3倍的线性变换

    ac4e63abb0f1207f9e116b134f95695f.gif

    显然,3是线性变换唯一的特征值,而平面内的每一个非零向量都是属于特征值3的特征向量。

    这期推送就到这儿吧!对“特征值”和“特征向量”,你是不是已经有了更多的认识?文章开头提出的问题都解决了吗?“特征值”与“特征向量”这两个词为什么和“eigenvalue”、“eigenvector”对应,你也知道答案了吧?

    展开全文
  • ⎜ ⎢⎢ ⎥⎥⎟⎥ ⎣⎝ ⎣⎣1⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠ ⎝ ⎣⎣0 ⎦ ⎣1 ⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠⎦ 虽然ASCII漂亮的打印机,嗯,努力提供甚至是准好看的输出,你可以看到,你得到的是符号计算,精确的...

    如果你想要精确的解析推导,你需要使用symbolic computation,这就是Wolfram Alpha,Mathematica和相关系统所使用的。例如,在Python中,您可能需要查看SymPy。

    下面是一个例子:from sympy import Matrix, pretty

    L = Matrix([[ 2, -1, -1, 0, 0, 0,],

    [-1, 3, 0, -1, 0, -1,],

    [-1, 0, 2, -1, 0, 0,],

    [ 0, -1, -1, 3, -1, 0,],

    [ 0, 0, 0, -1, 2, -1,],

    [ 0, -1, 0, 0, -1, 2,]])

    print "eigenvalues:"

    print pretty(L.eigenvals())

    print

    print "eigenvectors:"

    print pretty(L.eigenvects(), num_columns=132)

    收益率:eigenvalues:

    {0: 1, 1: 1, 2: 1, 3: 2, 5: 1}

    eigenvectors:

    ⎡⎛0, 1, ⎡⎡1⎤⎤⎞, ⎛1, 1, ⎡⎡-1⎤⎤⎞, ⎛2, 1, ⎡⎡1 ⎤⎤⎞, ⎛3, 2, ⎡⎡1 ⎤, ⎡0 ⎤⎤⎞, ⎛5, 1, ⎡⎡1 ⎤⎤⎞⎤

    ⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥

    ⎢⎜ ⎢⎢1⎥⎥⎟ ⎜ ⎢⎢0 ⎥⎥⎟ ⎜ ⎢⎢1 ⎥⎥⎟ ⎜ ⎢⎢-1⎥ ⎢-1⎥⎥⎟ ⎜ ⎢⎢-2⎥⎥⎟⎥

    ⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥

    ⎢⎜ ⎢⎢1⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟ ⎜ ⎢⎢0 ⎥ ⎢1 ⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟⎥

    ⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥

    ⎢⎜ ⎢⎢1⎥⎥⎟ ⎜ ⎢⎢0 ⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟ ⎜ ⎢⎢-1⎥ ⎢-1⎥⎥⎟ ⎜ ⎢⎢2 ⎥⎥⎟⎥

    ⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥

    ⎢⎜ ⎢⎢1⎥⎥⎟ ⎜ ⎢⎢1 ⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟ ⎜ ⎢⎢1 ⎥ ⎢0 ⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟⎥

    ⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥

    ⎣⎝ ⎣⎣1⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠ ⎝ ⎣⎣0 ⎦ ⎣1 ⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠⎦

    虽然ASCII漂亮的打印机,嗯,努力提供甚至是准好看的输出,你可以看到,你得到的是符号计算,精确的输出。如果使用IPython并将其设置为显示乳胶输出,则将get a nicer display。

    展开全文
  • 在机器学习数学第4部分中,我们将从特征向量开始我们的讨论。特征向量,特征值是什么,以及它们与我们到目前为止在机器学习数学系列-线性代数中所学到的内容之间的联系。希望到机器学习数学第4部分的本主题结束时,...
    9d06cbbfec67b0015a43f0e2e117232a.png

    在机器学习数学第4部分中,我们将从特征向量开始我们的讨论。特征向量,特征值是什么,以及它们与我们到目前为止在机器学习数学系列-线性代数中所学到的内容之间的联系。

    c2d53aa13eafd7e046b707903fffe1fa.png

    希望到机器学习数学第4部分的本主题结束时,您将具备开始更好地学习机器学习所需的所有基本线性代数知识。

    特征值和特征向量:

    起源于希腊语,意为特色。因此,如果我们正在讨论某物的特征值,我们可能会对它的特性感兴趣。正如本系列前面部分所做的那样,让我们​​从图像开始,而不是从数学符号开始。一旦我们知道如何描述和解释这些几何图形,我们就可以轻松掌握其余的线性代数。

    在前面的部分中,我们看到了如何通过矩阵应用线性变换。我们讨论了不同的变换,例如旋转,剪切,逆变换等。事实上,通过执行这些操作,我们正在更改特定的向量。

    让我们从在原点绘制正方形的基本形状开始,看看应用于正方形的变换如何在空间中对其进行更改。

    8fd070130ad17dd63623c80ca813276e.png

    通过将正方形缩放2倍,我们的正方形变成一个矩形,

    ecae67ac7c22925f433b0311b4391b5e.png

    通过应用水平转向,正方形变成了这样的形状,

    87f678289338cb3f42b25a88f4374199.png

    需要注意的是,通过改变平方,我们可以观察到各个向量的变化。有些向量保持不变,而有些则在变化。

    17fd9e2f861939edb8e299090f2f7f44.png

    我们绘制了3个向量,以更轻松地了解我们在说什么。

    现在,如果我们对这些向量应用垂直缩放,会发生什么?

    01411c9d09d6b7c73837c80cb82cffb7.png

    绿色矢量保持相同方向和相同长度。粉色也保持其方向,但长度增加了一倍。但是原来为45度的橙色矢量现在增加了角度和长度。

    由此我们可以得出结论,在某种意义上,水平和垂直向量是特殊向量。它们是此特定转换的特征。它们不变。它们是特征向量。

    此外,由于水平向量的长度保持为1,垂直向量的长度为原来的两倍,因此可以说它们的特征值分别为1和2。

    那么,特征向量和特征值是关于什么的呢?对于二维空间,基本上只是进行转换并寻找与转换前保持相同跨度的向量,然后寻找其变化的长度。

    特征特例:

    让我们看一些独特的特征示例,并尝试建立一个更稳健的概念,使我们到目前为止所学到的特征值和向量。

    让我们在原点处对正方形应用旋转,并寻找特征向量及其值。

    如果我们将空间旋转180度怎么办?

    274130954bcf26113bcaabcb92f7567a.png

    我们看到所有三个向量都位于相同的跨度上,但是它们的方向却朝相反的方向变化。这是所有三个特征向量的特征值-1。

    现在,让我们看另一个示例,并应用垂直和完全转换。

    af1567f3ab1b13f0205b663f315063f2.png

    乍一看,您可能已经得出结论,有一个特征向量是绿色的水平向量。但是有两个特征向量。看一看。

    72e449cd87aaaab98f943ca7916238af.png

    这表明特征向量虽然是一个简单的概念,但是并不总是容易发现。

    要了解我们所说的是正确的,让我们应用反函数并将平行四边形取回正方形。

    9f886741cece6d363db0824d1117ac95.png

    现在我们可以很容易地看到,引入的向量确实是特征向量,它位于变换前后的空间跨度中。

    在机器学习中,当我们不仅要处理2或3个维度,还要处理数百个维度时,问题会变得更加棘手。这种复杂性显然要求对特征向量有一个更通用,更健壮的定义。

    让我们在3D空间中使用一个相对简单的示例。

    f0e37fe8d23093a69e4d2357c96d98e1.png

    缩放和剪切可能看起来与2D空间中的相同,但是旋转会发生什么?

    1ef30176b65f28993ebbe8cbb2f5c0c4.png

    粉色和绿色矢量改变方向,而橙色矢量保持相同的跨度。如果我们仔细考虑,我们还将获得有关旋转轴的一些信息。意思是,在3D空间中,如果我们找到特征向量,我们还将获得旋转轴。

    特征向量计算:

    到目前为止,希望在机器学习数学的第4部分中,我们已经对特征向量和特征值建立了某种几何上的理解。现在,让我们尝试根据线性代数形式化我们的理解,以便我们可以在需要时计算特征向量及其值。

    如果转换后的向量与特征向量保持相同的跨度,让我们再次刷新。它们的长度可以增加,甚至可以朝相反的方向延伸,但是如果跨度保持不变,则它们将满足特征向量的定义。

    假设我们有一个特征向量x,然后可以将表达式写为:

    f902ec342b8fc38d993300a0c58e5c74.png

    在左侧,我们将变换矩阵应用于向量x。在右侧,我们将值x扩展了一个系数λ。我们必须找到x等于两端的值。换句话说,应用于特征向量的变换矩阵x要么更改其长度,要么完全不执行等于因子1的操作。

    在此,A是n维矩阵。它必须是nxn维。此外,x还必须是nxn维向量。现在,让我们尝试通过分解来解决它。

    efbe20d346efe8b9bb8de443f3735952.png

    在这里,我只是一个nxn单位矩阵,前导对角线为1,其他所有位置为0。

    在第一个表达式中,我们不需要I,因为矩阵的乘法是由标量定义的。但是,矩阵中的减法未定义。因此,介绍我只是在不改变任何内容的情况下清理了数学。

    现在,如果x = 0或方括号内的值等于0,则上面的表达式等于0。对于x = 0的情况,我们不感兴趣,因为这意味着没有方向也没有长度,并且是微不足道的情况。我们必须在方括号内找到一个术语。

    在机器学习数学的第4部分的前面各部分中,我们已经知道如果矩阵行列式为0,则矩阵运算的结果为0。

    6ec2b670f87ebeda8063cbcd0bc8a77d.png

    因此,特征值只是该方程式的一种解决方案,将它们放回到原始表达式中,我们可以获得特征向量。

    让我们通过将其应用于我们已经知道我们的特征解决方案的转换来继续进行下去。

    以向量的垂直缩放比例为例2。

    a2c6cbeaee44f482bc1c2b68299a9891.png

    这告诉我们,当λ= 1时,我们得到的x2值必须为0。但是x1呢?嗯,任何水平方向上的向量都可以是该系统的特征向量,只要它在垂直方向上为0。我们可以这样写,将任意字符t

    bb993d4c73e9f1cf45a2e4aa1eec1a1b.png

    只要它不沿水平方向移动,那么在该系统中,纯垂直向量也将是特征向量。

    现在,我们有2个特征向量及其对应的特征值。

    让我们尝试另一个逆时针旋转90度的示例。

    矩阵如下,

    cf33f459876365c93ecd18e70a939c3a.png

    这表明我们在这种情况下没有任何实数解决方案。尽管我们可以计算一些复杂的假想解,但让我们将其排除在特定学习课程的范围之外。

    这里要注意的一件有趣的事情是,您在执行机器学习时不会手工进行这些计算。电脑会很高兴为您做到这一点。

    另外,您可能已经注意到,我们的方法实际上在尝试求解时会考虑并计算n阶多项式的根。考虑到这一点,在具有数百个维度的实际系统中,这种情况很快就会脱离分析方法的控制范围。但是,建立一些数学概念的概念基础在现实世界的应用中起着更大的作用,然后只需要手工计算多个维度的多项式即可。

    展开全文
  • np.linalg.eig计算方阵的特征值和特征向量,含例子,含官方文档

    关于这部分的理论知识可以参考我的这篇博客《特征值与特征向量》定义、意义及例子,下面主要介绍如何计算方阵的特征值和特征向量

    1.np.linalg.eig()

    计算方阵的特征值和特征向量,numpy提供了接口eig,直接调用就行,下面主要介绍该函数:

    该函数的原型如下:

    def eig(a):
    	Parameters
    	----------
    	a : (..., M, M) array
    	Matrices for which the eigenvalues and right eigenvectors will
    	be computed
    
    	Returns
        -------
        w : (..., M) array
            The eigenvalues, each repeated according to its multiplicity.
            The eigenvalues are not necessarily ordered. The resulting
            array will be of complex type, unless the imaginary part is
            zero in which case it will be cast to a real type. When `a`
            is real the resulting eigenvalues will be real (0 imaginary
            part) or occur in conjugate pairs
    
        v : (..., M, M) array
            The normalized (unit "length") eigenvectors, such that the
            column ``v[:,i]`` is the eigenvector corresponding to the
            eigenvalue ``w[i]``.
    

    可以看出,该函数的参数只有一个,也就是我们要求特征值和特征向量的方阵(只有方阵才有特征值和特征向量),该函数的返回值有两个分别为w和v。

    w: 代表特征值
    返回值w是一个一维的array,w的长度和方阵的维度是相同的,对于一个m x m的方阵,其特征值的个数也为m,另外注意不一定特征值不一定是有序排列。

    v: 代表特征向量
    返回值v是一个array类型的数据,其维度和方阵的维度是相同的,对于一个m x m的方阵,v的维度也为m x m,v中包含m个特征向量,每个特征向量的长度为m,v[:,i]对应特征值为w[i]的特征向量,特征向量是进行单位化(除以所有元素的平方和的开方)的形式。

    2.例子

    下面举例说明一下:
    在这里插入图片描述
    对于上面的这样一个例子,直接转化为代码:

    >>> import numpy as np
    >>> a = np.array([[1, -2], [1, 4]])
    >>> a
    array([[ 1, -2],
           [ 1,  4]])
    >>> np.linalg.eig(a)
    (array([2., 3.]), array([[-0.89442719,  0.70710678],
           [ 0.4472136 , -0.70710678]]))
    >>>
    

    可以看出求得的特征值为[2, 3],特征向量为[-0.89442719, 0.4472136] 与[0.70710678, -0.70710678],很明显特征向量进行了单位化,例如第一个特征向量的单位化如下:
    在这里插入图片描述

    3. 应用

    对于求特征值与特征向量的应用,最常见的就是对称矩阵的对角化,对于实对称矩阵A,可以对角化转化为下式
    在这里插入图片描述
    转换后的式中p以及对角阵的求取,就可以利用np.linalg.eig()

    diag, p = np.linalg.eig(A)
    

    关于对称矩阵对角化的具体求法可以参考这篇博客对称矩阵的对角化.

    4.其他例子

    官方还给出了一起其他的例子,包括特征值是复数的例子如下:

    from numpy import linalg as LA
    (Almost) trivial example with real e-values and e-vectors.
    
    >>>
    w, v = LA.eig(np.diag((1, 2, 3)))
    w; v
    array([1., 2., 3.])
    array([[1., 0., 0.],
           [0., 1., 0.],
           [0., 0., 1.]])
    Real matrix possessing complex e-values and e-vectors; note that the e-values are complex conjugates of each other.
    
    >>>
    w, v = LA.eig(np.array([[1, -1], [1, 1]]))
    w; v
    array([1.+1.j, 1.-1.j])
    array([[0.70710678+0.j        , 0.70710678-0.j        ],
           [0.        -0.70710678j, 0.        +0.70710678j]])
    Complex-valued matrix with real e-values (but complex-valued e-vectors); note that a.conj().T == a, i.e., a is Hermitian.
    
    >>>
    a = np.array([[1, 1j], [-1j, 1]])
    w, v = LA.eig(a)
    w; v
    array([2.+0.j, 0.+0.j])
    array([[ 0.        +0.70710678j,  0.70710678+0.j        ], # may vary
           [ 0.70710678+0.j        , -0.        +0.70710678j]])
    Be careful about round-off error!
    
    >>>
    a = np.array([[1 + 1e-9, 0], [0, 1 - 1e-9]])
    # Theor. e-values are 1 +/- 1e-9
    w, v = LA.eig(a)
    w; v
    array([1., 1.])
    array([[1., 0.],
           [0., 1.]])
    

    5.官方完整说明

    官方的apihttps://numpy.org/doc/stable/reference/generated/numpy.linalg.eig.html

    完整的说明我也给放在了下面

        """
        Compute the eigenvalues and right eigenvectors of a square array.
    
        Parameters
        ----------
        a : (..., M, M) array
            Matrices for which the eigenvalues and right eigenvectors will
            be computed
    
        Returns
        -------
        w : (..., M) array
            The eigenvalues, each repeated according to its multiplicity.
            The eigenvalues are not necessarily ordered. The resulting
            array will be of complex type, unless the imaginary part is
            zero in which case it will be cast to a real type. When `a`
            is real the resulting eigenvalues will be real (0 imaginary
            part) or occur in conjugate pairs
    
        v : (..., M, M) array
            The normalized (unit "length") eigenvectors, such that the
            column ``v[:,i]`` is the eigenvector corresponding to the
            eigenvalue ``w[i]``.
    
        Raises
        ------
        LinAlgError
            If the eigenvalue computation does not converge.
    
        See Also
        --------
        eigvals : eigenvalues of a non-symmetric array.
        eigh : eigenvalues and eigenvectors of a real symmetric or complex
               Hermitian (conjugate symmetric) array.
        eigvalsh : eigenvalues of a real symmetric or complex Hermitian
                   (conjugate symmetric) array.
        scipy.linalg.eig : Similar function in SciPy that also solves the
                           generalized eigenvalue problem.
        scipy.linalg.schur : Best choice for unitary and other non-Hermitian
                             normal matrices.
    
        Notes
        -----
    
        .. versionadded:: 1.8.0
    
        Broadcasting rules apply, see the `numpy.linalg` documentation for
        details.
    
        This is implemented using the ``_geev`` LAPACK routines which compute
        the eigenvalues and eigenvectors of general square arrays.
    
        The number `w` is an eigenvalue of `a` if there exists a vector
        `v` such that ``a @ v = w * v``. Thus, the arrays `a`, `w`, and
        `v` satisfy the equations ``a @ v[:,i] = w[i] * v[:,i]``
        for :math:`i \\in \\{0,...,M-1\\}`.
    
        The array `v` of eigenvectors may not be of maximum rank, that is, some
        of the columns may be linearly dependent, although round-off error may
        obscure that fact. If the eigenvalues are all different, then theoretically
        the eigenvectors are linearly independent and `a` can be diagonalized by
        a similarity transformation using `v`, i.e, ``inv(v) @ a @ v`` is diagonal.
    
        For non-Hermitian normal matrices the SciPy function `scipy.linalg.schur`
        is preferred because the matrix `v` is guaranteed to be unitary, which is
        not the case when using `eig`. The Schur factorization produces an
        upper triangular matrix rather than a diagonal matrix, but for normal
        matrices only the diagonal of the upper triangular matrix is needed, the
        rest is roundoff error.
    
        Finally, it is emphasized that `v` consists of the *right* (as in
        right-hand side) eigenvectors of `a`.  A vector `y` satisfying
        ``y.T @ a = z * y.T`` for some number `z` is called a *left*
        eigenvector of `a`, and, in general, the left and right eigenvectors
        of a matrix are not necessarily the (perhaps conjugate) transposes
        of each other.
    
        References
        ----------
        G. Strang, *Linear Algebra and Its Applications*, 2nd Ed., Orlando, FL,
        Academic Press, Inc., 1980, Various pp.
    
        Examples
        --------
        >>> from numpy import linalg as LA
    
        (Almost) trivial example with real e-values and e-vectors.
    
        >>> w, v = LA.eig(np.diag((1, 2, 3)))
        >>> w; v
        array([1., 2., 3.])
        array([[1., 0., 0.],
               [0., 1., 0.],
               [0., 0., 1.]])
    
        Real matrix possessing complex e-values and e-vectors; note that the
        e-values are complex conjugates of each other.
    
        >>> w, v = LA.eig(np.array([[1, -1], [1, 1]]))
        >>> w; v
        array([1.+1.j, 1.-1.j])
        array([[0.70710678+0.j        , 0.70710678-0.j        ],
               [0.        -0.70710678j, 0.        +0.70710678j]])
    
        Complex-valued matrix with real e-values (but complex-valued e-vectors);
        note that ``a.conj().T == a``, i.e., `a` is Hermitian.
    
        >>> a = np.array([[1, 1j], [-1j, 1]])
        >>> w, v = LA.eig(a)
        >>> w; v
        array([2.+0.j, 0.+0.j])
        array([[ 0.        +0.70710678j,  0.70710678+0.j        ], # may vary
               [ 0.70710678+0.j        , -0.        +0.70710678j]])
    
        Be careful about round-off error!
    
        >>> a = np.array([[1 + 1e-9, 0], [0, 1 - 1e-9]])
        >>> # Theor. e-values are 1 +/- 1e-9
        >>> w, v = LA.eig(a)
        >>> w; v
        array([1., 1.])
        array([[1., 0.],
               [0., 1.]])
    
        """
    
    展开全文
  • 从两个图片提取的两个特征向量,二维结构,结构如下: array([[ 2.62957041e+00, 7.46614219e-05, 2.37797423e-05, ..., -4.94050192e-04, 2.06032040e-03, 4.94050192e-04], [-1.05751487e+00, 0.00000000e+00...
  • (1)特征值和特征向量计算时间过长,虽然可以运行出来,但是需要处理大约50分钟,这里使用matlab自带的eig函数运算,请问有无高效的求全部特征值所组成的对角阵和全部特征向量所组成的矩阵的运算方法? (2)在求得...
  • # -*- coding: utf-8 -*- import cv2 import numpy as np from skimage.feature import hog ...features = sliding_hog_windows(image) #程序调试得到的结果是:features是一个2592维向量,手动计算怎么计算
  • 现在在做的做法是,通过中文分词,Tf-idf 把地址中文文本转成特征稀疏向量,然后这2800万条向量做笛卡尔积或阶乘式的匹配,进行两两余弦距离计算,满足设定夹角余弦距离阈值才给输出,或写进表里。这样做,对于少量...
  • 学工科的小伙伴都学过线性代数,知道求矩阵特征值、特征向量的定义及计算方法。不知道有没有小伙伴跟我一样对矩阵特征值和特征向量究竟是个什么东西而疑惑过,反正直到大学毕业之后的一两年内,我都没明白它到底有...
  • 内容提要:矩阵的逆与矩阵多项式的特征值、特征向量与原矩阵的特征值、特征向量的关系,如何结合伴随矩阵的性质、利用矩阵的特征值来计算矩阵多项式等的行列式的值.《递推算法与多元插值》简介本书详细介绍了多元...
  • 一、特征值特征向量定义 即利用特征多项式可以求出...计算:A的特征值和特征向量。 化简 令x=1,便可得出一个基础解系: 同理当λ2=λ3=0λ_2=λ_3=0λ2​=λ3​=0时,得出: 同样可以得出特征向量: ...
  • 特征值和特征向量

    2019-03-16 11:29:51
    特征向量和特征值在计算机视觉和机器学习中有许多重要的应用。众所周知的例子是PCA(主成分分析)进行降维或人脸识别是特征脸。特征向量和特征值的一个有趣应用在我的另一篇有关误差椭圆的博文中提到。此外,特征值...
  • 本文主要通过特征向量法来求解投影矩阵。 投影矩阵的代码实现 已知条件 n个三维世界坐标点(保存在dat文件中) n个二维图像坐标点(保存在dat文件中) 使用工具: 环境:windows10+python3.7+pycharm2019 第三方库:...
  • 转特征值和特征向量

    2017-12-27 23:53:00
    转特征值和特征向量 介绍 特征向量和特征值在计算机视觉和机器学习中有许多重要的应用。众所周知的例子是PCA(主成分分析)进行降维或人脸识别是特征脸。特征向量和特征值的一个有趣应用在我的另一篇...
  • 本文档详细的介绍了如何利用MATLAB中的eig函数来计算矩阵的特征值,特征向量以及矩阵对角化
  • 矩阵特征值和特征向量

    千次阅读 2018-01-02 17:02:35
    特征向量和特征值在计算机视觉和机器学习中有许多重要的应用。众所周知的例子是PCA(主成分分析)进行降维或人脸识别是特征脸。特征向量和特征值的一个有趣应用在我的另一篇有关误差椭圆的博文中提到。此外,特征值...
  • 计算特征值和奇异值新MIT 线性代数|机器学习(中英机翻字幕)18.065 by Gilbert Strang_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com这并不是数值线性代数课程,但我们需要探讨如何计算特征值和奇异值。...
  • 二、举个例子1、计算特征值与特征向量2、用特征向量表示任意向量三、理解其他结论1、对角化分解2、矩阵的特征值分别是原矩阵特征值的倒数3、特征值为0,意味着不可逆4、通过解Ax⃗=λx⃗A\vec{x}=\lambda \vec{x}Ax=...
  • 学会计算特征值与特征向量 Av = λv, λ为特征值(对应特征向量的长度倍数),v为对应λ的特征向量如何计算?百度。。。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 524
精华内容 209
关键字:

如何计算特征向量