【发布时间】:2016-11-11 18:28:54
【问题描述】:
我有一个三元值矩阵(2 个观察值,11 个变量),我使用 Numpy 的 np.linalg.eig() 计算特征向量。矩阵为(本例不使用0值):
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适用于方阵。 -
我正在使用叉积矩阵。
标签: python numpy eigenvector