0
我有一個三元值矩陣(2個觀察值,11個變量),我使用Numpy的np.linalg.eig()
來計算特徵向量。該矩陣是(0值不用於本示例):從最大特徵值特徵向量的使用Numpy的特徵向量值
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
1 1 1 1 1 1 1 1 1 -1 -1
1 1 1 1 1 1 1 1 1 -1 -1
結果:
[ 0.33333333 0. 0.33333333 0. 0.33333333 0.33333333
0.33333333 0.33333333 0.33333333 0.33333333 0.33333333]
我不知道這些係數的順序。它們是否遵循矩陣中表示的變量的順序(即,第一個0.33333333是v1的權重係數,0.0是v2的權重係數等)?
最後我的代碼部分是:
# Matrix with rounded values
Mtx = np.matrix.round(Mtx,3)
# Cross product of Mtx
Mtx_CrossProduct = (Mtx.T).dot(Mtx)
# Calculation of eigenvectors
eigen_Value, eigen_Vector = np.linalg.eig(Mtx_CrossProduct)
eigen_Vector = np.absolute(eigen_Vector)
# Listing (eigenvalue, eigenvector) and sorting of eigenvalues to get PC1
eig_pairs = [(np.absolute(eigen_Value[i]), eigen_Vector[i,:]) for i in range(len(eigen_Value))]
eig_pairs.sort(key=lambda tup: tup[0],reverse=True)
# Getting largest eigenvector
eig_Vector_Main = np.zeros((11,))
for i in range(len(eig_pairs)):
eig_Vector_Main[i] = eig_pairs[i][1][0]
你舉的例子做同樣的事情更優雅和快速沒有意義,'np.linalg.eig'在方陣上工作。 – Julien
我正在使用交叉產品矩陣。 – JrCaspian