Почему знак собственного вектора меняется при небольшом изменении ковариации?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему знак собственного вектора меняется при небольшом изменении ковариации?

Сообщение Anonymous »

Две ковариационные матрицы различаются только значениями в правом верхнем и левом нижнем углу. Однако знак собственных векторов главных компонент (правый столбец) изменился.

Код: Выделить всё

import numpy as np

cov = np.array([[9369, 7060,   16469],
[7060,  8127,   23034],
[16469, 23034,  126402]])

eigenvalues, eigenvectors = np.linalg.eigh(cov)

print('Cov 1')
print(eigenvalues)
print(eigenvectors)

cov2 = np.array([[9369, 7060,   *18969*],
[7060,   8127,   23034],
[*18969*,  23034,  126402]])

eigenvalues, eigenvectors = np.linalg.eigh(cov2)

print('Cov 2')
print(eigenvalues)
print(eigenvectors)
Результаты:

Код: Выделить всё

Cov 1
[  1188.72951707   9507.3058357  133201.96464723]
[[-0.5549483   0.82002403  0.13997491]
[ 0.8280924   0.52849364  0.18696912]
[-0.07934332 -0.21967035  0.97234231]]
Cov 2
[  1390.92828009   8581.02234156 133926.04937835]
[[-0.57175381  0.80502124 -0.15823521]
[ 0.817929    0.54427789 -0.18642352]
[-0.06395096 -0.23601353 -0.96964318]]
Как я могу предотвратить это или каким-то образом «исправить» так, чтобы знак был одинаковым — положительным или отрицательным в обоих случаях?
EDIT:
У кого-нибудь есть C#?
Может ли кто-нибудь сказать мне, возникает ли описанная выше проблема с mathnet.numerics.evd()?< /п>

Подробнее здесь: https://stackoverflow.com/questions/786 ... nce-change
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»