我有一個非常大的矩陣,但我只想找到具有一個特定特徵值的特徵向量(大於1)。如何在不解決python中這個矩陣的整個特徵值和特徵向量的情況下得到這個結果?本徵態在python中具有特定的特徵值
回答
一個選項可能可能是使用shift-invert方法。在SciPy的方法eigs
具有sigma
使用其中能夠接近指定值,該要搜索的特徵值的可選參數:
import numpy as np
from scipy.sparse.linalg import eigs
np.random.seed(42)
N = 10
A = np.random.random_sample((N, N))
A += A.T
A += N*np.identity(N)
#get N//2 largest eigenvalues
l,_ = eigs(A, N//2)
print(l)
#get 2 eigenvalues closest in magnitude to 12
l,_ = eigs(A, 2, sigma = 12)
print(l)
這產生:
[ 19.52479260+0.j 12.28842653+0.j 11.43948696+0.j 10.89132148+0.j
10.79397596+0.j]
[ 12.28842653+0.j 11.43948696+0.j]
編輯: 萬一你事先知道特徵值,那麼你可以嘗試計算相應的基礎。例如:
import numpy as np
from numpy.linalg import eig, svd, norm
from scipy.sparse.linalg import eigs
from scipy.linalg import orth
def nullspace(A, atol=1e-13, rtol=0):
A = np.atleast_2d(A)
u, s, vh = svd(A)
tol = max(atol, rtol * s[0])
nnz = (s >= tol).sum()
ns = vh[nnz:].conj().T
return ns
np.random.seed(42)
eigen_values = [1,2,3,3,4,5]
N = len(eigen_values)
D = np.matrix(np.diag(eigen_values))
#generate random unitary matrix
U = np.matrix(orth(np.random.random_sample((N, N))))
#construct test matrix - it has the same eigenvalues as D
A = U.T * D * U
#get eigenvectors corresponding to eigenvalue 3
Omega = nullspace(A - np.eye(N)*3)
_,M = Omega.shape
for i in range(0, M):
v = Omega[:,i]
print(i, norm(A*v - 3*v))
如果我想找到所有帶有特徵值2的特徵向量,但我不知道這些特徵向量有多少? – JoeJackJessieJames
此外,如果我用我的正常矩陣eigs,錯誤消息說:ValueError:矩陣類型必須是'f','d','F'或'D' – JoeJackJessieJames
您可以使用具有上限的eigs估計特徵向量的數量,然後手動過濾結果,或者例如直接使用svd確定「A - \ lambda」的基礎。至於錯誤,矩陣的「類型」是什麼? – ewcz
- 1. cvBlobsLib的特徵向量和特徵值
- 2. cvBlobsLib的特徵向量和特徵值
- 3. 具有屬性的特徵
- 4. 帶有bagof特徵的SIFT特徵
- 5. [R特徵值/特徵向量
- 6. python numpy排序特徵值
- 7. 實現具有相關特徵類型的特徵
- 8. 如何在Matlab中獲得具有特定歸一化條件的特徵值和特徵向量
- 9. R - 在hclust中具有特定特徵的孤立簇
- 10. 加快具有空間MySQL特徵的文本比較(特徵向量)
- 11. SciPy - 計算對稱矩陣中特定特徵值的特徵向量
- 12. 如何使用R從特定的特徵值中獲得特徵向量?
- 13. 特徵值在人臉識別中通過特徵臉表示
- 14. Python中的廣義特徵值
- 15. R中的RandomForest具有大量特徵
- 16. Java中的特徵值和相應的特徵向量
- 17. MATLAB中的特徵值
- 18. 訪問特徵值
- 19. 特徵值分解
- 20. 特徵庫中的廣義特徵值和矢量
- 21. 表徵軌跡的特徵
- 22. Visual Basic特定特徵
- 23. 如何找出與矩陣的特定特徵值對應的特徵向量?
- 24. 特徵
- 25. 將特徵和特徵值從一行映射到Python中的字典
- 26. scikit-learn在另一個特徵的標稱值組內的特徵組的特徵平均值
- 27. Rust中超特徵的有界特徵參數
- 28. Python的OpenCV的PCACompute特徵值
- 29. OpenCV的Python和SIFT特徵
- 30. 使用預定的特徵值計算lapack中的特徵向量?
,我不知道如何我np.mat(A)矩陣轉換爲稀疏矩陣... – JoeJackJessieJames
它沒有必要用一個稀疏矩陣,我已經發布了一個例子... – ewcz