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