0
私はNumpyのnp.linalg.eig()
を使って固有ベクトルを計算する3値(2つの観測値、11変数)の行列を持っています。行列は、(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]
あなたの一例をnumpyのために貼り付けることで、よりエレガントかつ迅速に同じことを行うことができます意味がありません、 'np.linalg.eig'は正方行列に作用します。 – Julien
私はクロス積マトリックスを使用しています。 – JrCaspian