numpy基础(part11)--特征值与奇异值分解
學(xué)習(xí)筆記,這個(gè)筆記以例子為主。
開發(fā)工具:Spyder
文章目錄
- 特征值和特征向量
- 案例(求矩陣特征值和特征向量)
- 奇異值分解
- 舉個(gè)例子1(不設(shè)置參數(shù)full_matrices = False)
- 舉個(gè)例子2(設(shè)置參數(shù)full_matrices = False, 即不要求V為一個(gè)方陣)
特征值和特征向量
對(duì)于n階方陣A,如果存在數(shù)a和非零n維列向量x,使得Ax=ax,則稱a是矩陣A的一個(gè)特征值,x是矩陣A屬于特征值a的特征向量.
- 語法
備注:np.diag(一維數(shù)組),表示將這個(gè)一維數(shù)組作為對(duì)角元素,組成矩陣。
案例(求矩陣特征值和特征向量)
代碼:
import numpy as npA = np.mat('1 3 5;2 1 6;1 1 2') print(A)#提取特征值和特征向量 eigvals, eigvecs = np.linalg.eig(A) print(eigvals, '--eigvals') print(eigvecs, '--eigvecs')#逆向推導(dǎo)原矩陣 print(np.mat(eigvecs) * \np.mat(np.diag(eigvals)) * np.mat(eigvecs).I)結(jié)果:
[[1 3 5][2 1 6][1 1 2]] [-1.14005494 6.14005494 -1. ] --eigvals [[-0.91698775 0.69142632 -0.94280904][ 0.35680076 0.64617623 0.23570226][ 0.17840038 0.32308811 0.23570226]] --eigvecs [[ 1. 3. 5.][ 2. 1. 6.][ 1. 1. 2.]]奇異值分解
有一個(gè)矩陣M,可以分解為3個(gè)矩陣U、S、V,使得U x S x V等于M。U與V都是正交矩陣(乘以自身的轉(zhuǎn)置矩陣結(jié)果為單位矩陣)。S矩陣主對(duì)角線上的元素稱為矩陣M的奇異值,其它元素均為0。
相關(guān)函數(shù):
U, sv, V = np.linalg.svd(M, full_matrices=False) #sv是奇異值舉個(gè)例子1(不設(shè)置參數(shù)full_matrices = False)
我們對(duì)矩陣[4, 11, 14; 8, 7, -2]進(jìn)行奇異值分解。
代碼:
結(jié)果:
在進(jìn)行逆向回推原矩陣時(shí),因?yàn)榇藭r(shí)若對(duì)sv作為對(duì)角元素,構(gòu)建對(duì)角矩陣,則會(huì)構(gòu)建出22的矩陣,則U為22階,V為3*3階,他們不能做矩陣相乘運(yùn)算,否則會(huì)報(bào)錯(cuò):
為了解決這個(gè)問題,我們?cè)倥e個(gè)例子。
舉個(gè)例子2(設(shè)置參數(shù)full_matrices = False, 即不要求V為一個(gè)方陣)
我們?cè)賹?duì)矩陣[4, 11, 14; 8, 7, -2]進(jìn)行奇異值分解。
代碼:
結(jié)果:
逆向回推原矩陣:
結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的numpy基础(part11)--特征值与奇异值分解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LG 49GR85DC 显示器海外上市:
- 下一篇: 满十六岁可以办银行卡吗