<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 溫和地介紹機器學習的特征分解,特征值和特征向量 > 原文: [https://machinelearningmastery.com/introduction-to-eigendecomposition-eigenvalues-and-eigenvectors/](https://machinelearningmastery.com/introduction-to-eigendecomposition-eigenvalues-and-eigenvectors/) 矩陣分解是用于將矩陣減少到其組成部分的有用工具,以簡化一系列更復雜的操作。 也許最常用的矩陣分解類型是特征分解,它將矩陣分解為特征向量和特征值。這種分解也在機器學習中使用的方法中起作用,例如在主成分分析方法或 PCA 中。 在本教程中,您將發現線性代數中的特征分解,特征向量和特征值。 完成本教程后,您將了解: * 特征分解是什么以及特征向量和特征值的作用。 * 如何使用 NumPy 在 Python 中計算特征分解。 * 如何確定向量是一個特征向量,以及如何從特征向量和特征值重建矩陣。 讓我們開始吧。 ![Gentle Introduction to Eigendecomposition, Eigenvalues, and Eigenvectors for Machine Learning](img/ee435b96d80b3e79ee37a0816aec4413.jpg) 用于機器學習的特征分解,特征值和特征向量的溫和介紹 照片由 [Mathias Appel](https://www.flickr.com/photos/mathiasappel/26154953033/) 拍攝,保留一些權利。 ## 教程概述 本教程分為 5 個部分;他們是: 1. 矩陣的特征分解 2. 特征向量和特征值 3. 特征分解的計算 4. 確認特征向量和特征值 5. 重建原始矩陣 ## 矩陣的特征分解 矩陣的特征分解是一種分解,其涉及將方陣分解為一組特征向量和特征值。 > 最廣泛使用的一種矩陣分解稱為特征分解,其中我們將矩陣分解為一組特征向量和特征值。 - 第 42 頁,[深度學習](http://amzn.to/2B3MsuU),2016 年。 如果向量滿足以下等式,則向量是矩陣的特征向量。 ``` A . v = lambda . v ``` 這稱為特征值方程,其中 A 是我們正在分解的父方矩陣,v 是矩陣的特征向量,lambda 是小寫的希臘字母,表示特征值標量。 或者沒有點符號。 ``` Av = lambdav ``` 對于父矩陣的每個維度,矩陣可以具有一個特征向量和特征值。并非所有的方形矩陣都可以分解為特征向量和特征值,有些只能以需要復數的方式進行分解。可以將父矩陣顯示為特征向量和特征值的乘積。 ``` A = Q . diag(V) . Q^-1 ``` 或者,沒有點符號。 ``` A = Qdiag(V)Q^-1 ``` 其中 Q 是由特征向量組成的矩陣,diag(V)是由沿對角線的特征值(有時用大寫λ表示)組成的對角矩陣,并且 Q ^ -1 是由特征向量組成的矩陣的逆。 > 但是,我們經常希望將矩陣分解為它們的特征值和特征向量。這樣做可以幫助我們分析矩陣的某些屬性,就像將整數分解為其素因子一樣可以幫助我們理解該整數的行為。 - 第 43 頁,[深度學習](http://amzn.to/2B3MsuU),2016 年。 Eigen 不是名稱,例如該方法不以“Eigen”命名; eigen(發音為 eye-gan)是德語單詞,意思是“擁有”或“先天”,如屬于父矩陣。 分解操作不會導致矩陣的壓縮;相反,它將其分解為組成部分,以使矩陣上的某些操作更容易執行。與其他矩陣分解方法一樣,特征分解用作元素以簡化其他更復雜的矩陣運算的計算。 > 當它們乘以 A 時,幾乎所有向量都會改變方向。某些特殊向量 x 與 Ax 的方向相同。那些是“特征向量”。將特征向量乘以 A,向量 Ax 是原始 x 的λ倍。 [...]特征值 lambda 告訴特殊向量 x 是否被拉伸或收縮或反轉或保持不變 - 當它乘以 A. - 第 289 頁,[線性代數導論](http://amzn.to/2AZ7R8j),第五版,2016 年。 特征分解也可用于計算主成分分析方法或 PCA 中矩陣的主成分,可用于減少機器學習中數據的維數。 ## 特征向量和特征值 特征向量是單位向量,這意味著它們的長度或幅度等于 1.0。它們通常被稱為右向量,其僅表示列向量(與行向量或左向量相對)。右向量是我們理解它們的向量。 特征值是應用于特征向量的系數,其賦予向量其長度或幅度。例如,負特征值可以反轉特征向量的方向作為縮放它的一部分。 僅具有正特征值的矩陣被稱為正定矩陣,而如果特征值都是負的,則其被稱為負定矩陣。 > 根據矩陣的特征值及其特征向量分解矩陣,可以對矩陣的屬性進行有價值的分析。當我們使用矩陣的特征分解時,某些矩陣計算(如計算矩陣的冪)變得更加容易。 - 第 262 頁,[無線性代數廢話指南](http://amzn.to/2k76D4C),2017 年 ## 特征分解的計算 使用有效的迭代算法在方陣上計算特征分解,我們不會詳細討論。 通常首先找到特征值,然后找到特征向量以將該方程求解為一組系數。 可以使用 eig()函數在 NumPy 中計算特征分解。 以下示例首先定義 3×3 方陣。在返回特征值和特征向量的矩陣上計算特征分解。 ``` # eigendecomposition from numpy import array from numpy.linalg import eig # define matrix A = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(A) # calculate eigendecomposition values, vectors = eig(A) print(values) print(vectors) ``` 首先運行該示例打印定義的矩陣,然后是特征值和特征向量。更具體地,特征向量是右側特征向量并且被歸一化為單位長度。 ``` [[1 2 3] [4 5 6] [7 8 9]] [ 1.61168440e+01 -1.11684397e+00 -9.75918483e-16] [[-0.23197069 -0.78583024 0.40824829] [-0.52532209 -0.08675134 -0.81649658] [-0.8186735 0.61232756 0.40824829]] ``` ## 確認特征向量和特征值 我們可以確認向量確實是矩陣的特征向量。 我們通過將候選特征向量乘以特征向量并將結果與??特征值進行比較來做到這一點。 首先,我們將定義一個矩陣,然后計算特征值和特征向量。然后,我們將測試第一個向量和值是否實際上是矩陣的特征值和特征向量。我們知道它們是,但這是一個很好的練習。 特征向量作為矩陣返回,其具有與父矩陣相同的維度,其中每列是特征向量,例如,第一個特征向量是向量[:,0]。特征值作為列表返回,其中返回數組中的值索引通過列索引與特征向量配對,例如,值[0]的第一個特征值與向量[:,0]處的第一個特征向量配對。 ``` # confirm eigenvector from numpy import array from numpy.linalg import eig # define matrix A = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # calculate eigendecomposition values, vectors = eig(A) # confirm first eigenvector B = A.dot(vectors[:, 0]) print(B) C = vectors[:, 0] * values[0] print(C) ``` 該示例將原始矩陣與第一個特征向量相乘,并將其與第一個特征向量乘以第一個特征值進行比較。 運行該示例將打印這兩個乘法的結果,這些乘法顯示相同的結果向量,正如我們所期望的那樣。 ``` [ -3.73863537 -8.46653421 -13.19443305] [ -3.73863537 -8.46653421 -13.19443305] ``` ## 重建原始矩陣 我們可以反轉過程并僅在給定特征向量和特征值的情況下重建原始矩陣。 首先,必須將特征向量列表轉換為矩陣,其中每個向量成為一行。特征值需要排列成對角矩陣。 NumPy diag()函數可用于此目的。 接下來,我們需要計算特征向量矩陣的逆,我們可以使用 inv()NumPy 函數來實現。最后,這些元素需要與 dot()函數相乘。 ``` # reconstruct matrix from numpy import diag from numpy import dot from numpy.linalg import inv from numpy import array from numpy.linalg import eig # define matrix A = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(A) # calculate eigenvectors and eigenvalues values, vectors = eig(A) # create matrix from eigenvectors Q = vectors # create inverse of eigenvectors matrix R = inv(Q) # create diagonal matrix from eigenvalues L = diag(values) # reconstruct the original matrix B = Q.dot(L).dot(R) print(B) ``` 該示例再次計算特征值和特征向量,并使用它們來重建原始矩陣。 首先運行該示例打印原始矩陣,然后從與原始矩陣匹配的特征值和特征向量重建矩陣。 ``` [[1 2 3] [4 5 6] [7 8 9]] [[ 1\. 2\. 3.] [ 4\. 5\. 6.] [ 7\. 8\. 9.]] ``` ## 擴展 本節列出了一些擴展您可能希望探索的教程的想法。 * 使用您自己的數據使用每個操作創建 5 個示例。 * 為定義為列表列表的矩陣手動實現每個矩陣操作。 * 搜索機器學習論文并找到每個正在使用的操作的示例。 如果你探索任何這些擴展,我很想知道。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 圖書 * 第 6.1 節特征值和特征向量。 [線性代數無廢話指南](http://amzn.to/2k76D4),2017 年。 * 第 6 章特征值和特征向量,[線性代數導論](http://amzn.to/2AZ7R8j),第 5 版,2016 年。 * 第 2.7 節特征分解,[深度學習](http://amzn.to/2B3MsuU),2016 年。 * 第 5 章特征值,特征向量和不變子空間,[線性代數完成權](http://amzn.to/2BGuEqI),第三版,2015 年。 * 第 24 講,特征值問題,[數值線性代數](http://amzn.to/2BI9kRH),1997。 ### API * [numpy.linalg.eig()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.eig.html) * [numpy.diag()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.diag.html) * [numpy.dot()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.dot.html) * [numpy.linalg.inv()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.inv.html) ### 用品 * [eigen on Wiktionary](https://en.wiktionary.org/wiki/eigen) * [特征值和特征向量](https://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors) * [矩陣的特征分解](https://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix) * [特征值算法](https://en.wikipedia.org/wiki/Eigenvalue_algorithm) * [矩陣分解](https://en.wikipedia.org/wiki/Matrix_decomposition) ## 摘要 在本教程中,您發現了線性代數中的特征分解,特征向量和特征值。 具體來說,你學到了: * 特征分解是什么以及特征向量和特征值的作用。 * 如何使用 NumPy 在 Python 中計算特征分解。 * 如何確定向量是一個特征向量,以及如何從特征向量和特征值重建矩陣。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看