Резюме:
Я пытаюсь построить наибольшие и наименьшие собственные векторы двумерных данных в python, используя numpy и matplotlib.Я использовал числовые функции для ковариационной матрицы, собственных значений и собственных векторов.Позже я попытался построить собственные векторы с помощью колчана для заданных данных.Собственные векторы не отображаются правильно.Я предполагаю, что есть какая-то ошибка в том, как я строю сюжет колчана.Может ли кто-нибудь наставить меня, как правильно поступить?
Это мой код:
import numpy as np
import matplotlib.pyplot as plt
from numpy import array
from numpy import linalg as LA
# Assume that I loaded 'N' no of 2d points from a file and used
# np.cov() to find the below covariance matrix
# This is my covariance matrix obtained from 2 x N points
cov_mat = [[3407.3108669 1473.06388943]
[1473.06388943 1169.53151003]]
eigen_values, eigen_vectors = LA.eig(cov_mat)
origin = [0, 0]
eig_vec1 = eigen_vectors[:,0]
eig_vec2 = eigen_vectors[:,1]
# This line below plots the 2d points
#plt.scatter(np_array[:,0], np_array[:,1])
plt.quiver(origin, eig_vec1, color=['r'], scale=21)
plt.quiver(origin, eig_vec2, color=['b'], scale=21)
plt.show()
Мой вывод:
Это мои 2D данные.Мы можем видеть, что самый большой собственный вектор должен быть в диагональном направлении.Но вектор не отображается правильно на графике.