Выбор характеристик с использованием собственных значений и собственных векторов в Python - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть 5 списков, которые представляют числовые векторы. Я хочу идентифицировать вектор, который имеет наибольшую корреляцию с первым вектором.

У меня также есть свои собственные значения и собственные векторы. Используя их, как я могу определить, какие векторы сильно коррелируют с a1?

Мои данные:

a1 = [1, 23, 4, 51, 62, 7, 8, 43, 1, 29]
a2 = [5, 45, 32, 51, 60, 7, 8, 35, 10, 31]
a3 = [13, 3, 64, 35, 36, 37, 48, 3, 31, 1]
a4 = [5, 53, 34, 51, 61, 73, 81, 413, 1, 33]
a5 = [3, 3, 1, 5, 6, 3, 8, 3, 1, 3]

list1 = [a1, a2, a3, a4, a5]

Это код, который я использовал для нахождения корреляций:

for i in range(5):
    cov_mat = np.cov([a1, list1[i]])
    val, vec = np.linalg.eig(cov_mat)
    print(val)
    print(vec)

    print("\n")

1 Ответ

0 голосов
/ 17 апреля 2020

Вы ищете вектор с наивысшей корреляцией a1. В вашем примере вы вычисляете ковариацию между всеми векторами, в то время как вы действительно хотите корреляции:

np.corrcoef(list1)
# array([[ 1.        ,  0.86675825, -0.23602677,  0.37897762,  0.41113663],
#        [ 0.86675825,  1.        , -0.10780546,  0.16422644,  0.17282495],
#        [-0.23602677, -0.10780546,  1.        , -0.32809557,  0.15695428],
#        [ 0.37897762,  0.16422644, -0.32809557,  1.        ,  0.05856583],
#        [ 0.41113663,  0.17282495,  0.15695428,  0.05856583,  1.        ]]) 

Это дает вам все попарные корреляции между всеми 5 векторами, но вас интересуют только корреляции с a1:

np.corrcoef(list1)[0]
# array([ 1.        ,  0.86675825, -0.23602677,  0.37897762,  0.41113663])

Обратите внимание, что первая корреляция равна 1, и это потому, что корреляция между a1 и a1 равна 1, потому что они идентичны.

Также обратите внимание, что a2 имеет самую сильную корреляцию с a1


По отношению между переменными и тому, как ковариация и корреляция похожи, но различны - по отношению к посту с данными :

Проще говоря, оба термина измеряют отношение и зависимость между двумя переменными. «Ковариация» указывает направление линейного отношения между переменными. «Корреляция», с другой стороны, измеряет как силу, так и направление линейной зависимости между двумя переменными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...