<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 機器學習矩陣運算的溫和介紹 > 原文: [https://machinelearningmastery.com/matrix-operations-for-machine-learning/](https://machinelearningmastery.com/matrix-operations-for-machine-learning/) 矩陣運算用于許多機器學習算法的描述中。 一些操作可以直接用于求解關鍵方程,而其他操作在描述和使用更復雜的矩陣運算中提供了有用的簡寫或基礎。 在本教程中,您將發現在機器學習方法的描述中使用的重要線性代數矩陣運算。 完成本教程后,您將了解: * 用于翻轉矩陣尺寸的轉置操作。 * 用于求解線性方程組的逆操作。 * Trace 和 Determinant 操作在其他矩陣運算中用作簡寫符號。 讓我們開始吧。 ![A Gentle Introduction to Matrix Operations for Machine Learning](img/21b12f89460264157ed0bfb833eeb1e6.jpg) 機器學習矩陣操作的溫和介紹 [Andrej](https://www.flickr.com/photos/adundovi/30638394675/) 的照片,保留一些權利。 ## 教程概述 本教程分為 5 個部分;他們是: 1. 顛倒 2. 逆溫 3. 跟蹤 4. 行列式 5. 秩 ## 顛倒 可以轉置定義的矩陣,這將創建一個新的矩陣,其中列和行的數量被翻轉。 這由矩陣旁邊的上標“T”表示。 ``` C = A^T ``` 可以通過矩陣從左上角到右下角繪制不可見的對角線,在該矩陣上可以翻轉矩陣以給出轉置。 ``` a11, a12 A = (a21, a22) a31, a32 a11, a21, a31 A^T = (a12, a22, a32) ``` 如果矩陣是對稱的,則操作無效,例如,在不可見對角線兩側的相同位置具有相同數量的列和行以及相同的值。 > A ^ T 的列是 A 的行。 - 第 109 頁,[線性代數簡介](http://amzn.to/2AZ7R8j),第五版,2016 年。 我們可以通過調用 T 屬性在 NumPy 中轉置矩陣。 ``` # transpose matrix from numpy import array A = array([[1, 2], [3, 4], [5, 6]]) print(A) C = A.T print(C) ``` 運行該示例首先打印定義的矩陣,然后打印轉置的版本。 ``` [[1 2] [3 4] [5 6]] [[1 3 5] [2 4 6]] ``` 轉置操作提供了用作許多矩陣運算中的元素的簡短符號。 ## 逆溫 矩陣求逆是一個過程,它找到另一個矩陣,當與矩陣相乘時,得到一個單位矩陣。 給定矩陣 A,找到矩陣 B,使得 AB 或 BA = In。 ``` AB = BA = In ``` 反轉矩陣的操作由矩陣旁邊的-1 上標表示;例如,A ^ -1。該操作的結果稱為原始矩陣的逆;例如,B 是 A 的倒數。 ``` B = A^-1 ``` 如果存在導致單位矩陣的另一矩陣,則矩陣是可逆的,其中并非所有矩陣都是可逆的。不可逆的方陣被稱為單數。 > 無論 A 做什么,A ^ -1 撤消。 - 第 83 頁,[線性代數簡介](http://amzn.to/2AZ7R8j),第五版,2016 年。 矩陣求逆運算不是直接計算的,而是通過數值運算發現倒置矩陣,其中可以使用一套有效的方法,通常涉及矩陣分解的形式。 > 但是,A ^ -1 主要用作理論工具,實際上不應該在大多數軟件應用程序中實際使用。 - 第 37 頁,[深度學習](http://amzn.to/2B3MsuU),2016 年。 可以使用 inv()函數在 NumPy 中反轉矩陣。 ``` # invert matrix from numpy import array from numpy.linalg import inv # define matrix A = array([[1.0, 2.0], [3.0, 4.0]]) print(A) # invert matrix B = inv(A) print(B) # multiply A and B I = A.dot(B) print(I) ``` 首先,我們定義一個小的 2×2 矩陣,然后計算矩陣的逆,然后通過將其與原始矩陣相乘來確認逆,以給出單位矩陣。 運行該示例將打印原始,反向和標識矩陣。 ``` [[ 1\. 2.] [ 3\. 4.]] [[-2\. 1\. ] [ 1.5 -0.5]] [[ 1.00000000e+00 0.00000000e+00] [ 8.88178420e-16 1.00000000e+00]] ``` 矩陣求逆用作求解方程組的一個操作,該方程組成矩陣方程,我們有興趣找到未知數的向量。一個很好的例子是在線性回歸中找到系數值的向量。 ## 跟蹤 方形矩陣的軌跡是矩陣主對角線上的值的總和(從左上到右下)。 > 跟蹤運算符給出矩陣的所有對角線條目的總和 - 第 46 頁,[深度學習](http://amzn.to/2B3MsuU),2016 年。 使用符號“tr(A)”描述在方陣上計算軌跡的操作,其中 A 是在其上執行操作的方陣。 ``` tr(A) ``` 跡線計算為對角線值的總和;例如,在 3×3 矩陣的情況下: ``` tr(A) = a11 + a22 + a33 ``` 或者,使用數組表示法: ``` tr(A) = A[0,0] + A[1,1] + A[2,2] ``` 我們可以使用 trace()函數計算 NumPy 中矩陣的軌跡。 ``` # trace from numpy import array from numpy import trace A = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(A) B = trace(A) print(B) ``` 首先,創建 3×3 矩陣,然后計算軌跡。 運行該示例,首先打印數組,然后打印跟蹤。 ``` [[1 2 3] [4 5 6] [7 8 9]] 15 ``` 單獨地,跟蹤操作并不令人感興趣,但它提供了更簡單的表示法,并且它在其他鍵矩陣運算中用作元素。 ## 行列式 方陣的行列式是矩陣體積的標量表示。 > 行列式描述了構成矩陣行的向量的相對幾何。更具體地說,矩陣 A 的行列式告訴你一個盒子的體積,其邊由 A 行給出。 - 第 119 頁,[無線性代數廢話指南](http://amzn.to/2k76D4C),2017 年 它由“det(A)”符號或| A |表示,其中 A 是我們計算行列式的矩陣。 ``` det(A) ``` 從矩陣的元素計算方陣的行列式。從技術上講,行列式是矩陣的所有特征值的乘積。 行列式的直覺是它描述了矩陣在將它們相乘時對另一個矩陣進行縮放的方式。例如,1 的行列式保留了另一個矩陣的空間。行列式為 0 表示矩陣不能反轉。 > 方陣的行列式是單個數。 [...]它立即告訴矩陣是否可逆。當矩陣沒有逆時,行列式為零。 - 第 247 頁,[線性代數簡介](http://amzn.to/2AZ7R8j),第五版,2016 年。 在 NumPy 中,可以使用 det()函數計算矩陣的行列式。 ``` # trace from numpy import array from numpy.linalg import det A = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(A) B = det(A) print(B) ``` 首先,定義 3×3 矩陣,然后計算矩陣的行列式。 首先運行該示例打印定義的矩陣,然后打印矩陣的行列式。 ``` [[1 2 3] [4 5 6] [7 8 9]] -9.51619735393e-16 ``` 與跟蹤操作一樣,單獨使用行列式操作并不感興趣,但它提供了更簡單的表示法,并且它在其他鍵矩陣運算中用作元素。 ## 矩陣排名 矩陣的秩是矩陣中線性獨立的行或列的數量的估計。 矩陣 M 的秩通常表示為函數 rank()。 ``` rank(A) ``` 排名的直覺是將其視為矩陣內所有向量所跨越的維數。例如,等級 0 表示所有向量跨越一個點,等級 1 表示所有向量跨越一條線,等級 2 表示所有向量跨越一個二維平面。 通過數字估計秩,通常使用矩陣分解方法。一種常見的方法是使用奇異值分解或簡稱 SVD。 NumPy 提供了 matrix_rank()函數來計算數組的排名。它使用 SVD 方法來估計排名。 下面的示例演示了計算具有標量值的矩陣的秩和具有全零值的另一個向量。 ``` # vector rank from numpy import array from numpy.linalg import matrix_rank # rank v1 = array([1,2,3]) print(v1) vr1 = matrix_rank(v1) print(vr1) # zero rank v2 = array([0,0,0,0,0]) print(v2) vr2 = matrix_rank(v2) print(vr2) ``` 運行該示例將打印第一個向量及其等級 1,然后是第二個零向量,其等級為 0。 ``` [1 2 3] 1 [0 0 0 0 0] 0 ``` 下一個例子清楚地表明,秩不是矩陣的維數,而是線性獨立方向的數量。 提供了 2×2 矩陣的三個示例,其展示了具有等級 0,1 和 2 的矩陣。 ``` # matrix rank from numpy import array from numpy.linalg import matrix_rank # rank 0 M0 = array([[0,0],[0,0]]) print(M0) mr0 = matrix_rank(M0) print(mr0) # rank 1 M1 = array([[1,2],[1,2]]) print(M1) mr1 = matrix_rank(M1) print(mr1) # rank 2 M2 = array([[1,2],[3,4]]) print(M2) mr2 = matrix_rank(M2) print(mr2) ``` 運行該示例首先打印 0 2×2 矩陣,然后是秩,然后是 2×2,其具有等級 1,最后是 2×2 矩陣,等級為 2。 ``` [[0 0] [0 0]] 0 [[1 2] [1 2]] 1 [[1 2] [3 4]] 2 ``` ## 擴展 本節列出了一些擴展您可能希望探索的教程的想法。 * 使用您自己的數據使用每個操作創建 5 個示例。 * 為定義為列表列表的矩陣手動實現每個矩陣操作。 * 搜索機器學習論文并找到每個正在使用的操作的示例。 如果你探索任何這些擴展,我很想知道。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 圖書 * 第 3.4 節決定因素。 [線性代數無廢話指南](http://amzn.to/2k76D4),2017 年。 * 第 3.5 節矩陣逆。 [線性代數無廢話指南](http://amzn.to/2k76D4),2017 年。 * 第 5.1 節行列式的性質,[線性代數導論](http://amzn.to/2AZ7R8j),第五版,2016 年。 * 第 2.3 節身份和反向矩陣,[深度學習](http://amzn.to/2B3MsuU),2016 年。 * 第 2.11 節“決定因素,[深度學習](http://amzn.to/2B3MsuU),2016 年。 * 第 3.D 節可逆性和同構向量空間,[線性代數完成權](http://amzn.to/2BGuEqI),第三版,2015 年。 * 第 10.A 節,[線性代數完成權](http://amzn.to/2BGuEqI),第三版,2015 年。 * 第 10.B 節行列式,[線性代數完成權](http://amzn.to/2BGuEqI),第三版,2015 年。 ### API * [numpy.ndarray.T API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.T.html) * [numpy.linalg.inv()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.inv.html) * [numpy.trace()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.trace.html) * [numpy.linalg.det()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.det.html) * [numpy.linalg.matrix_rank()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.matrix_rank.html) ### 用品 * [在維基百科上轉置](https://en.wikipedia.org/wiki/Transpose) * [維基百科上的可逆矩陣](https://en.wikipedia.org/wiki/Invertible_matrix) * 維基百科上的 [Trace(線性代數)](https://en.wikipedia.org/wiki/Trace_(linear_algebra)) * 維基百科上的[決定因素](https://en.wikipedia.org/wiki/Determinant) * 維基百科上的 [Rank(線性代數)](https://en.wikipedia.org/wiki/Rank_(linear_algebra)) ## 摘要 在本教程中,您發現了機器學習方法描述中使用的重要線性代數矩陣運算。 具體來說,你學到了: * 用于翻轉矩陣尺寸的轉置操作。 * 用于求解線性方程組的逆操作。 * Trace 和 Determinant 操作在其他矩陣運算中用作簡寫符號。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看